Qual é a maneira correta de instalar o ZooKeeper no Ubuntu 16.04 para implementação independente e multi-nó?

1

Primeiro, por favor, considere-me como um novato Linux completo. Todo o trabalho que mostrei aqui é compilado de várias fontes da Internet.

Estou tentando configurar um serviço ZooKeeper com etapas de instalação para máquinas de desenvolvimento (executando o sistema operacional Ubuntu no VirtualBox) que também pode ser facilmente usado no cenário de produção (ou seja, modificando apenas o arquivo de configuração). Estes são os passos que dei, as perguntas estão no final.

Instalar o Java:

sudo apt-get update
sudo apt-get install default-jre

Crie um usuário do sistema zookeeper:

sudo adduser --system --no-create-home --disabled-password --disabled-login zookeeper

Use wget para baixar a versão binária:

wget "http://www-eu.apache.org/dist/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gz"

Crie os diretórios apropriados:

sudo mkdir /opt/zookeeper
sudo mkdir /var/lib/zookeeper
sudo mkdir /var/lib/zookeeper/logs
sudo mkdir /var/run/zookeeper

Extraia o arquivo tar:

sudo tar -xvzf zookeeper-3.4.10.tar.gz --directory /opt/zookeeper --strip-components 1

Edite a configuração:

sudo cp /opt/zookeeper/conf/zoo_sample.cfg /opt/zookeeper/conf/zoo.cfg
sudo nano /opt/zookeeper/conf/zoo.cfg

Altere a opção de configuração dataDir para dataDir = / var / lib / zookeeper

Edite o script do ambiente:

sudo nano /opt/zookeeper/bin/zkEnv.sh

Adicione esta linha ao topo do arquivo: ZOO_LOG_DIR="/ var / lib / zookeeper / logs"

Garantir permissões:

sudo chown -R zookeeper:nogroup /opt/zookeeper
sudo chown -R zookeeper:nogroup /var/lib/zookeeper
sudo chown -R zookeeper:nogroup /var/run/zookeeper

Crie um arquivo de serviço do systemd:

sudo nano /etc/systemd/system/zookeeper.service

Conteúdo do arquivo:

[Unit]
Description=Apache ZooKeeper
Requires=network.target remote-fs.target
After=network.target remote-fs.target

[Service]
Type=simple
PIDFile=/var/run/zookeeper/zookeeper.pid
User=zookeeper
Group=nogroup
ExecStart=/opt/zookeeper/bin/zkServer.sh start
ExecStop=/opt/zookeeper/bin/zkServer.sh stop
Restart=on-failure
SyslogIdentifier=zookeeper

[Install]
WantedBy=multi-user.target

Pergunta: Quando inicio o serviço usando "sudo systemctl start zookeeper", o servidor é iniciado e imediatamente desligado. Há algo de errado na configuração acima? Existem coisas que eu posso fazer de forma diferente para melhorar esses passos (por exemplo, do ponto de vista de segurança)?

Eu tentei usar "sudo apt-get install zookeeperd" e encontrei algumas dificuldades, uma é que a localização do diretório é confusa e não do meu agrado, e duas, eu não consegui conectar ao servidor de uma máquina diferente (conexão timeout) mesmo que o servidor responda com "imok" ao teste de runet "ruok" tanto no host local quanto na máquina remota (o servidor é executado corretamente se eu chamar "./zkServer.sh start" manualmente).

EDITAR: Esta é a saída do console quando eu tentei executar o serviço:

$ sudo systemctl start zookeeper
$ sudo systemctl status zookeeper
● zookeeper.service - Apache Zookeeper
   Loaded: loaded (/etc/systemd/system/zookeeper.service; disabled; vendor preset: enabled)
   Active: inactive (dead)

Apr 11 06:47:42 Ubuntu64 systemd[1]: Started Apache Zookeeper.
Apr 11 06:47:42 Ubuntu64 zookeeper[1871]: ZooKeeper JMX enabled by default
Apr 11 06:47:42 Ubuntu64 zookeeper[1871]: Using config: /opt/zookeeper/conf/zoo.cfg
Apr 11 06:47:43 Ubuntu64 zookeeper[1871]: Starting zookeeper ... STARTED
Apr 11 06:47:43 Ubuntu64 zookeeper[1891]: ZooKeeper JMX enabled by default
Apr 11 06:47:43 Ubuntu64 zookeeper[1891]: Using config: /opt/zookeeper/conf/zoo.cfg
Apr 11 06:47:43 Ubuntu64 zookeeper[1891]: Stopping zookeeper ... STOPPED
$ sudo journalctl -u zookeeper.service
-- Logs begin at Rab 2018-04-11 06:45:32 WIB, end at Rab 2018-04-11 06:55:55 WIB. --
Apr 11 06:47:42 Ubuntu64 systemd[1]: Started Apache Zookeeper.
Apr 11 06:47:42 Ubuntu64 zookeeper[1871]: ZooKeeper JMX enabled by default
Apr 11 06:47:42 Ubuntu64 zookeeper[1871]: Using config: /opt/zookeeper/conf/zoo.cfg
Apr 11 06:47:43 Ubuntu64 zookeeper[1871]: Starting zookeeper ... STARTED
Apr 11 06:47:43 Ubuntu64 zookeeper[1891]: ZooKeeper JMX enabled by default
Apr 11 06:47:43 Ubuntu64 zookeeper[1891]: Using config: /opt/zookeeper/conf/zoo.cfg
Apr 11 06:47:43 Ubuntu64 zookeeper[1891]: Stopping zookeeper ... STOPPED
$
    
por Greg 06.04.2018 / 15:40

2 respostas

0

Essa alteração mínima de start para start-foreground pode ser suficiente:

ExecStart=/opt/zookeeper/bin/zkServer.sh start-foreground

    
por taneli 21.09.2018 / 20:06
0

verifique as permissões para dataDir (zoo.cfg), se o usuário não puder gravar nesse diretório, o serviço não será iniciado

    
por Zanda 03.10.2018 / 11:52