¿Qué comando se debe emitir para verificar si un servidor ZooKeeper es un Líder o un Seguidor?

23

Se ha creado un Quórum ZooKeeper que consta de tres servidores ZooKeeper.

El zoo.cfgubicado en los tres servidores de ZooKeeper tiene el siguiente aspecto:

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álisis

Está claro que uno de los tres servidores de ZooKeeper se convertirá en el Leadery los otros Followers. Si el Leaderservidor de ZooKeeper se ha apagado, las Leaderelecciones comenzarán nuevamente. El objetivo es verificar si otro servidor de ZooKeeper se convertirá en Leadersi el Leaderservidor se ha apagado.


Pregunta

¿Qué comando se debe emitir para verificar si un servidor ZooKeeper es un Líder o un Seguidor?

030
fuente

Respuestas:

50

Es posible verificar si un servidor ZooKeeper es un líder o seguidor utilizando el nccomando que se incluye en el netcatpaquete:

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

Si el servidor ZooKeeper es un líder, el comando devolverá: Mode: leadery de lo contrario:Mode: follower

bsd
fuente
2
ystandalone
zinking
@bsd, ¿hay alguna forma de encontrar los nodos en el cluster zookeeper?
murarisumit
2
@sumit Eso probablemente necesita su propia pregunta SO, pero una forma es simplemente leer el archivo zoo.cfg.
Jose Leon
3

Alternativamente, se podría usar lo siguiente:

bin/zkServer.sh status

Imprimirá el modo en la salida:

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