Apache Zookeeper è un servizio gratuito e open source per sistemi distribuiti che ti aiuta a gestire un ampio set di host. È un servizio centralizzato utilizzato per il mantenimento delle informazioni di configurazione, dei nomi e dei servizi di gruppo. È scritto in Java e consente agli sviluppatori di concentrarsi sulla creazione di funzionalità software senza preoccuparsi della natura distribuita dell'applicazione. Apache ZooKeeper utilizzato più comunemente nei carichi di lavoro "dominanti in lettura" in cui le letture sono molto più comuni delle scritture. Viene fornito con un ricco set di funzionalità tra cui sincronizzazione, messaggi ordinati, serializzazione, affidabilità, atomicità, elaborazione rapida e molti altri. Ha un meccanismo di blocco e sincronizzazione che ti aiuta nel ripristino automatico dei guasti durante la connessione di altre applicazioni distribuite. Il progetto Zookeeper è uno dei progetti di maggior successo della fondazione Apache. Molte aziende hanno adottato Zookeeper per creare sistemi distribuiti ad alta disponibilità su larga scala.
In questo tutorial, ti mostreremo come configurare un cluster Apache Zookeeper a nodo singolo sul server Debian 10.
Prerequisiti
- Un server che esegue Debian 10 con 2 GB di RAM.
- Sul tuo server è configurata una password di root.
Per iniziare
Prima di iniziare, si consiglia di aggiornare il server con l'ultima versione. Puoi aggiornarlo usando il seguente comando:
apt-get update -y
apt-get upgrade -y
Una volta aggiornato il server, riavvialo per implementare le modifiche.
Installa Java
Apache Zookeeper è scritto nel linguaggio Java. Quindi dovrai installare Java nel tuo sistema. Per impostazione predefinita, l'ultima versione di Java è disponibile nel repository predefinito di Debian 10. Puoi installarlo eseguendo il seguente comando:
apt-get install default-jdk -y
Dopo aver installato Java, verificare la versione installata di Java utilizzando il seguente comando:
java --version
Dovresti ottenere il seguente output:
openjdk 11.0.5 2019-10-15 OpenJDK Runtime Environment (build 11.0.5+10-post-Debian-1deb10u1) OpenJDK 64-Bit Server VM (build 11.0.5+10-post-Debian-1deb10u1, mixed mode, sharing)
Una volta terminato, puoi procedere alla creazione di un utente di sistema per Zookeeper.
Crea un utente di sistema per Zookeeper
È una buona idea creare un utente dedicato per eseguire il servizio Zookeeper. Ciò migliorerà la tua sicurezza e gestibilità.
Innanzitutto, esegui il comando seguente per creare un utente zookeeper con la directory home:
useradd zookeeper -m
Quindi, imposta la shell predefinita per l'utente zookeeper utilizzando il seguente comando:
usermod --shell /bin/bash zookeeper
Quindi, imposta una password per l'utente zookeeper utilizzando il seguente comando:
passwd zookeeper
Quindi, aggiungi l'utente zookeeper al gruppo sudo:
usermod -aG sudo zookeeper
A questo punto, hai creato e configurato l'utente Zookeeper. Ora puoi procedere con il download di Zookeeper.
Scarica Zookeeper
Innanzitutto, dovrai scaricare l'ultima versione di Apache Zookeeper dal suo sito Web ufficiale. Al momento della stesura di questo articolo, l'ultima versione di Apache Zookeeper è la 3.5.6.
Per scaricarlo, cambia la directory in /opt ed esegui il seguente comando:
cd /opt
wget https://archive.apache.org/dist/zookeeper/stable/apache-zookeeper-3.5.6-bin.tar.gz
Una volta completato il download, estrai il file scaricato con il seguente comando:
tar -xvzf apache-zookeeper-3.5.6-bin.tar.gz
Quindi, rinomina la directory estratta in zookeeper e concedi le autorizzazioni appropriate:
mv apache-zookeeper-3.5.6-bin zookeeper
chown -R zookeeper:zookeeper /opt/zookeeper
Successivamente, dovrai creare una directory di dati per Zookeeper per memorizzare tutti i dati di configurazione e di stato. Puoi creare sul filesystem locale o sul filesystem remoto secondo le tue necessità.
Puoi creare una directory di dati usando il seguente comando:
mkdir -p /data/zookeeper
Quindi, cambia la proprietà della directory dei dati in utente zookeeper:
chown -R zookeeper:zookeeper /data/zookeeper
A questo punto, hai scaricato Zookeeper e creato una directory di dati per esso. Ora puoi procedere con la configurazione di Zookeeper.
Configura Zookeeper
Tutti i file di configurazione di Zookeeper si trovano all'interno della directory /opt/zookeeper/conf/. Puoi creare un file di configurazione di Zookeeper all'interno della directory /opt/zookeeper/conf/ usando il seguente comando:
nano /opt/zookeeper/conf/zoo.cfg
Aggiungi le seguenti righe:
tickTime=2500 dataDir=/data/zookeeper clientPort=2181 maxClientCnxns=80
Salva e chiudi il file quando hai finito.
Dove:
- tickTime :questa opzione imposta la durata di un segno di spunta in millisecondi.
- DatiDir :Specifica la directory dei dati in cui memorizzare i dati di Zookeeper.
- Portaclient :Specifica la porta utilizzata per ascoltare le connessioni client.
- maxClientCnxns :utilizzato per limitare il numero massimo di connessioni client.
Nota :I parametri sopra indicati sono per lo sviluppo e il test. Puoi modificarli in base alle tue esigenze.
A questo punto, hai configurato Zookeeper. Ora puoi essere pronto per avviare il server Zookeeper.
Avvia e prova il server Zookeeper
Puoi avviare il server Zookeeper usando il seguente comando:
/opt/zookeeper/bin/zkServer.sh start
Dovresti ottenere il seguente output:
/usr/bin/java ZooKeeper JMX enabled by default Using config: /opt/zookeeper/bin/../conf/zoo.cfg Starting zookeeper ... STARTED
Successivamente, puoi connetterti al server Zookeeper sulla porta 2181 utilizzando il seguente comando:
/opt/zookeeper/bin/zkCli.sh -server 127.0.0.1:2181
Una volta connesso, dovresti vedere il seguente output:
[zk: 127.0.0.1:2181(CONNECTED) 0]
Quindi, esegui il comando di aiuto per ottenere un elenco di comandi che puoi eseguire dal client.
[zk: 127.0.0.1:2181(CONNECTED) 0] help
Dovresti vedere il seguente output:
ZooKeeper -server host:port cmd args addauth scheme auth close config [-c] [-w] [-s] connect host:port create [-s] [-e] [-c] [-t ttl] path [data] [acl] delete [-v version] path deleteall path delquota [-n|-b] path get [-s] [-w] path getAcl [-s] path history listquota path ls [-s] [-w] [-R] path ls2 path [watch] printwatches on|off quit reconfig [-s] [-v version] [[-file path] | [-members serverID=host:port1:port2;port3[,...]*]] | [-add serverId=host:port1:port2;port3[,...]]* [-remove serverId[,...]*] redo cmdno removewatches path [-c|-d|-a] [-l] rmr path set [-s] [-v version] path data setAcl [-s] [-v version] [-R] path acl setquota -n|-b val path stat [-w] path sync path
Dopo il test, esci dalla sessione client utilizzando il comando quit:
[zk: 127.0.0.1:2181(CONNECTED) 0] quit
Ora puoi interrompere il servizio Zookeeper con il seguente comando:
/opt/zookeeper/bin/zkServer.sh stop
Dovresti vedere il seguente comando:
/usr/bin/java ZooKeeper JMX enabled by default Using config: /opt/zookeeper/bin/../conf/zoo.cfg Stopping zookeeper ... STOPPED
A questo punto, hai avviato e testato con successo il server Zookeeper.
Crea un file di servizio Systemd per Zookeeper
Successivamente, dovrai creare un file di servizio systemd per gestire il servizio Zookeeper utilizzando systemd.
Puoi crearlo con il seguente comando:
nano /etc/systemd/system/zookeeper.service
Aggiungi le seguenti righe:
[Unit] Description=Zookeeper Daemon Documentation=http://zookeeper.apache.org Requires=network.target After=network.target [Service] Type=forking WorkingDirectory=/opt/zookeeper User=zookeeper Group=zookeeper ExecStart=/opt/zookeeper/bin/zkServer.sh start /opt/zookeeper/conf/zoo.cfg ExecStop=/opt/zookeeper/bin/zkServer.sh stop /opt/zookeeper/conf/zoo.cfg ExecReload=/opt/zookeeper/bin/zkServer.sh restart /opt/zookeeper/conf/zoo.cfg TimeoutSec=30 Restart=on-failure [Install] WantedBy=default.target
Salva e chiudi il file quando hai finito. Quindi, ricarica il demone systemd con il seguente comando:
systemctl daemon-reload
Quindi, avvia il servizio Zookeeper e abilitalo all'avvio dopo il riavvio del sistema utilizzando il seguente comando:
systemctl start zookeeper
systemctl enable zookeeper
Ora puoi verificare lo stato di Zookeeper usando il seguente comando:
systemctl status zookeeper
Dovresti vedere il seguente output:
? zookeeper.service - Zookeeper Daemon Loaded: loaded (/etc/systemd/system/zookeeper.service; disabled; vendor preset: enabled) Active: active (running) since Sun 2019-12-29 15:12:39 UTC; 8min ago Docs: http://zookeeper.apache.org Process: 9229 ExecStart=/opt/zookeeper/bin/zkServer.sh start /opt/zookeeper/conf/zoo.cfg (code=exited, status=0/SUCCESS) Main PID: 9245 (java) Tasks: 29 (limit: 2359) Memory: 49.7M CGroup: /system.slice/zookeeper.service ??9245 java -Dzookeeper.log.dir=/opt/zookeeper/bin/../logs -Dzookeeper.log.file=zookeeper-zookeeper-server-debian10.log -Dzookeeper. Dec 29 15:12:38 debian10 systemd[1]: Starting Zookeeper Daemon... Dec 29 15:12:38 debian10 zkServer.sh[9229]: /usr/bin/java Dec 29 15:12:38 debian10 zkServer.sh[9229]: ZooKeeper JMX enabled by default Dec 29 15:12:38 debian10 zkServer.sh[9229]: Using config: /opt/zookeeper/conf/zoo.cfg Dec 29 15:12:39 debian10 zkServer.sh[9229]: Starting zookeeper ... STARTED Dec 29 15:12:39 debian10 systemd[1]: Started Zookeeper Daemon.
Ora puoi gestire facilmente il servizio Zookeeper con systemd.
Conclusione
Congratulazioni! hai installato e configurato correttamente un cluster Zookeeper a nodo singolo sul server Debian 10. Questa configurazione è molto utile per ambienti di sviluppo e test. Spero che ora tu abbia abbastanza conoscenze per configurare un cluster Zookeeper a nodo singolo. Sentiti libero di chiedermi se hai domande.