Docker重用端口在consul TCP健康检查周期中

时间:2017-03-21 08:52:24

标签: docker tcp microservices consul service-discovery

示例:

第1时刻: Docker运行容器A,侦听32781(导出端口) - > 8000(服务端口) 通过TCP连接完成领事健康检查(周期10s)。

第2个时刻: Docker重启容器A并在关闭时间(小于10秒)运行容器B. 现在端口32781是容器B(重用端口),新容器A有另一个端口。

但是下一轮领事健康检查,端口32781没问题,容器A的领事就可以了。

如何解决问题?

1 个答案:

答案 0 :(得分:1)

在我看来,您必须取消注册服务并对容器重启进行健康检查。 Consul API提供了这样的机会,您只需在您的微服务中使用它。如何使其正常工作取决于您的服务的构建方式。否则,Consul将无法确定某个服务是否已使用另一个端口重新启动。