在 Tutum 上使用 HAProxy 进行负载平衡 Docker Registry v2

Load balancing Docker Registry v2 with HAProxy on Tutum

在 Tutum 上做了以下事情:

注册表

  1. 启动了 registry:2.1.1 服务
  2. 发布端口 5000 并配置注册表服务:

    VIRTUAL_HOST=https://my-registry.my-host.net
    TCP_PORTS=5000/ssl
    SSL_CERT="..."
    
  3. 现在,将 my-registry.my-host.net DNS 指向注册表服务端点并使用以下命令测试注册表:

    docker login my-registry.my-host.net:5000
    

    工作正常,包括 SSL!

HAProxy

  1. 启动了一个tutum/haproxy:最新的服务,发布了443端口,添加了API访问并链接到注册表服务,其他都是默认的
  2. 将我的-registry.my-host.net DNS 指向 haproxy 服务端点并测试注册表登录:

    docker login my-registry.my-host.net
    

    这一次,请求失败:

    503 Service Unavailable
    No server is available to handle this request.
    

我错过了什么?

注意:一切都是从 Tutum 的仪表板网络完成的 UI。

此外,这里是从 HAProxy 服务容器生成的 haproxy.cfg,对于那些有 HAProxy 使用经验但不一定使用 Tutum 的人:

https://gist.github.com/lazabogdan/3bf52984faa092b1a50b(注意:注册表服务 ID 已用 XXXXXXXX 屏蔽,真正的 FQDN 已替换为 my-registry.my-host.net)

解决了。

我必须执行以下操作:

  1. 将注册表服务的环境变量从 TCP_PORTS=5000/ssl 更新为 TCP_PORTS=5000

  2. 在haproxy服务上,暴露容器上的5000端口,并在主机上发布到443端口。

  3. 现在,我可以成功做到:

    docker login my-registry.my-host.net