Di recente, ti ho mostrato come distribuire CouchDB come server di database NoSQL autonomo, che potrebbe servirti bene in piccole istanze. Questa volta, voglio mostrarti un trucco accurato per distribuire CouchDB come cluster usando Docker. Anche se questo metodo potrebbe non essere l'ideale per l'utilizzo in produzione, è un ottimo modo per gli sviluppatori di poter lavorare con CouchDB in un ambiente di test.
Senza ulteriori indugi, passiamo alla distribuzione.
Di cosa avrai bisogno
Per farlo funzionare, avrai bisogno di un server con un sistema operativo che supporti Docker. Dimostrerò con Ubuntu Server 22.04, ma puoi utilizzare qualsiasi piattaforma con cui ti senti a tuo agio.
Copertura per sviluppatori da leggere
Come installare Docker
Se non hai già installato Docker, ecco come lo fai.
Innanzitutto, aggiungi la chiave GPG Docker ufficiale con il comando:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
Quindi, aggiungi il repository richiesto:
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Installa le dipendenze richieste con:
sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release -y
Infine, possiamo installare l'ultima versione del motore Docker:
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io -y
Aggiungi il tuo utente al gruppo Docker con il comando:
sudo usermod -aG docker $USER
Informa il sistema della modifica con:
newgrp docker
Come distribuire i container CouchDB
Distribuiremo tre container CouchDB, ciascuno utilizzando una porta esterna univoca. Il primo utilizzerà la porta 5984 ed è distribuito con:
docker run -itd -p 5984:5984 -p 5986:5986 --name=couchdb0 -e NODENAME='couchdb-0.local.com' --mount 'source=volume-0,target=/opt/couchdb/data' couchdb:2.3.0
Il secondo container viene distribuito (usando la porta 15984) con:
docker run -itd -p 15984:5984 -p 15986:5986 --name=couchdb1 -e NODENAME='couchdb-1.local.com' --mount 'source=volume-1,target=/opt/couchdb/data' couchdb:2.3.0
Il container finale viene distribuito *utilizzando la porta 25984) con:
docker run -itd -p 25984:5984 -p 25986:5986 --name=couchdb2 -e NODENAME='couchdb-2.local.com' --mount 'source=volume-2,target=/opt/couchdb/data' couchdb:2.3.0
Se emetti il comando docker ps -a | grep couchdb dovresti vedere tutte e tre le istanze attive e funzionanti.
Come creare l'utente amministratore
Ora dobbiamo creare un amministratore su ogni container. In ogni caso, sostituisci PASSWORD con una password complessa (assicurati che sia la stessa per ciascuna). I comandi per questo saranno:
curl -X PUT http://localhost:5984/_node/[email protected]/_config/admins/admin -d '"PASSWORD"
curl -X PUT http://localhost:15984/_node/[email protected]/_config/admins/admin -d '"PASSWORD"
curl -X PUT http://localhost:25984/_node/[email protected]/_config/admins/admin -d '"PASSWORD"''
Eccezionale. Continuiamo.
Come creare una rete Docker
Al momento, i nodi CouchDB non hanno consapevolezza l'uno dell'altro. Per risolvere il problema, dobbiamo creare una nuova rete Docker. Fallo con:
docker network create -d bridge --subnet 172.25.0.0/16 isolated_nw
Con la nostra rete creata, ora dobbiamo connettere i nostri contenitori ad essa, cosa che viene eseguita utilizzando i seguenti comandi:
docker network connect --alias couchdb-0.local.com isolated_nw couchdb0
docker network connect --alias couchdb-1.local.com isolated_nw couchdb1
docker network connect --alias couchdb-2.local.com isolated_nw couchdb2
Perfetto.
Come accedere alla console di amministrazione
Aprire un browser Web e puntarlo su http://server:5984, dove SERVER è l'indirizzo IP del server che ospita Docker. Accedi con il nome utente admin e la password che hai aggiunto in precedenza per l'utente amministratore.
Dopo aver effettuato l'accesso, fai clic sull'icona a forma di chiave inglese nella barra di navigazione a sinistra, quindi fai clic su Configura un cluster (Figura A ).
Figura A
Nella finestra risultante (Figura B ), dovrai inserire le credenziali di amministratore e quindi aggiungere un nodo al cluster.
Figura B
Per aggiungere il primo nodo al cluster, digita couchdb-1.local.com come host remoto e lascia la porta su 5984. Una volta fatto, fai clic su Aggiungi nodo. Fai la stessa cosa per il secondo nodo usando couchdb-2.local.com come host remoto.
Dopo aver aggiunto entrambi i nodi, fai clic su Configura cluster e dovresti essere ricompensato con una pagina che ti informa che il cluster è stato configurato (Figura C ).
Figura C
Congratulazioni, hai appena distribuito il tuo primo cluster CouchDB, con l'aiuto di Docker.