用例:使用docker compose运行的haproxy容器。我想让容器发现哪些主机可用,以便重新创建haproxy配置并重新加载它。
我知道将有一个或多个名为server1和server2的容器可用。从haproxy容器内部,我可以查询服务器1的dns并接收多个IP地址。这是了解新服务器1投币机什么时候可用或死亡的唯一方法吗?我知道我可以使用python中的docker api在一个容器中运行,该容器中有docker主机套接字映射到它,但是我不确定在swarm上运行时它是否会起作用。
完美的解决方案是api或命令,让我注册一个新容器加入网络时调用的事件处理程序。
答案 0 :(得分:0)
有一种解决方案可以使用Registrator(https://github.com/gliderlabs/registrator),Consul和Consul Template。
Consul是一项服务发现 Consul-Template监视Consul并更新HA Proxy配置并重新加载。 如果有任何容器启动或关闭,Registrator会侦听Docker Engine并更新Consul。
请看图片:
有关完整教程,您可以参考我的博客(https://sonnguyen.ws/microservices-with-docker-swarm-and-consul/)了解如何实施它。