竹:每个EC2弹性实例有多个代理?

是否可以在每个EC2弹性实例上运行多个Bamboo代理?

我们在构build系统中使用Docker,这个过程似乎主要是networkingIO绑定。 如果我们可以在一台机器上运行多个代理,那将是非常好的。

通过在一台机器上运行多个代理而不是启动多台机器,我们也不需要担心在机器之间将Docker镜像作为工件运送。

2014年10月30日更新:

我试图复制当前的启动脚本并添加一个新的主页:

$ cat /opt/bamboo-elastic-agent/bin/bamboo-elastic-agent2 #!/bin/sh bambooAgentBin=$(cd -P -- $(dirname $0) && pwd) . $bambooAgentBin/bambooShellFunctions.sh echo Starting Elastic Bamboo Agent... java -Dbamboo.home=/home/bamboo/bamboo-agent-home-2/ -Dimagefiles.version=3.3-SNAPSHOT -jar $bambooAgentBin/*installer*.jar 2>&1 | tee -a $(getHomeDir)/bamboo-elastic-agent.out 

弹性版本似乎设置了某种隧道,并且因为隧道已经在运行而崩溃了:

 # su -c /opt/bamboo-elastic-agent/bin/bamboo-elastic-agent2 - bamboo & [1] 14143 Starting Elastic Bamboo Agent... 2014-10-30 08:39:31,804 INFO [main] [S3Sync] Syncing from: bamboo-agent-release-us-e1/5.6-OD-01-0070/cce16404c14f06456c6adc44181746abf8dd1206/ to /opt/bamboo-elastic-agent 2014-10-30 08:39:31,979 INFO [main] [S3Utils] Syncing s3://bamboo-agent-release-us-e1/5.6-OD-01-0070/cce16404c14f06456c6adc44181746abf8dd1206/ to /opt/bamboo-elastic-agent 2014-10-30 08:39:31,979 INFO [main] [S3Utils] Fetching the list of remote objects... 2014-10-30 08:39:33,006 INFO [main] [S3Utils] Found 579 files in s3://bamboo-agent-release-us-e1/5.6-OD-01-0070/cce16404c14f06456c6adc44181746abf8dd1206/ 2014-10-30 08:39:33,059 INFO [main] [S3Utils] Found 463 files in /opt/bamboo-elastic-agent 2014-10-30 08:39:33,060 INFO [main] [S3Utils] Generating the list of files to fetch from S3... 2014-10-30 08:39:33,076 INFO [main] [S3Utils] Generating the list of files to remove... 2014-10-30 08:39:33,078 INFO [main] [S3Utils] Removing 0 files from /opt/bamboo-elastic-agent 2014-10-30 08:39:33,079 INFO [main] [S3Utils] Fetching 155 files to /opt/bamboo-elastic-agent 2014-10-30 08:39:39,969 INFO [main] [S3Utils] Fetched 113 MB from S3 2014-10-30 08:39:39,973 INFO [main] [ElasticAgentInstaller] Starting [java, -server, -Xms32m, -Xmx256m, -XX:MaxPermSize=128m, -XX:+HeapDumpOnOutOfMemoryError, -Dimagefiles.version=3.3, -Dbamboo.agent.installDir=/opt/bamboo-elastic-agent, -cp, /opt/bamboo-elastic-agent/boot/annotations-13.0.jar:/opt/bamboo-elastic-agent/boot/gson-2.2.2-atlassian-1.jar:/opt/bamboo-elastic-agent/boot/atlassian-bamboo-api-agent-bootstrap-5.6-OD-01-0070.jar:/opt/bamboo-elastic-agent/boot/commons-io-2.4.jar:/opt/bamboo-elastic-agent/boot/jackson-core-2.1.1.jar:/opt/bamboo-elastic-agent/boot/atlassian-bamboo-agent-elastic-shared-5.6-OD-01-0070.jar:/opt/bamboo-elastic-agent/boot/atlassian-tunnel-0.21.jar:/opt/bamboo-elastic-agent/boot/stax-api-1.0-2.jar:/opt/bamboo-elastic-agent/boot/guava-bridge-11.0.2-atlassian-01.jar:/opt/bamboo-elastic-agent/boot/atlassian-bamboo-agent-elastic-5.6-OD-01-0070.jar:/opt/bamboo-elastic-agent/boot/commons-codec-1.8.jar:/opt/bamboo-elastic-agent/boot/atlassian-util-concurrent-2.4.1.jar:/opt/bamboo-elastic-agent/boot/joda-time-2.3.jar:/opt/bamboo-elastic-agent/boot/log4j-1.2.15.jar:/opt/bamboo-elastic-agent/boot/guava-11.0.2-atlassian-01.jar:/opt/bamboo-elastic-agent/boot/atlassian-bamboo-agent-bootstrap-5.6-OD-01-0070.jar:/opt/bamboo-elastic-agent/boot/commons-lang-2.6.jar:/opt/bamboo-elastic-agent/boot/atlassian-aws-1.0.71.jar:/opt/bamboo-elastic-agent/boot/jackson-databind-2.1.1.jar:/opt/bamboo-elastic-agent/boot/fugue-1.1.jar:/opt/bamboo-elastic-agent/boot/aws-java-sdk-1.7.1.jar:/opt/bamboo-elastic-agent/boot/httpclient-4.2.5.jar:/opt/bamboo-elastic-agent/boot/commons-logging-1.0.4.jar:/opt/bamboo-elastic-agent/boot/jackson-annotations-2.1.1.jar:/opt/bamboo-elastic-agent/boot/bcprov-jdk15on-1.48.jar:/opt/bamboo-elastic-agent/boot/atlassian-bamboo-core-agent-bootstrap-5.6-OD-01-0070.jar:/opt/bamboo-elastic-agent/boot/bcpkix-jdk15on-1.48.jar:/opt/bamboo-elastic-agent/boot/atlassian-annotations-0.4.jar:/opt/bamboo-elastic-agent/boot/jsr305-1.3.9.jar:/opt/bamboo-elastic-agent/boot/httpcore-4.2.5.jar:, com.atlassian.bamboo.agent.elastic.client.ElasticAgentBootstrap] 2014-10-30 08:39:40,119 INFO [main] [ElasticAgentBootstrap] Starting Agent Bootstrap using Java 1.6.0_45 from Sun Microsystems Inc. 2014-10-30 08:39:40,410 INFO [main] [ElasticAgentBootstrap] Using tunnelling. Setting virtual host name to https://xxxxxxx.atlassian.net/builds/agentServer/ 2014-10-30 08:39:40,410 INFO [main] [ElasticAgentBootstrap] Using tunnelling for HTTP(S). Registering 'httpt' and 'httpst' protocols. 2014-10-30 08:39:40,416 INFO [main] [ElasticAgentBootstrap] HTTP(S) tunnel: enabled 2014-10-30 08:39:40,416 INFO [main] [ElasticAgentBootstrap] JMS tunnel: enabled 2014-10-30 08:39:40,424 INFO [main] [ElasticAgentBootstrap] Starting tunnel server, waiting for 2 connections. 2014-10-30 08:39:40,425 FATAL [tunnellogger-thread] [TunnelServer] [com.atlassian.tunnel.tunnel.server.TunnelServer] Fatal error in TunnelServer. java.net.BindException: Address already in use at java.net.PlainSocketImpl.socketBind(Native Method) at java.net.PlainSocketImpl.bind(PlainSocketImpl.java:383) at java.net.ServerSocket.bind(ServerSocket.java:328) at java.net.ServerSocket.<init>(ServerSocket.java:194) at java.net.ServerSocket.<init>(ServerSocket.java:150) at javax.net.ssl.SSLServerSocket.<init>(SSLServerSocket.java:84) at com.sun.net.ssl.internal.ssl.SSLServerSocketImpl.<init>(SSLServerSocketImpl.java:81) at com.sun.net.ssl.internal.ssl.SSLServerSocketFactoryImpl.createServerSocket(SSLServerSocketFactoryImpl.java:58) at com.atlassian.tunnel.tunnel.server.TunnelServer.run(TunnelServer.java:54) at java.lang.Thread.run(Thread.java:662) 

任何想法的解决方法?

我们(Atlassian Build Engineering)已经创build了一系列插件,用于在联机的群集(ECS)中运行多个基于Docker的代理,构build一个作业,然后退出。 它应该能够做你所概述的。 我们最近开源了解决scheme。

有关更多详细信息,请参阅https://bitbucket.org/atlassian/per-build-container

亚马逊实例历来糟糕,因为它们倾向于针对CPU和内存密集型工作负载进行优化,因此提供I / O容量(我假定您指的是networkingI / O)为每美元。 您可能会发现在同一个节点上的其他进程可能没有帮助。

如果在节点上安装Docker镜像并在创build映像后创buildAMI ,则可以根据需要使用该AMI启动任意多个ec2实例。 他们将有预装的图像。

您也可以使用CloudFormation和/或Cloud Init在每个Ec2实例上重新编译或下载图像,而无需担心手动在Docker镜像周围移动。

但是,如果您希望在一个节点上运行多个竹代理程序,则您应该能够长时间运行,因为您为每个代理程序实例设置不同的bamboo.home参数。

 java -Dbamboo.home=/agent1Home -jar atlassian-bamboo-agent-installer-XX-SNAPSHOT.jar \ http://bamboo-host-server:8085/agentServer/ java -Dbamboo.home=/agent2Home -jar atlassian-bamboo-agent-installer-XX-SNAPSHOT.jar \ http://bamboo-host-server:8085/agentServer/