更新时间:2022-12-14 GMT+08:00

配置客户端绑定的端口范围

配置场景

当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>。

表1 客户端绑定端口范围配置参数

参数

系统参数

描述

默认值

zookeeper.client.bind.port.range

zookeeper.client.bind.port.range

可选参数。客户端在绑定时可以使用的端口范围。其格式为startPort:endPort(包括startPort和endPort)。startPort和endPort的有效范围为1024-65535,且endPort必须大于startPort。例如50000:50050,50100:50200。

至少要有两个可用端口才能使客户端连接成功。如果配置的端口范围中没有可用端口,则客户端连接将失败。如果配置的值无效,那么该值将被忽略,错误将被记录,客户端将绑定到随机端口上。

-

操作步骤

  1. 以客户端安装用户,登录安装客户端的节点。
  2. 执行以下命令,进入客户端安装路径。

    cd /opt/client

  3. 执行以下命令编辑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>"  #添加参数

  1. 执行:wq命令保存。
  2. 重启客户端使配置生效。