Que comando precisa ser emitido para verificar se um servidor ZooKeeper é um Líder ou um Seguidor?

23

Um Quorum do ZooKeeper composto por três servidores ZooKeeper foi criado.

O zoo.cfglocalizado nos três servidores ZooKeeper tem a seguinte aparência:

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

Análise

É claro que um dos três servidores ZooKeeper se tornará o Leadere os outros Followers. Se o Leaderservidor ZooKeeper foi desligado, a Leadereleição será iniciada novamente. O objetivo é verificar se outro servidor ZooKeeper se tornará o Leaderse o Leaderservidor foi desligado.


Questão

Que comando precisa ser emitido para verificar se um servidor ZooKeeper é um Líder ou um Seguidor?

030
fonte

Respostas:

50

É possível verificar se um servidor ZooKeeper é um líder ou seguidor usando o nccomando que está incluído no netcatpacote:

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

Se o servidor ZooKeeper for um líder, o comando retornará: Mode: leadere caso contrário:Mode: follower

bsd
fonte
2
estandalone
zinking 4/16/16
@bsd, existe alguma maneira de encontrar os nós no cluster zookeeper?
Mcuteisumit # 6/16
2
@sumit Isso provavelmente precisa de sua própria pergunta SO, mas uma maneira é simplesmente ler o arquivo zoo.cfg.
Jose Leon
3

Alternativamente, o seguinte pode ser usado:

bin/zkServer.sh status

Ele imprimirá o modo na saída:

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