如何限制传入连接的动物园管理员端口范围

How to limit zookeepers port range for incomming connections

我们平台上的两项服务存在端口冲突。 其中一项服务正在侦听端口 45454,另一项服务是 zookeeper 服务器。

当侦听端口 45454 的服务重新启动然后 zookeeper 接受连接并使用相同的 tcp 端口 45454 时出现问题。

有没有办法限制zookeeper可以使用哪些端口?或者我们是否应该将监听端口 45454 的服务更改为另一个(较低的)端口?

我环顾四周并尝试 google 一个解决方案,但到目前为止我一直未能找到解决方案。

谢谢,

要清楚连接客户端>服务器,需要服务器上的侦听端口和客户端上的随机临时端口。接受连接不需要额外的端口。

Zookeeper 在 2181 上监听(默认)客户端,在 28883888 上监听内部通信,没有冲突。您的 zookeeper 很可能在本地使用临时端口建立了到另一个节点的连接。

临时端口由内核在 systctl 参数范围内随机提供 - net.ipv4.ip_local_port_range。我的当前值是从 32768 到 60999。

解决方案

  1. 降低冲突服务的端口号。
  2. 将冲突的端口号添加为保留(不被临时使用)- ip_local_reserverd_ports

    sysctl -w net.ipv4.ip_local_reserved_ports="45455"
    
  3. 更改临时端口范围

    # my linux default is from 32768 to 60999
    sysctl -w net.ipv4.ip_local_port_range="45455 60999"