一个应用程序 – >在单个Ec2上运行多个Docker实例
我有一个应用程序,比如一个API,在ec2上作为docker容器运行。 由于这个容器依赖于ec2主机(端口映射),我无法在同一台机器上运行多个实例。
我想要达到一个状态,我有5个主机,前面有一个elb,我应该能够在所有这些主机上运行多个容器实例。
我知道我可以使用ECS来达到这个状态。
我可以做Ec2,ELB和Docker吗?
-谢谢
有多种方法可以做到这一点
为每个docker集装箱使用不同的端口
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
然后,您可以在端口80上放置一个nginx负载均衡器。有关http://nginx.org/en/docs/http/load_balancing.html的更多详细信息
你需要使用下面的configuration
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; } } }
使用单节点泊坞窗群pipe理器
你可以使用下面的命令设置一个单一的节点docker群
docker swarm init
然后在那台机器上运行下面的命令
docker service create --name=myapp --replicase=5 -p 80:80 yourimage
这将创build5个负载平衡的容器并将其发布到端口80上。
在这两种情况下都不需要ELB。 我怀疑ELB是在同一个主机+多端口的情况下工作的