Implantação de Cluster ZooKeeper em Máquina Única Linux

  1. Ambiente Requerido

Sistema Operacional: CentOS Linux 7.6 ou superior
JDK: Java Development Kit 1.8
ZooKeeper: Apache ZooKeeper 3.6.0
Diretório de Implantação: /home/admin/zk-platform

  1. Instalação do ZooKeeper

Crie os diretórios para as instâncias e faça o download do software:

# Definir caminhos base
BASE_DIR="/home/admin/zk-platform"
mkdir -p ${BASE_DIR}/node1 ${BASE_DIR}/node2 ${BASE_DIR}/node3

# Baixar e extrair o ZooKeeper na primeira instância
cd ${BASE_DIR}/node1
wget https://archive.apache.org/dist/zookeeper/zookeeper-3.6.0/apache-zookeeper-3.6.0-bin.tar.gz
tar -xzf apache-zookeeper-3.6.0-bin.tar.gz
mv apache-zookeeper-3.6.0-bin zk-server

  1. Configuração da Primeira Instância

Prepare o diretório de dados e defina o arquivo de identificação:

# Configurar diretório de dados e myid
cd ${BASE_DIR}/node1/zk-server
mkdir -p var/data
echo "1" > var/data/myid

# Ajustar arquivo de configuração
cp conf/zoo_sample.cfg conf/zoo.cfg
# Editar conf/zoo.cfg com as seguintes linhas:
dataDir=/home/admin/zk-platform/node1/zk-server/var/data
clientPort=2281
server.1=127.0.0.1:2999:3999
server.2=127.0.0.1:3000:4000
server.3=127.0.0.1:3001:4001

  1. Preparação das Demais Instâncias

Copie a estrutura configurada para as outras instâncias e personalize as configurações:

# Copiar e ajustar a segunda instância
cp -r ${BASE_DIR}/node1/zk-server ${BASE_DIR}/node2/zk-server
echo "2" > ${BASE_DIR}/node2/zk-server/var/data/myid
sed -i 's/clientPort=2281/clientPort=2282/' ${BASE_DIR}/node2/zk-server/conf/zoo.cfg

# Repetir para a terceira instância
cp -r ${BASE_DIR}/node1/zk-server ${BASE_DIR}/node3/zk-server
echo "3" > ${BASE_DIR}/node3/zk-server/var/data/myid
sed -i 's/clientPort=2281/clientPort=2283/' ${BASE_DIR}/node3/zk-server/conf/zoo.cfg

  1. Inicialização das Instâncias

Inicie cada nó do cluster e monitore os logs para erros:

# Iniciar as instâncias sequencialmente
for i in 1 2 3; do
  cd ${BASE_DIR}/node${i}/zk-server
  ./bin/zkServer.sh start
  sleep 2  # Aguardar um breve intervalo
done

# Verificar logs para problemas, por exemplo:
tail -f ${BASE_DIR}/node1/zk-server/logs/*.log

Se ocorrer conflito de porta 8080, devido ao AdminServer do ZooKeeper 3.5+, adicione configurações específicas no arquivo zoo.cfg de cada nó:

# No node1, adicionar ao final de conf/zoo.cfg:
admin.serverPort=8180

# No node2:
admin.serverPort=8280

# No node3:
admin.serverPort=8380

# Reiniciar as instâncias após as alterações
for i in 1 2 3; do
  cd ${BASE_DIR}/node${i}/zk-server
  ./bin/zkServer.sh restart
done

  1. Verificação do Estado do Cluster

Use o comando status para confirmar a formação do cluster e os papéis de líder/seguidor:

# Checar o status de cada nó
for i in 1 2 3; do
  echo "Status do node${i}:"
  ${BASE_DIR}/node${i}/zk-server/bin/zkServer.sh status
done

Para testar a tolerância a falhas, interrompa o líder e observe a reelieção:

# Identifique o líder atual (suponha que seja node3) e pare-o
${BASE_DIR}/node3/zk-server/bin/zkServer.sh stop

# Verifique os status novamente para ver a transição
for i in 1 2 3; do
  ${BASE_DIR}/node${i}/zk-server/bin/zkServer.sh status
done

# Reinicie o nó parado e confirme o novo estado
${BASE_DIR}/node3/zk-server/bin/zkServer.sh start
sleep 3
for i in 1 2 3; do
  ${BASE_DIR}/node${i}/zk-server/bin/zkServer.sh status
done

Após esses passos, o cluster ZooKeeper estará operacional em ambiente de máquina única com failoevr automático.

Tags: zookeeper Linux Cluster Deployment Apache ZooKeeper java

Publicado em 6-23 23:22