在 Tutum 上使用 HAProxy 进行负载平衡 Docker Registry v2
Load balancing Docker Registry v2 with HAProxy on Tutum
在 Tutum 上做了以下事情:
注册表
- 启动了 registry:2.1.1 服务
发布端口 5000 并配置注册表服务:
VIRTUAL_HOST=https://my-registry.my-host.net
TCP_PORTS=5000/ssl
SSL_CERT="..."
现在,将 my-registry.my-host.net DNS 指向注册表服务端点并使用以下命令测试注册表:
docker login my-registry.my-host.net:5000
工作正常,包括 SSL!
HAProxy
- 启动了一个tutum/haproxy:最新的服务,发布了443端口,添加了API访问并链接到注册表服务,其他都是默认的
将我的-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)
解决了。
我必须执行以下操作:
将注册表服务的环境变量从 TCP_PORTS=5000/ssl 更新为 TCP_PORTS=5000
在haproxy服务上,暴露容器上的5000端口,并在主机上发布到443端口。
现在,我可以成功做到:
docker login my-registry.my-host.net
在 Tutum 上做了以下事情:
注册表
- 启动了 registry:2.1.1 服务
发布端口 5000 并配置注册表服务:
VIRTUAL_HOST=https://my-registry.my-host.net TCP_PORTS=5000/ssl SSL_CERT="..."
现在,将 my-registry.my-host.net DNS 指向注册表服务端点并使用以下命令测试注册表:
docker login my-registry.my-host.net:5000
工作正常,包括 SSL!
HAProxy
- 启动了一个tutum/haproxy:最新的服务,发布了443端口,添加了API访问并链接到注册表服务,其他都是默认的
将我的-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)
解决了。
我必须执行以下操作:
将注册表服务的环境变量从 TCP_PORTS=5000/ssl 更新为 TCP_PORTS=5000
在haproxy服务上,暴露容器上的5000端口,并在主机上发布到443端口。
现在,我可以成功做到:
docker login my-registry.my-host.net