我有几个服务是在我的集群上动态分配的端口(5个Windows Server 2019主机,Docker引擎18.09.4,Windows容器)。 使用docker动态定义的端口,服务运行良好。它们是c#dotnet核心Web API。遇到一些稳定性问题后,我注意到主机上打印了许多日志条目,如下所示:
1
批量同步到节点#HASH#失败:在以下期间无法发送TCP消息 批量同步:拨打tcp IPADDRESS:7946:输入/输出超时
2
网络jgwdawmic573os5oxggov的定期批量同步失败:批量 同步到节点#HASH#失败:批量期间无法发送TCP消息 同步:拨打tcp IPADDRESS:7946:输入/输出超时
3
批量同步到节点#NODEHASH#超时
当我在集群上为这些服务定义端口时,看不到这些错误。
docker service create --name=#servicename# --network=#overlay# `
--publish #RANDOM_INT#:80 #imagename# ect....
在检查了这些服务的docker service inspect #SERVICE_NAME#
服务定义之后,我注意到了以下几点:
带有**-发布#RANDOM_INT#:80 *参数的服务在
上有一个PublishedPort
条目
Enpoint.Ports.PublishedPort #RANDOM_INT#
Enpoint.Spec.Ports.PublishedPort #RANDOM_INT#
Spec.EnpointSpec.Ports.PublishedPort #RANDOM_INT#
带有-publish 80 参数的服务仅在
中定义了PublishedPort条目Enpoint.Ports.PublishedPort #Dynamic port entry here typically above 30000
Enpoint.Spec.Ports --? missing PublishedPort entry
Spec.EnpointSpec.Ports --? missing PublishedPort entry
码头工人是否忘记在Enpoint.Spec.Ports
和Spec.EnpointSpec.Ports
中设置 PublishedPort 属性?
或更可能是我做错了什么?为什么不指定外部端口会导致批量同步问题?
(我不认为这是防火墙问题)