2014-10-27 40 views
1

是否可以针对每个EC2弹性实例运行多个Bamboo代理?竹子:每个EC2弹性实例有多个代理?

我们在构建系统中使用Docker,而且这个过程似乎主要是网络IO绑定。如果我们可以在一台机器上运行多个代理程序,那将会很不错。

通过一台机器上运行多个代理,而不是启动多台机器,我们也不需要担心机器之间的航运码头工人图像作为文物。

更新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) 

任何想法的解决方法?

+0

嘿@konrad你能过来这个问题,并开始第二个代理? – benka 2015-10-02 08:32:50

回答

0

亚马逊实例是历史上坏提供I/O能力(我假设你的意思是网络I/O)兑美元,因为他们往往需要优化更多的CPU和内存密集型工作负载。您可能会发现在同一个节点上的其他进程可能没有帮助。

如果您在托管服务器镜像上安装了Docker镜像,并在镜像安装后采取snapshot to create an AMI,则可以根据需要启动任意数量的使用该AMI的ec2实例。他们将预安装图像。

您还可以使用CloudFormation和/或云初始化重新编译或下载每个EC2实例图像,而不必担心手工泊坞窗左右移动图像。

但是,如果您确实希望在节点上运行多个竹代理程序,您应该也可以长时间运行,因为您为每个代理程序实例设置了bamboo.home参数。

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

感谢您的回复。在我们的案例中,我们在Bamboo以外的工件(Docker容器)运输不好(很大)。我们在本地SSD存储中使用M3 Large实例,因此I/O不是问题。我更新了这个问题,并尝试了基于你非常有用的竹节点提示,但是我遇到了一个它尝试设置的隧道的问题。 – konrad 2014-10-30 08:51:32

1

我们(Atlassian的建设工程)已经建立了一套插件在集群(ECS)是联机运行基于数字泊坞代理商,建立一个单一的工作,然后退出。它应该能够完成你所概述的内容。我们最近开源了解决方案。

请参阅https://bitbucket.org/atlassian/per-build-container了解更多详情。