V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
wangxiaoaer
V2EX  ›  问与答

单机 docker 多个容器负载均衡的最简单办法是什么

  •  
  •   wangxiaoaer · Nov 25, 2018 via Android · 2656 views
    This topic created in 2716 days ago, the information mentioned may be changed or developed.
    不考虑 swarm,因为我们就一台装了 docker demaon 的机器,感觉 swarm 有点复杂。

    也不考虑手动写 Nginx 等配置文件的方式,这样把容器个数限死了。

    之前找到了 Dockercloud 的一个借助 haproxy 的 docker-haproxy 可以自动发现容器实例的个数并自动配置,运行时只需要

    Docker run --scale=4

    但这个项目停止维护了。

    有没有别的办法?
    7 replies    2018-11-26 09:13:07 +08:00
    momocraft
        1
    momocraft  
       Nov 25, 2018   ❤️ 1
    nginx 配置裏寫 500 個 upstream, 實際上有幾個後端就 link 幾個
    kslr
        2
    kslr  
       Nov 25, 2018
    不想写 nginx 配置?你又没有自动缩放
    大不了写个 shell 自动添加,其他办法只会更麻烦

    或者付钱买
    gamexg
        3
    gamexg  
       Nov 25, 2018   ❤️ 1
    https://github.com/jwilder/nginx-proxy

    这个?
    单机用比较合适,作者还有另外一个项目可以支持多机。
    feverzsj
        4
    feverzsj  
       Nov 25, 2018
    nginx-proxy 是最简单的,设置 2 个环境变量就可以了
    wangxiaoaer
        5
    wangxiaoaer  
    OP
       Nov 26, 2018
    @gamexg #3 不错,不错,可能真是我想要的。
    wangxiaoaer
        6
    wangxiaoaer  
    OP
       Nov 26, 2018
    @gamexg

    刚看了下那个项目,中间有一句话:

    Provided your DNS is setup to forward foo.bar.com to the host running nginx-proxy, the request will be routed to a container with the VIRTUAL_HOST env var set.

    也就是说需要本地配置 host 以便把 VIRTUAL_HOST 转发到 nginx-proxy 运行的容器中,但是怎么知道 nginx-proxy 运行的实例的 ip 呢?每次的 ip 可能不一样啊。
    gamexg
        7
    gamexg  
       Nov 26, 2018   ❤️ 1
    他指的是主机,不是 docker 容器。
    nginx-proxy 使用 docker -p 参数接管主机的 80、443 端口,docker 负责管理这个端口映射,不需要 dns 知道容器 ip。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1086 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 17:26 · PVG 01:26 · LAX 10:26 · JFK 13:26
    ♥ Do have faith in what you're doing.