web-dev-qa-db-fra.com

Quelle est la bonne façon d'installer ZooKeeper sur Ubuntu 16.04 pour un déploiement autonome et multi-nœuds?

Tout d’abord, considérez-moi comme un novice complet pour Linux. Tous les travaux que j'ai montrés ici sont concoctés à partir de différentes sources Internet.

J'essaie de configurer un service ZooKeeper avec des étapes d'installation pour les machines de développement (exécutant l'OS invité Ubuntu sur VirtualBox) qui peuvent également être facilement utilisées dans un scénario de production (c'est-à-dire uniquement en modifiant le fichier de configuration). Ce sont les mesures que j'ai prises, les questions sont au bas.

Installez Java:

Sudo apt-get update
Sudo apt-get install default-jre

Faites un utilisateur du système Zookeeper:

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

Utilisez wget pour télécharger la version binaire:

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

Créez les répertoires appropriés:

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

Extraire l'archive tar:

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

Editez la configuration:

Sudo cp /opt/zookeeper/conf/Zoo_sample.cfg /opt/zookeeper/conf/Zoo.cfg
Sudo nano /opt/zookeeper/conf/Zoo.cfg

Changez l'option de configuration dataDir en dataDir =/var/lib/zookeeper

Editez le script d'environnement:

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

Ajoutez cette ligne en haut du fichier: Zoo_LOG_DIR = "/ var/lib/zookeeper/logs"

Assurer les autorisations:

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

Créez un fichier de service systemd:

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

Contenu du fichier:

[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

Question: Lorsque je démarre le service avec "Sudo systemctl start zookeeper", le serveur démarre et s’arrête immédiatement. Y at-il quelque chose de mal dans la configuration ci-dessus? Y a-t-il des choses que je peux faire différemment pour améliorer ces étapes (du point de vue de la sécurité)?

J'ai essayé d'utiliser "Sudo apt-get install zookeeperd" et j'ai trouvé quelques problèmes. L'un d'entre eux est que l'emplacement du répertoire est source de confusion et ne me plait pas. Deux, je ne pouvais pas me connecter au serveur à partir d'une autre machine (délai de connexion) bien que le serveur réponde "imok" au test "ruok" telnet à la fois sur localhost et sur la machine distante (le serveur fonctionne correctement si j'appelle "./zkServer.sh start" manuellement).

EDIT: Ceci est la sortie de la console lorsque j'ai essayé d'exécuter le service:

$ 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
$
2
Greg

Ce changement minimal de start à start-foreground pourrait être suffisant:

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

1
taneli

vérifier les autorisations pour dataDir (Zoo.cfg); si l'utilisateur ne peut pas écrire dans ce répertoire, le service ne démarre pas

0
Zanda