Stage 6 - Upgrade Zookeeper (3.6.3 -> 3.8.4)

Stage 6 - Upgrade Zookeeper (3.6.3 -> 3.8.4)

Objective

Upgrade Apache Zookeeper from the current version 3.6.3 to version 3.8.4.


Prerequisites

  1. syndeia-cloud-3.6-SP2*_cassandra_zookeeper_kafka_setup.zip package is available.

  2. Ensure previous stages have been completed without error.

  3. Run the following command to confirm Zookeeper service is not running.

    systemctl --type=service --state=inactive | grep 'zookeeper'

    The output should be similar to as shown below:

    zookeeper.service loaded inactive dead zookeeper.service

    If not, stop the service:

    sudo systemctl stop zookeeper

Steps

  1. cd to the cassandra_zookeeper_kafka_setup package’s bin directory:

    cd ~/syndeia-cloud-3.6-SP2*_cassandra_zookeeper_kafka_setup/bin
  2. Run the Apache Zookeeper (ZK) pre-setup script. This will download and upgrade Zookeeper to v3.8.4, or will install the already downloaded Zookeeper 3.8.4 (if present in the current user's home directory):

    ./syndeia-cloud-3.6_zookeeper_pre-setup.bash
[jdoe@new-server bin]$ ./syndeia-cloud-3.6_zookeeper_pre-setup.bash + shopt -s extglob + shopt -s globstar ++ readlink -f ./syndeia-cloud-3.6_zookeeper_pre-setup.bash + SC_version_parsed=/home/jdoe/syndeia-cloud-3.6-SP2.2024-09-11_cassandra_zookeeper_kafka_setup/bin/syndeia-cloud-3.6_zookeeper_pre-setup.bash + SC_version_parsed=/home/jdoe/syndeia-cloud-3.6-SP2.2024-09-11 + SC_version_parsed=3.6-SP2.2024-09-11 + SC_version=3.6-SP2.2024-09-11 + service_name=zookeeper + ZK_build_ver=3.8.4 ++ uname + OS=Linux + [[ Linux =~ CYGWIN ]] + systemctl=systemctl + sudo=sudo + ln='ln -nfs' + ZK_upgrade=false + [[ -e /opt/zookeeper-current ]] ++ readlink -f /opt/zookeeper-current + ZK_build_ver_current=/opt/zookeeper-3.6.3 + ZK_build_ver_current=3.6.3 + [[ ! 3.6.3 == \3\.\8\.\4 ]] + ZK_upgrade=true + umask 0002 + pushd . ~/syndeia-cloud-3.6-SP2.2024-09-11_cassandra_zookeeper_kafka_setup/bin ~/syndeia-cloud-3.6-SP2.2024-09-11_cassandra_zookeeper_kafka_setup/bin + cd /home/jdoe/ + [[ '' == \-\d ]] + [[ Linux =~ CYGWIN ]] + [[ -e /etc/systemd/system/zookeeper.service ]] ++ sudo systemctl is-active --quiet zookeeper + [[ -n '' ]] + [[ -e /opt/zookeeper-3.8.4 ]] + [[ ! -e zookeeper-3.8.4-bin.tar.gz ]] + wget https://archive.apache.org/dist/zookeeper/zookeeper-3.8.4/apache-zookeeper-3.8.4-bin.tar.gz -O zookeeper-3.8.4-bin.tar.gz --2024-09-16 11:48:29-- https://archive.apache.org/dist/zookeeper/zookeeper-3.8.4/apache-zookeeper-3.8.4-bin.tar.gz Resolving archive.apache.org (archive.apache.org)... 2a01:4f9:1a:a084::2, 65.108.204.189 Connecting to archive.apache.org (archive.apache.org)|2a01:4f9:1a:a084::2|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 14609453 (14M) [application/x-gzip] Saving to: ‘zookeeper-3.8.4-bin.tar.gz’ zookeeper-3.8.4-bin.tar.gz 100%[=========================================================================>] 13.93M 4.98MB/s in 2.8s 2024-09-16 11:48:32 (4.98 MB/s) - ‘zookeeper-3.8.4-bin.tar.gz’ saved [14609453/14609453] ++ which tar ++ alias ++ eval declare -f +++ declare -f ++ /usr/bin/which --tty-only --read-alias --read-functions --show-tilde --show-dot tar + [[ ! -n /usr/bin/tar ]] + sudo tar -xzf zookeeper-3.8.4-bin.tar.gz -C /opt/ + sudo mv /opt/apache-zookeeper-3.8.4-bin /opt/zookeeper-3.8.4 + [[ true == \f\a\l\s\e ]] + sudo cp -R /opt/zookeeper-3.6.3/logs /opt/zookeeper-3.8.4/. + sudo ln -nfs /opt/zookeeper-3.8.4 /opt/zookeeper-current + pushd . ~ ~ ~/syndeia-cloud-3.6-SP2.2024-09-11_cassandra_zookeeper_kafka_setup/bin + cd /opt/zookeeper-3.8.4/logs/ + sudo ln -nfs ./zookeeper-zookeeper-server-new-server.intercax.com.log zookeeper.log + popd ~ ~/syndeia-cloud-3.6-SP2.2024-09-11_cassandra_zookeeper_kafka_setup/bin + sudo groupadd --system kafka-zookeeper groupadd: group 'kafka-zookeeper' already exists + sudo useradd --system --groups kafka-zookeeper zookeeper useradd: user 'zookeeper' already exists + sudo chown -R zookeeper:kafka-zookeeper /opt/zookeeper-3.8.4 /opt/zookeeper-current /var/lib/zookeeper + init_zoo_config + sudo mkdir -p /etc/zookeeper/conf/ + echo 1 + sudo tee /etc/zookeeper/conf/myid + sudo tee /etc/zookeeper/conf/zoo.cfg + [[ true == \t\r\u\e ]] + echo '# 2022-08-23, BKM: Remove once upgraded per ZOOKEEPER-3056' + sudo tee -a /etc/zookeeper/conf/zoo.cfg # 2022-08-23, BKM: Remove once upgraded per ZOOKEEPER-3056 + echo snapshot.trust.empty=true + sudo tee -a /etc/zookeeper/conf/zoo.cfg snapshot.trust.empty=true + sudo cp syndeia-cloud-3.6-SP2.2024-09-11_cassandra_zookeeper_kafka_setup/conf/init/systemd/zookeeper.service /etc/systemd/system/. + sudo systemctl daemon-reload + sudo systemctl enable zookeeper + sudo systemctl start zookeeper + printf ruok ./syndeia-cloud-3.6_zookeeper_pre-setup.bash: connect: Connection refused ./syndeia-cloud-3.6_zookeeper_pre-setup.bash: line 224: /dev/tcp/localhost/2181: Connection refused + sleep 2 + printf ruok + printf '\n' + [[ true == \t\r\u\e ]] + sudo systemctl stop zookeeper + printf ruok ./syndeia-cloud-3.6_zookeeper_pre-setup.bash: connect: Connection refused ./syndeia-cloud-3.6_zookeeper_pre-setup.bash: line 233: /dev/tcp/localhost/2181: Connection refused + printf '\n' + sudo mv /etc/zookeeper/conf/zoo.cfg /etc/zookeeper/conf/zoo.cfg.pre-upgrade + head -n -2 /etc/zookeeper/conf/zoo.cfg.pre-upgrade + sudo tee /etc/zookeeper/conf/zoo.cfg + sudo systemctl start zookeeper

Verification

  1. Verify Zookeeper service is up by running :

    sudo systemctl status zookeeper

    It should say “Active: active (running)” :

    [jdoe@new-server bin]$ sudo systemctl status zookeeper ● zookeeper.service Loaded: loaded (/etc/systemd/system/zookeeper.service; enabled; vendor preset: disabled) Active: active (running) since Mon 2024-09-16 11:48:36 EDT; 40s ago Main PID: 13025 (java) Tasks: 44 (limit: 102192) Memory: 81.7M CGroup: /system.slice/zookeeper.service └─13025 java -Dzookeeper.log.dir=/opt/zookeeper-current/logs -Dzookeeper.log.file=zookeeper-zookeeper-server-new-server> Sep 16 11:48:37 new-server.domain.tld zookeeper[13025]: 2024-09-16 11:48:37,220 [myid:] - INFO [main:o.a.z.s.p.SnapStream@61> Sep 16 11:48:37 new-server.domain.tld zookeeper[13025]: 2024-09-16 11:48:37,221 [myid:] - INFO [main:o.a.z.s.p.FileSnap@85] > Sep 16 11:48:37 new-server.domain.tld zookeeper[13025]: 2024-09-16 11:48:37,229 [myid:] - INFO [main:o.a.z.s.DataTree@1724] > Sep 16 11:48:37 new-server.domain.tld zookeeper[13025]: 2024-09-16 11:48:37,235 [myid:] - INFO [main:o.a.z.s.ZKDatabase@289]> Sep 16 11:48:37 new-server.domain.tld zookeeper[13025]: 2024-09-16 11:48:37,237 [myid:] - INFO [main:o.a.z.s.p.FileTxnSnapLo> Sep 16 11:48:37 new-server.domain.tld zookeeper[13025]: 2024-09-16 11:48:37,243 [myid:] - INFO [main:o.a.z.s.ZooKeeperServer> Sep 16 11:48:37 new-server.domain.tld zookeeper[13025]: 2024-09-16 11:48:37,253 [myid:] - INFO [main:o.a.z.s.RequestThrottle> Sep 16 11:48:37 new-server.domain.tld zookeeper[13025]: 2024-09-16 11:48:37,253 [myid:] - INFO [ProcessThread(sid:0 cport:21> Sep 16 11:48:37 new-server.domain.tld zookeeper[13025]: 2024-09-16 11:48:37,269 [myid:] - INFO [main:o.a.z.s.ContainerManage> Sep 16 11:48:37 new-server.domain.tld zookeeper[13025]: 2024-09-16 11:48:37,270 [myid:] - INFO [main:o.a.z.a.ZKAuditProvider>
  2. Verify Zookeeper is functioning by running zkCli.sh:

    sudo -u zookeeper /opt/zookeeper-current/bin/zkCli.sh -server localhost:2181

    You should get output similar to the following:

    Connecting to localhost:2181 Welcome to ZooKeeper! JLine support is enabled WATCHER:: WatchedEvent state:SyncConnected type:None path:null [zk: localhost:2181(CONNECTED) 0]

    Note, you can type quit to exit