首页 > 解决方案 > 如何限制传入连接的 Zookeeper 端口范围

问题描述

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

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

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

我环顾四周,试图用谷歌搜索解决方案,但到目前为止,我在找到解决方案时惨遭失败。

谢谢,

标签: apache-zookeeper

解决方案


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

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

临时端口由内核从 systctl param- 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"
    

推荐阅读