【问题标题】:One App -> Run Multiple Docker Instances on Single Ec2一个应用程序 -> 在单个 Ec2 上运行多个 Docker 实例
【发布时间】:2017-08-02 20:41:54
【问题描述】:

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

我想达到这样一种状态,即我有 5 个主机,它们前面有一个 elb,我应该能够在所有这些主机中运行超过 1 个容器实例。

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

我可以用 Ec2 、ELB 和 Docker 做到这一点吗?

-谢谢

【问题讨论】:

    标签: amazon-web-services docker amazon-ec2


    【解决方案1】:

    有多种方法可以做到这一点

    为每个 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

    您需要使用如下配置

    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 manager

    您可以使用以下命令设置单节点 docker swarm

    docker swarm init
    

    然后在那台机器上运行以下命令

    docker service create --name=myapp --replicase=5 -p 80:80 yourimage
    

    这将创建 5 个负载均衡容器并将它们发布到端口 80。

    在这两种情况下都不需要 ELB。而且我怀疑 ELB 是否适用于同一主机 + 多端口场景

    【讨论】:

      猜你喜欢
      • 2014-05-11
      • 2013-05-09
      • 1970-01-01
      • 2016-01-17
      • 1970-01-01
      • 2015-05-28
      • 1970-01-01
      • 1970-01-01
      • 2023-04-09
      相关资源
      最近更新 更多