Essa alteração mínima de start
para start-foreground
pode ser suficiente:
ExecStart=/opt/zookeeper/bin/zkServer.sh start-foreground
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
$
Essa alteração mínima de start
para start-foreground
pode ser suficiente:
ExecStart=/opt/zookeeper/bin/zkServer.sh start-foreground
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