Introduzione
ZooKeeper è un progetto Apache Software Foundation progettato per semplificare il monitoraggio e la gestione dei servizi di gruppo. Utilizza una semplice interfaccia per il suo servizio di coordinamento centralizzato che gestisce la configurazione, le informazioni, la denominazione, la sincronizzazione distribuita e il provisioning.
In questo tutorial, scopri come installare e configurare Apache ZooKeeper su Ubuntu 18.04 o 20.04.
Prerequisiti
- Un sistema Linux con Ubuntu 20.04 o 18.04
- Accesso a una finestra di terminale/riga di comando (Cerca > Terminale )
- Un account utente con sudo o root privilegi
Installazione di Apache ZooKeeper su Ubuntu
Fase 1:installazione di Java
ZooKeeper è scritto in Java e richiede questo linguaggio di programmazione per funzionare. Per verificare se Java è già installato, esegui il comando:
java --version
Se l'output mostra una versione Java in esecuzione, puoi passare al passaggio successivo. Se il sistema dice che non esiste no such file or directory
, devi installare Java prima di passare a ZooKeeper.
Sono disponibili diversi pacchetti Java open source per Ubuntu. Trova quale è il migliore per te e la sua guida all'installazione in Come installare Java su Ubuntu. Le istruzioni si applicano a Ubuntu 18.04 e Ubuntu 20.04.
Fase 2:creazione di un utente per ZooKeeper
1. Crea un utente separato per il servizio ZooKeeper digitando:
useradd zookeeper -m
Il -m
flag crea una home directory per l'utente. In questo caso, sarà /home/zookeeper
. Per nominare l'utente in modo diverso, sostituisci zookeeper
con il nome che preferisci.
2. Quindi, imposta bash
come shell predefinita per il nuovo utente con il comando:
usermod --shell /bin/bash zookeeper
3. Impostare una password per l'utente:
passwd zookeeper
Digita e ridigita una password complessa per l'utente ZooKeeper.
4. Quindi, aggiungi l'utente al gruppo sudoers affinché disponga dei privilegi sudo:
usermod -aG sudo zookeeper
5. Verifica che l'utente sia ora un superutente elencando gli account nel gruppo sudoers:
sudo getent group sudo
L'output dovrebbe visualizzare l'utente che hai creato.
Fase 3:creazione di una directory di dati ZooKeeper
Prima di installare ZooKeeper, crea una struttura di directory in cui può archiviare i dati di configurazione e di stato (su un disco locale o su un archivio remoto).
Per archiviare i dati sulla macchina locale, crea prima una nuova directory ZooKeeper eseguendo:
sudo mkdir -p /data/zookeeper
Quindi, dai all'utente ZooKeeper la proprietà di quella directory:
chown -R zookeeper:zookeeper /data/zookeeper
Fase 4:download e installazione di ZooKeeper
1. Apri un browser web a tua scelta e vai alla pagina di download di Apache ZooKeeper. L'ultima versione stabile viene visualizzata nella parte superiore della pagina. Fare clic sulla versione che si desidera installare per aprire i mirror di download di Apache.
2. Copia l'indirizzo HTTP per il sito mirror suggerito.
3. Torna alla riga di comando e passa a /opt
directory:
cd /opt
4. Usa il wget
comando per scaricare .tar file. Incolla il link copiato dalla pagina web ufficiale di Apache:
sudo wget https://downloads.apache.org/zookeeper/zookeeper-3.6.1/apache-zookeeper-3.6.1-bin.tar.gz
5. Estrarre il file eseguendo:
sudo tar -xvf apache-zookeeper-3.6.1-bin.tar.gz
6. Rinomina il file estratto in zookeeper
con il comando:
mv apache-zookeeper-3.6.1-bin zookeeper
7. Assegna all'utente zookeeper la proprietà di quel file eseguendo:
chown -R zookeeper:zookeeper /opt/zookeeper
Fase 5:configurazione di ZooKeeper in modalità standalone
Il passaggio successivo è la creazione di un file di configurazione per ZooKeeper. La configurazione seguente imposta ZooKeeper in modalità standalone (usata per lo sviluppo e il test). Per gli ambienti di produzione, devi eseguire ZooKeeper in modalità di replica.
Per configurare ZooKeeper in modalità standalone, crea un nuovo zoo.cfg nel zookeeper directory:
sudo nano /opt/zookeeper/conf/zoo.cfg
Aggiungi le seguenti righe:
tickTime = 2000
dataDir = /data/zookeeper
clientPort = 2181
initLimit = 5
syncLimit = 2
Salva e esci l'editor di testo.
Tieni presente che questa è un'impostazione di configurazione di base per un cluster a nodo singolo. Il file può variare in base alle tue esigenze. Le righe sopra sono composte da quanto segue:
tickTime
:il numero di millisecondi di ogni tick.dataDir
:la directory in cui sono archiviati gli snapshot del database in memoria e il registro delle transazioni per gli aggiornamenti.clientPort
:la porta in ascolto per le connessioni client.initLimit
:Il numero di tick che può richiedere la fase di sincronizzazione iniziale.syncLimit
:il numero di tick che possono passare tra l'invio di una richiesta e la ricezione di una conferma.
Fase 6:avvio del servizio ZooKeeper
Ora puoi avviare il servizio ZooKeeper. Esegui il seguente comando all'interno di /opt directory. Se sei uscito dalla directory, naviga al suo interno con cd /opt
.
Per avviare il servizio ZooKeeper usa il comando:
sudo bin/zkServer.sh start
L'output dovrebbe mostrare che ZooKeeper ha STARTED .
Fase 7:connessione al server ZooKeeper
Una volta avviato il servizio, puoi connetterti al server ZooKeeper. In questa guida, è il server locale.
Collegati a ZooKeeper con il comando:
bin/zkCli.sh -server 127.0.0.1:2181
Attendi che l'output apra un nuovo zk
messaggio, che dovrebbe confermare che sei CONNESSO .
Per visualizzare un elenco di comandi disponibili, esegui il comando seguente nel nuovo prompt dei comandi:
help
Per chiudere la sessione , digita:
quit
Per interrompere il servizio ZooKeeper , esegui il comando:
bin/zkServer.sh stop
Fase 8:creazione di un file di servizio di sistema
Infine, devi creare un file di servizio per gestire ZooKeeper.
1. Crea un nuovo zookeeper.service file in un editor di testo a tua scelta:
sudo nano /etc/systemd/system/zookeeper.service
2. Incolla il seguente contenuto nel file:
[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
3. Salva ed esci dal file.
4. Ricarica il servizio systemd eseguendo:
systemctl daemon-reload
5. Quindi, avvia il servizio ZooKeeper e abilitalo per l'avvio all'avvio:
systemctl start zookeeper
systemctl enable zookeeper
6. Verifica che il servizio sia attivo e funzionante con il comando:
systemctl status zookeeper
Dovresti vedere che ZooKeeper è attivo (in esecuzione) .
Configurazione di ZooKeeper replicato
Un ambiente di produzione richiede la configurazione di un cluster replicato di nodi ZooKeeper.
Dopo aver installato Java, creato un utente ZooKeeper e scaricato il pacchetto binario, è necessario creare un file di configurazione. A differenza della configurazione di base per la modalità standalone, modalità replicata include qualche riga in più.
Tutti i server nella stessa applicazione devono disporre di copie del file di configurazione.
Crea ogni file con il comando:
sudo nano /opt/zookeeper/conf/zoo.cfg
Quindi, incolla il seguente contenuto nel file:
tickTime=2000
dataDir=/var/zookeeper
clientPort=2181
initLimit=5
syncLimit=2
server.1=[server_ip]:2888:3888
server.2=[server_ip]:2888:3888
server.3=[server_ip]:2888:3888
Salva ed esci dal file. Ripeti la procedura su ciascun server del gruppo.