配置客户端绑定的端口范围
配置场景
当ZooKeeper客户端启动时,它将绑定到随机端口上。很多时候,希望将ZooKeeper客户端绑定到特定的端口上。例如,对于基于IP和端口的客户端连接白名单,用户应该能配置客户端绑定的端口范围,以便可以在连接白名单中配置相同的端口范围。
配置描述
配置“zookeeper.client.bind.port.range=<startPort:endPort>”来确保客户端总是绑定到指定端口范围内的端口上。例如,如果“zookeeper.client.bind.port.range”=“65510:65512”,则客户端只能绑定到65510,65511或65512端口。
如果要将“zookeeper.client.bind.port.range”的值设为<startPort:endPort>,在ZooKeeper客户端启动时传入以下系统属性:-Dzookeeper.client.bind.port.range=<startPort:endPort>。
参数 |
系统参数 |
描述 |
默认值 |
---|---|---|---|
zookeeper.client.bind.port.range |
zookeeper.client.bind.port.range |
可选参数。客户端在绑定时可以使用的端口范围。其格式为startPort:endPort(包括startPort和endPort)。startPort和endPort的有效范围为1024-65535,且endPort必须大于startPort。例如50000:50050,50100:50200。 至少要有两个可用端口才能使客户端连接成功。如果配置的端口范围中没有可用端口,则客户端连接将失败。如果配置的值无效,那么该值将被忽略,错误将被记录,客户端将绑定到随机端口上。 |
- |
操作步骤
- 以客户端安装用户,登录安装客户端的节点。
- 执行以下命令,进入客户端安装路径。
cd /opt/client
- 执行以下命令编辑component_env文件。
vi ZooKeeper/component_env
添加“zookeeper.client.bind.port.range”参数及参数值。
普通模式:
export ZOOKEEPER_HOME="/opt/client/ZooKeeper/zookeeper" PATH_NEW=`echo $PATH | sed "s|:$ZOOKEEPER_HOME/bin||g" | sed "s|$ZOOKEEPER_HOME/bin:||g"` export PATH="$ZOOKEEPER_HOME/bin:$PATH_NEW" # default heap for zookeeper client export ZK_CLIENT_HEAP="256" export CLIENT_JVMFLAGS="-Xmx${ZK_CLIENT_HEAP}m" export CLIENT_JVMFLAGS="$CLIENT_JVMFLAGS -Dzookeeper.root.logger=WARN,CONSOLE -Dzookeeper.request.timeout=120000 -Dzookeeper.client.bind.port.range=<startPort:endPort>" #添加参数
安全模式:
if [ "$HADOOP_SECURITY_AUTHENTICATION" = "kerberos" ]; then default_realm=`cat $KRB5_CONFIG |grep default_realm|awk -F"=" '{gsub(" ","");print $2}'|tr 'A-Z' 'a-z'` export ZOO_SERVER_PRINCIPAL="zookeeper/hadoop.${default_realm}" export CLIENT_JVMFLAGS=" ${CLIENT_JVMFLAGS} -Djava.security.krb5.conf=$KRB5_CONFIG -Dzookeeper.client.bind.port.range=<startPort:endPort>" #添加参数
- 执行:wq命令保存。
- 重启客户端使配置生效。