Назад | Перейти на главную страницу

Какую команду можно подать, чтобы проверить, является ли сервер ZooKeeper лидером или последователем?

Создан кворум ZooKeeper, состоящий из трех серверов ZooKeeper.

В zoo.cfg расположенный на всех трех серверах ZooKeeper выглядит следующим образом:

maxClientCnxns=50
# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
dataDir=/var/lib/zookeeper
# the port at which the clients will connect
clientPort=2181

server.1=<ip-address-1>:2888:3888
server.2=<ip-address-2>:2888:3888
server.3=<ip-address-3>:2888:3888

Анализ

Понятно, что один из трех серверов ZooKeeper станет Leader и др Followers. Если Leader Сервер ZooKeeper выключен, Leader выборы начнутся снова. Цель состоит в том, чтобы проверить, станет ли другой сервер ZooKeeper Leader если Leader сервер был выключен.

Проверить, является ли сервер ZooKeeper лидером или последователем, можно с помощью nc команда, которая включена в netcat пакет:

echo stat | nc localhost 2181 | grep Mode
echo srvr | nc localhost 2181 | grep Mode #(From 3.3.0 onwards)

Если сервер ZooKeeper является лидером, команда вернет: Mode: leader и иначе: Mode: follower

В качестве альтернативы можно использовать следующее:

bin/zkServer.sh status

Он напечатает режим на выходе:

ZooKeeper JMX enabled by default
Using config: /home/kafka/zookeeper/bin/../conf/zoo.cfg
Mode: follower