2017-08-01 107 views
1

我有一个应用程序,比如api,在ec2上作为docker容器运行。 由于这个容器依赖于ec2主机(端口映射),我无法在同一台机器上运行多个实例。One App - >在单个Ec2上运行多个Docker实例

我想实现一个状态,我有5个主机,它们都是一个elb,我应该能够在所有这些主机中运行多于一个容器的实例。

我知道我可以使用ECS来实现这个状态。

我可以使用Ec2,ELB和Docker吗?

-Thanks

回答

0

有多种方式做到这一点

使用不同的端口为每个搬运工人容器

docker run -d -p 81:80 yourimage 
docker run -d -p 82:80 yourimage 
docker run -d -p 83:80 yourimage 
docker run -d -p 84:80 yourimage 
docker run -d -p 85:80 yourimage 

然后你就可以把nginx的负载均衡器上的端口80。关于http://nginx.org/en/docs/http/load_balancing.html的更多详细信息

您需要使用像下面这样的配置

http { 
    upstream myapp1 { 
     server 127.0.0.1:81; 
     server 127.0.0.1:82; 
     server 127.0.0.1:83; 
     server 127.0.0.1:84; 
     server 127.0.0.1:85; 
    } 

    server { 
     listen 80; 

     location/{ 
      proxy_pass http://myapp1; 
     } 
    } 
} 

使用单个节点泊坞窗群经理

您可以设置使用以下命令

docker swarm init 

然后这台机器上运行下面的命令

docker service create --name=myapp --replicase=5 -p 80:80 yourimage 
单个节点泊坞窗群

这将创建5个负载均衡的容器和酒吧将它们放在端口80上。

在这两种情况下都不需要ELB。我怀疑ELB在同一主机+多端口场景下工作