Changes to ZK config generation 09/73309/1
authorsunil unnava <sunil.unnava@att.com>
Thu, 22 Nov 2018 00:16:02 +0000 (19:16 -0500)
committersunil unnava <sunil.unnava@att.com>
Thu, 22 Nov 2018 00:16:21 +0000 (19:16 -0500)
Issue-ID: DMAAP-888:wq
Change-Id: I465a14e94581c4cdd7ff9f58011c982697c2eb16
Signed-off-by: sunil unnava <sunil.unnava@att.com>
src/main/docker/Dockerfile
src/main/docker/scripts/start-zookeeper.sh
src/main/docker/scripts/zookeeper-metrics.sh
src/main/docker/scripts/zookeeper-ready.sh

index eea222a..960cb37 100644 (file)
@@ -1,19 +1,24 @@
 FROM ubuntu:16.04
 
 ENV ZK_USER=zookeeper \
-ZK_DATA_DIR=/var/lib/zookeeper/data \
-ZK_DATA_LOG_DIR=/var/lib/zookeeper/log \
-ZK_LOG_DIR=/var/log/zookeeper \
+    ZK_DATA_DIR=/var/lib/zookeeper/data \
+    ZK_DATA_LOG_DIR=/var/lib/zookeeper/log \
+    ZK_LOG_DIR=/var/log/zookeeper \
+    JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
 
-JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
+ARG GPG_KEY=C823E3E5B12AF29C67F81976F5CECB3CB5E9BD2D
 ARG ZK_DIST=zookeeper-3.4.10
+
 RUN set -x \
     && apt-get update \
     && apt-get install -y openjdk-8-jre-headless wget netcat-openbsd \
     && wget -q "http://www.apache.org/dist/zookeeper/$ZK_DIST/$ZK_DIST.tar.gz" \
     && wget -q "http://www.apache.org/dist/zookeeper/$ZK_DIST/$ZK_DIST.tar.gz.asc" \
+    && export GNUPGHOME="$(mktemp -d)" \
+    && gpg --keyserver ha.pool.sks-keyservers.net --recv-key "$GPG_KEY" \
+    && gpg --batch --verify "$ZK_DIST.tar.gz.asc" "$ZK_DIST.tar.gz" \
     && tar -xzf "$ZK_DIST.tar.gz" -C /opt \
-    && rm -r  "$ZK_DIST.tar.gz" "$ZK_DIST.tar.gz.asc" \
+    && rm -r "$GNUPGHOME" "$ZK_DIST.tar.gz" "$ZK_DIST.tar.gz.asc" \
     && ln -s /opt/$ZK_DIST /opt/zookeeper \
     && rm -rf /opt/zookeeper/CHANGES.txt \
     /opt/zookeeper/README.txt \
@@ -32,9 +37,21 @@ RUN set -x \
     /opt/zookeeper/$ZK_DIST.jar.asc \
     /opt/zookeeper/$ZK_DIST.jar.md5 \
     /opt/zookeeper/$ZK_DIST.jar.sha1 \
-        && apt-get autoremove -y wget \
-        && rm -rf /var/lib/apt/lists/*
+    && apt-get autoremove -y wget \
+    && rm -rf /var/lib/apt/lists/*
 
+# Copy configuration generator script to bin
+COPY zkGenConfig.sh zkOk.sh zkMetrics.sh /opt/zookeeper/bin/
 
-#Copy configuration generator script to bin
-COPY scripts /opt/zookeeper/bin/
\ No newline at end of file
+# Create a user for the zookeeper process and configure file system ownership
+# for necessary directories and symlink the distribution as a user executable
+RUN set -x \
+    && useradd $ZK_USER \
+    && [ `id -u $ZK_USER` -eq 1000 ] \
+    && [ `id -g $ZK_USER` -eq 1000 ] \
+    && mkdir -p $ZK_DATA_DIR $ZK_DATA_LOG_DIR $ZK_LOG_DIR /usr/share/zookeeper /tmp/zookeeper /usr/etc/ \
+    && chown -R "$ZK_USER:$ZK_USER" /opt/$ZK_DIST $ZK_DATA_DIR $ZK_LOG_DIR $ZK_DATA_LOG_DIR /tmp/zookeeper \
+    && ln -s /opt/zookeeper/conf/ /usr/etc/zookeeper \
+    && ln -s /opt/zookeeper/bin/* /usr/bin \
+    && ln -s /opt/zookeeper/$ZK_DIST.jar /usr/share/zookeeper/ \
+&& ln -s /opt/zookeeper/lib/* /usr/share/zookeeper
\ No newline at end of file
index d3429be..b2ea5a2 100644 (file)
+#!/usr/bin/env bash
+
+ZK_USER=${ZK_USER:-"zookeeper"}
+ZK_LOG_LEVEL=${ZK_LOG_LEVEL:-"INFO"}
+ZK_DATA_DIR=${ZK_DATA_DIR:-"/var/lib/zookeeper/data"}
+ZK_DATA_LOG_DIR=${ZK_DATA_LOG_DIR:-"/var/lib/zookeeper/log"}
+ZK_LOG_DIR=${ZK_LOG_DIR:-"var/log/zookeeper"}
+ZK_CONF_DIR=${ZK_CONF_DIR:-"/opt/zookeeper/conf"}
+ZK_CLIENT_PORT=${ZK_CLIENT_PORT:-2181}
+ZK_SERVER_PORT=${ZK_SERVER_PORT:-2888}
+ZK_ELECTION_PORT=${ZK_ELECTION_PORT:-3888}
+ZK_TICK_TIME=${ZK_TICK_TIME:-2000}
+ZK_INIT_LIMIT=${ZK_INIT_LIMIT:-10}
+ZK_SYNC_LIMIT=${ZK_SYNC_LIMIT:-5}
+ZK_HEAP_SIZE=${ZK_HEAP_SIZE:-2G}
+ZK_MAX_CLIENT_CNXNS=${ZK_MAX_CLIENT_CNXNS:-60}
+ZK_MIN_SESSION_TIMEOUT=${ZK_MIN_SESSION_TIMEOUT:- $((ZK_TICK_TIME*2))}
+ZK_MAX_SESSION_TIMEOUT=${ZK_MAX_SESSION_TIMEOUT:- $((ZK_TICK_TIME*20))}
+ZK_SNAP_RETAIN_COUNT=${ZK_SNAP_RETAIN_COUNT:-3}
+ZK_PURGE_INTERVAL=${ZK_PURGE_INTERVAL:-0}
+ZK_PRE_ALLOC_SIZE=${ZK_PRE_ALLOC_SIZE:-5000}
+ID_FILE="$ZK_DATA_DIR/myid"
+ZK_CONFIG_FILE="$ZK_CONF_DIR/zoo.cfg"
+LOGGER_PROPS_FILE="$ZK_CONF_DIR/log4j.properties"
+JAVA_ENV_FILE="$ZK_CONF_DIR/java.env"
 HOST=`hostname -s`
 DOMAIN=`hostname -d`
-LOG_LEVEL=INFO
-DATA_DIR="/var/lib/zookeeper/data"
-DATA_LOG_DIR="/var/lib/zookeeper/log"
-LOG_DIR="/var/log/zookeeper"
-CONF_DIR="/opt/zookeeper/conf"
-CLIENT_PORT=2181
-SERVER_PORT=2888
-ELECTION_PORT=3888
-TICK_TIME=2000
-INIT_LIMIT=10
-SYNC_LIMIT=5
-HEAP=2G
-MAX_CLIENT_CNXNS=60
-SNAP_RETAIN_COUNT=3
-PURGE_INTERVAL=0
-SERVERS=1
-
-function print_usage() {
-echo "\
-Usage: start-zookeeper [OPTIONS]
-Starts a ZooKeeper server based on the supplied options.
-    --servers           The number of servers in the ensemble. The default 
-                        value is 1.
-
-    --data_dir          The directory where the ZooKeeper process will store its
-                        snapshots. The default is /var/lib/zookeeper/data.
-
-    --data_log_dir      The directory where the ZooKeeper process will store its 
-                        write ahead log. The default is 
-                        /var/lib/zookeeper/data/log.
-
-    --conf_dir          The directoyr where the ZooKeeper process will store its
-                        configuration. The default is /opt/zookeeper/conf.
-
-    --client_port       The port on which the ZooKeeper process will listen for 
-                        client requests. The default is 2181.
-
-    --election_port     The port on which the ZooKeeper process will perform 
-                        leader election. The default is 3888.
-
-    --server_port       The port on which the ZooKeeper process will listen for 
-                        requests from other servers in the ensemble. The 
-                        default is 2888. 
-
-    --tick_time         The length of a ZooKeeper tick in ms. The default is 
-                        2000.
-
-    --init_limit        The number of Ticks that an ensemble member is allowed 
-                        to perform leader election. The default is 10.
-
-    --sync_limit        The maximum session timeout that the ensemble will 
-                        allows a client to request. The default is 5.
-
-    --heap              The maximum amount of heap to use. The format is the 
-                        same as that used for the Xmx and Xms parameters to the 
-                        JVM. e.g. --heap=2G. The default is 2G.
-
-    --max_client_cnxns  The maximum number of client connections that the 
-                        ZooKeeper process will accept simultaneously. The 
-                        default is 60.
-
-    --snap_retain_count The maximum number of snapshots the ZooKeeper process 
-                        will retain if purge_interval is greater than 0. The 
-                        default is 3.
-
-    --purge_interval    The number of hours the ZooKeeper process will wait 
-                        between purging its old snapshots. If set to 0 old 
-                        snapshots will never be purged. The default is 0.
-
-    --max_session_timeout The maximum time in milliseconds for a client session 
-                        timeout. The default value is 2 * tick time.
-
-    --min_session_timeout The minimum time in milliseconds for a client session 
-                        timeout. The default value is 20 * tick time.
-
-    --log_level         The log level for the zookeeeper server. Either FATAL,
-                        ERROR, WARN, INFO, DEBUG. The default is INFO.
-      
-    --pre_alloc_size    Allocates space in the transaction log file in blocks of preAllocSize kilobytes.
-                       The default block size is 64M. 
-"
+
+function print_servers() {
+    for (( i=1; i<=$ZK_REPLICAS; i++ ))
+    do
+        echo "server.$i=$NAME-$((i-1)).$DOMAIN:$ZK_SERVER_PORT:$ZK_ELECTION_PORT"
+    done
 }
 
-function create_data_dirs() {
-    if [ ! -d $DATA_DIR  ]; then
-        mkdir -p $DATA_DIR
-    fi
+function validate_env() {
+    echo "Validating environment"
 
-    if [ ! -d $DATA_LOG_DIR  ]; then
-        mkdir -p $DATA_LOG_DIR
+    if [ -z $ZK_REPLICAS ]; then
+        echo "ZK_REPLICAS is a mandatory environment variable"
+        exit 1
     fi
 
-    if [ ! -d $LOG_DIR  ]; then
-        mkdir -p $LOG_DIR
-    fi
-    
-    if [ ! -f $ID_FILE ] && [ $SERVERS -gt 1 ]; then
-        echo $MY_ID >> $ID_FILE
+    if [[ $HOST =~ (.*)-([0-9]+)$ ]]; then
+        NAME=${BASH_REMATCH[1]}
+        ORD=${BASH_REMATCH[2]}
+    else
+        echo "Failed to extract ordinal from hostname $HOST"
+        exit 1
     fi
-}
 
-function print_servers() {
-    for (( i=1; i<=$SERVERS; i++ ))
-    do
-        echo "server.$i=$NAME-$((i-1)).$DOMAIN:$SERVER_PORT:$ELECTION_PORT"
-    done
+    MY_ID=$((ORD+1))
+    echo "ZK_REPLICAS=$ZK_REPLICAS"
+    echo "MY_ID=$MY_ID"
+    echo "ZK_LOG_LEVEL=$ZK_LOG_LEVEL"
+    echo "ZK_DATA_DIR=$ZK_DATA_DIR"
+    echo "ZK_DATA_LOG_DIR=$ZK_DATA_LOG_DIR"
+    echo "ZK_LOG_DIR=$ZK_LOG_DIR"
+    echo "ZK_CLIENT_PORT=$ZK_CLIENT_PORT"
+    echo "ZK_SERVER_PORT=$ZK_SERVER_PORT"
+    echo "ZK_ELECTION_PORT=$ZK_ELECTION_PORT"
+    echo "ZK_TICK_TIME=$ZK_TICK_TIME"
+    echo "ZK_INIT_LIMIT=$ZK_INIT_LIMIT"
+    echo "ZK_SYNC_LIMIT=$ZK_SYNC_LIMIT"
+    echo "ZK_MAX_CLIENT_CNXNS=$ZK_MAX_CLIENT_CNXNS"
+    echo "ZK_MIN_SESSION_TIMEOUT=$ZK_MIN_SESSION_TIMEOUT"
+    echo "ZK_MAX_SESSION_TIMEOUT=$ZK_MAX_SESSION_TIMEOUT"
+    echo "ZK_HEAP_SIZE=$ZK_HEAP_SIZE"
+    echo "ZK_SNAP_RETAIN_COUNT=$ZK_SNAP_RETAIN_COUNT"
+    echo "ZK_PURGE_INTERVAL=$ZK_PURGE_INTERVAL"
+    echo "ZK_PRE_ALLOC_SIZE=$ZK_PRE_ALLOC_SIZE"
+    echo "ENSEMBLE"
+    print_servers
+    echo "Environment validation successful"
 }
 
 function create_config() {
-    rm -f $CONFIG_FILE
-    echo "#This file was autogenerated DO NOT EDIT" >> $CONFIG_FILE
-    echo "clientPort=$CLIENT_PORT" >> $CONFIG_FILE
-    echo "dataDir=$DATA_DIR" >> $CONFIG_FILE
-    echo "dataLogDir=$DATA_LOG_DIR" >> $CONFIG_FILE
-    echo "tickTime=$TICK_TIME" >> $CONFIG_FILE
-    echo "initLimit=$INIT_LIMIT" >> $CONFIG_FILE
-    echo "syncLimit=$SYNC_LIMIT" >> $CONFIG_FILE
-    echo "maxClientCnxns=$MAX_CLIENT_CNXNS" >> $CONFIG_FILE
-    echo "minSessionTimeout=$MIN_SESSION_TIMEOUT" >> $CONFIG_FILE
-    echo "maxSessionTimeout=$MAX_SESSION_TIMEOUT" >> $CONFIG_FILE
-    echo "autopurge.snapRetainCount=$SNAP_RETAIN_COUNT" >> $CONFIG_FILE
-    echo "autopurge.purgeInteval=$PURGE_INTERVAL" >> $CONFIG_FILE
-    echo "preAllocSize=$PRE_ALLOC_SIZE" >> $CONFIG_FILE
-     if [ $SERVERS -gt 1 ]; then
-        print_servers >> $CONFIG_FILE
+    rm -f $ZK_CONFIG_FILE
+    echo "Creating ZooKeeper configuration"
+    echo "#This file was autogenerated by k8szk DO NOT EDIT" >> $ZK_CONFIG_FILE
+    echo "clientPort=$ZK_CLIENT_PORT" >> $ZK_CONFIG_FILE
+    echo "dataDir=$ZK_DATA_DIR" >> $ZK_CONFIG_FILE
+    echo "dataLogDir=$ZK_DATA_LOG_DIR" >> $ZK_CONFIG_FILE
+    echo "tickTime=$ZK_TICK_TIME" >> $ZK_CONFIG_FILE
+    echo "initLimit=$ZK_INIT_LIMIT" >> $ZK_CONFIG_FILE
+    echo "syncLimit=$ZK_SYNC_LIMIT" >> $ZK_CONFIG_FILE
+    echo "maxClientCnxns=$ZK_MAX_CLIENT_CNXNS" >> $ZK_CONFIG_FILE
+    echo "minSessionTimeout=$ZK_MIN_SESSION_TIMEOUT" >> $ZK_CONFIG_FILE
+    echo "maxSessionTimeout=$ZK_MAX_SESSION_TIMEOUT" >> $ZK_CONFIG_FILE
+    echo "autopurge.snapRetainCount=$ZK_SNAP_RETAIN_COUNT" >> $ZK_CONFIG_FILE 
+    echo "autopurge.purgeInterval=$ZK_PURGE_INTERVAL" >> $ZK_CONFIG_FILE
+    echo "preAllocSize=$ZK_PRE_ALLOC_SIZE" >> $ZK_CONFIG_FILE
+
+    if [ $ZK_REPLICAS -gt 1 ]; then
+        print_servers >> $ZK_CONFIG_FILE
     fi
-    cat $CONFIG_FILE >&2
+
+    echo "Wrote ZooKeeper configuration file to $ZK_CONFIG_FILE"
 }
 
-function create_jvm_props() {
-    rm -f $JAVA_ENV_FILE
-    echo "ZOO_LOG_DIR=$LOG_DIR" >> $JAVA_ENV_FILE
-    echo "JVMFLAGS=\"-Xmx$HEAP -Xms$HEAP\"" >> $JAVA_ENV_FILE
+function create_data_dirs() {
+    echo "Creating ZooKeeper data directories and setting permissions"
+
+    if [ ! -d $ZK_DATA_DIR  ]; then
+        mkdir -p $ZK_DATA_DIR
+        chown -R $ZK_USER:$ZK_USER $ZK_DATA_DIR
+    fi
+
+    if [ ! -d $ZK_DATA_LOG_DIR  ]; then
+        mkdir -p $ZK_DATA_LOG_DIR
+        chown -R $ZK_USER:$ZK_USER $ZK_DATA_LOG_DIR
+    fi
+
+    if [ ! -d $ZK_LOG_DIR  ]; then
+        mkdir -p $ZK_LOG_DIR
+        chown -R $ZK_USER:$ZK_USER $ZK_LOG_DIR
+    fi
+
+    if [ ! -f $ID_FILE ]; then
+        echo $MY_ID >> $ID_FILE
+    fi
+
+    echo "Created ZooKeeper data directories and set permissions in $ZK_DATA_DIR"
 }
 
-function create_log_props() {
+function create_log_props () {
     rm -f $LOGGER_PROPS_FILE
     echo "Creating ZooKeeper log4j configuration"
     echo "zookeeper.root.logger=CONSOLE" >> $LOGGER_PROPS_FILE
-    echo "zookeeper.console.threshold="$LOG_LEVEL >> $LOGGER_PROPS_FILE
+    echo "zookeeper.console.threshold="$ZK_LOG_LEVEL >> $LOGGER_PROPS_FILE
     echo "log4j.rootLogger=\${zookeeper.root.logger}" >> $LOGGER_PROPS_FILE
     echo "log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender" >> $LOGGER_PROPS_FILE
     echo "log4j.appender.CONSOLE.Threshold=\${zookeeper.console.threshold}" >> $LOGGER_PROPS_FILE
     echo "log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout" >> $LOGGER_PROPS_FILE
     echo "log4j.appender.CONSOLE.layout.ConversionPattern=%d{ISO8601} [myid:%X{myid}] - %-5p [%t:%C{1}@%L] - %m%n" >> $LOGGER_PROPS_FILE
+    echo "Wrote log4j configuration to $LOGGER_PROPS_FILE"
+}
+
+function create_java_env() {
+    rm -f $JAVA_ENV_FILE
+    echo "Creating JVM configuration file"
+    echo "ZOO_LOG_DIR=$ZK_LOG_DIR" >> $JAVA_ENV_FILE
+    echo "JVMFLAGS=\"-Xmx$ZK_HEAP_SIZE -Xms$ZK_HEAP_SIZE\"" >> $JAVA_ENV_FILE
+    echo "Wrote JVM configuration to $JAVA_ENV_FILE"
 }
 
-optspec=":hv-:"
-while getopts "$optspec" optchar; do
-
-    case "${optchar}" in
-        -)
-            case "${OPTARG}" in
-                servers=*)
-                    SERVERS=${OPTARG##*=}
-                    ;;
-                data_dir=*)
-                    DATA_DIR=${OPTARG##*=}
-                    ;;
-                data_log_dir=*)
-                    DATA_LOG_DIR=${OPTARG##*=}
-                    ;;
-                log_dir=*)
-                    LOG_DIR=${OPTARG##*=}
-                    ;;
-                conf_dir=*)
-                    CONF_DIR=${OPTARG##*=}
-                    ;;
-                client_port=*)
-                    CLIENT_PORT=${OPTARG##*=}
-                    ;;
-                election_port=*)
-                    ELECTION_PORT=${OPTARG##*=}
-                    ;;
-                server_port=*)
-                    SERVER_PORT=${OPTARG##*=}
-                    ;;
-                tick_time=*)
-                    TICK_TIME=${OPTARG##*=}
-                    ;;
-                init_limit=*)
-                    INIT_LIMIT=${OPTARG##*=}
-                    ;;
-                sync_limit=*)
-                    SYNC_LIMIT=${OPTARG##*=}
-                    ;;
-                heap=*)
-                    HEAP=${OPTARG##*=}
-                    ;;
-                max_client_cnxns=*)
-                    MAX_CLIENT_CNXNS=${OPTARG##*=}
-                    ;;
-                snap_retain_count=*)
-                    SNAP_RETAIN_COUNT=${OPTARG##*=}
-                    ;;
-                purge_interval=*)
-                    PURGE_INTERVAL=${OPTARG##*=}
-                    ;;
-                max_session_timeout=*)
-                    MAX_SESSION_TIMEOUT=${OPTARG##*=}
-                    ;;
-                min_session_timeout=*)
-                    MIN_SESSION_TIMEOUT=${OPTARG##*=}
-                    ;;
-                log_level=*)
-                    LOG_LEVEL=${OPTARG##*=}
-                    ;;
-                pre_alloc_size=*)
-                    PRE_ALLOC_SIZE=${OPTARG##*=}
-                    ;;
-                *)
-                    echo "Unknown option --${OPTARG}" >&2
-                    exit 1
-                    ;;
-            esac;;
-        h)
-            print_usage
-            exit
-            ;;
-        v)
-            echo "Parsing option: '-${optchar}'" >&2
-            ;;
-        *)
-            if [ "$OPTERR" != 1 ] || [ "${optspec:0:1}" = ":" ]; then
-                echo "Non-option argument: '-${OPTARG}'" >&2
-            fi
-            ;;
-    esac
-done
-
-MIN_SESSION_TIMEOUT=${MIN_SESSION_TIMEOUT:- $((TICK_TIME*2))}
-MAX_SESSION_TIMEOUT=${MAX_SESSION_TIMEOUT:- $((TICK_TIME*20))}
-ID_FILE="$DATA_DIR/myid"
-CONFIG_FILE="$CONF_DIR/zoo.cfg"
-LOGGER_PROPS_FILE="$CONF_DIR/log4j.properties"
-JAVA_ENV_FILE="$CONF_DIR/java.env"
-if [[ $HOST =~ (.*)-([0-9]+)$ ]]; then
-    NAME=${BASH_REMATCH[1]}
-    ORD=${BASH_REMATCH[2]}
-else
-    echo "Fialed to parse name and ordinal of Pod"
-    exit 1
-fi
-
-MY_ID=$((ORD+1))
-
-create_config && create_jvm_props && create_log_props && create_data_dirs && exec zkServer.sh start-foreground
\ No newline at end of file
+validate_env && create_config && create_log_props && create_data_dirs && create_java_env && exec zkServer.sh start-foreground
\ No newline at end of file
index f7ed780..7cd0b29 100644 (file)
@@ -1,16 +1,4 @@
 #!/usr/bin/env bash
-# Copyright 2017 The Kubernetes Authors.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
 
-echo mntr | nc localhost $1 >& 1
\ No newline at end of file
+ZK_CLIENT_PORT=${ZK_CLIENT_PORT:-2181}
+echo mntr | nc localhost $ZK_CLIENT_PORT >& 1
\ No newline at end of file
index 2a27252..fd4ea5a 100644 (file)
@@ -1,23 +1,7 @@
 #!/usr/bin/env bash
-# Copyright 2017 The Kubernetes Authors.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
 
-# zkOk.sh uses the ruok ZooKeeper four letter work to determine if the instance
-# is health. The $? variable will be set to 0 if server responds that it is 
-# healthy, or 1 if the server fails to respond.
-
-OK=$(echo ruok | nc 127.0.0.1 $1)
+ZK_CLIENT_PORT=${ZK_CLIENT_PORT:-2181}
+OK=$(echo ruok | nc 127.0.0.1 $ZK_CLIENT_PORT)
 if [ "$OK" == "imok" ]; then
        exit 0
 else