Ricerca nel sito web

Come installare un cluster CockroachDB su Ubuntu 22.04


CockroachDB è un database SQL distribuito gratuito e nativo del cloud utilizzato per creare e gestire servizi cloud moderni e scalabili. Ti aiuta a sopravvivere ai guasti software e hardware. Memorizza copie di dati in più posizioni per fornire un accesso rapido. Si basa su un archivio chiave-valore transazionale e fortemente coerente ed è in grado di sopravvivere a guasti di dischi, macchine e data center con interruzioni di latenza prossime allo zero e nessun intervento manuale.

Questo tutorial spiegherà come configurare un cluster CockroachDB a tre nodi sul server Ubuntu 22.04.

Prerequisiti

  • Tre server che eseguono Ubuntu 22.04.
  • Su ciascun server è configurata una password di root.

In questo tutorial utilizzeremo la seguente configurazione:

nome host   indirizzo IP

nodo1          192.168.10.10

nodo2          192.168.10.11

nodo3          192.168.10.12

Aggiorna il tuo sistema

Prima di iniziare, si consiglia vivamente di aggiornare e aggiornare tutti i nodi alla versione più recente. Puoi aggiornare tutti i nodi uno per uno eseguendo il comando seguente:

apt update -y
apt upgrade -y

Una volta aggiornati tutti i nodi, riavviarli per applicare le modifiche.

Impostazione della sincronizzazione dell'ora

Prima di iniziare, dovrai impostare una sincronizzazione temporale tra tutti i nodi. Puoi farlo usando il chrony.

Innanzitutto, installa chrony con il seguente comando:

apt install chrony -y

Una volta installato, modifica il file di configurazione di chrony con il seguente comando:

nano /etc/chrony/chrony.conf

Trova il pool predefinito e sostituiscili con le seguenti righe:

pool 0.id.pool.ntp.org iburst maxsources 4
pool 1.id.pool.ntp.org iburst maxsources 1
pool 2.id.pool.ntp.org iburst maxsources 1
pool 3.id.pool.ntp.org iburst maxsources 2

Salvare e chiudere il file, quindi riavviare il servizio chrony e abilitarlo all'avvio al riavvio del sistema con il seguente comando:

systemctl restart chrony
systemctl enable chrony

Una volta terminato, puoi procedere al passaggio successivo.

Installa CockroachDB su tutti i nodi

In questa sezione installeremo CockroachDB su tutti i nodi. Esegui i seguenti comandi su tutti i nodi per installare CockroachDB.

Innanzitutto, scarica l'ultima versione di CockroachDB dal loro sito Web ufficiale utilizzando il seguente comando:

wget https://binaries.cockroachdb.com/cockroach-latest.linux-amd64.tgz

Una volta completato il download, estrai il file scaricato con il seguente comando:

tar -xvzf cockroach-latest.linux-amd64.tgz

Successivamente, copia il binario CockroachDB nella directory /usr/local/bin con il seguente comando:

cp cockroach-*/cockroach /usr/local/bin/

Successivamente, verifica la versione di CockroachDB utilizzando il seguente comando:

cockroach version

Dovresti ottenere il seguente output:

Build Tag:        v22.2.2
Build Time:       2023/01/04 17:23:00
Distribution:     CCL
Platform:         linux amd64 (x86_64-pc-linux-gnu)
Go Version:       go1.19.1
C Compiler:       gcc 6.5.0
Build Commit ID:  07a53a36601e9ca5fcffcff55f69b43c6dfbf1c1
Build Type:       release

A questo punto CockroachDB è installato su tutti i nodi. Ora puoi procedere al passaggio successivo.

Crea certificati

CockroachDB richiedeva anche certificati server e client per una connessione sicura. Innanzitutto, crea una directory per archiviare i file dei certificati su tutti i nodi. Esegui il comando seguente su tutti i nodi per creare una directory dei certificati:

mkdir ~/certs

Successivamente, dovrai creare un certificato CA, un certificato radice e un certificato client.

Crea certificato CA

Sul nodo1, crea un certificato CA utilizzando il seguente comando:

cockroach cert create-ca --certs-dir=certs --ca-key=certs/ca.key

Questo comando genererà ca.key e ca.crt all'interno della directory ~/certs.

Quindi, copia la CA generata su entrambi i nodi utilizzando il seguente comando:

scp ~/certs/ca.crt ~/certs/ca.key [email :~/certs/
scp ~/certs/ca.crt ~/certs/ca.key [email :~/certs/

Crea certificato cliente

Successivamente, dovrai generare un certificato client per proteggere la comunicazione tra SQL e il cluster.

Eseguire il comando seguente su tutti i nodi per generare il certificato client:

cockroach cert create-client root --certs-dir=certs --ca-key=certs/ca.key

Una volta terminato, puoi procedere con la creazione di un certificato server.

Crea certificati server

Successivamente, dovrai generare il certificato del server per proteggere la comunicazione tra i server sul cluster CockroachDB.

Sul nodo1, esegui il comando seguente per generare il certificato del server:

cockroach cert create-node localhost $(hostname) 192.168.10.10 --certs-dir=certs --ca-key=certs/ca.key

Sul nodo2, esegui il comando seguente per generare il certificato del server:

cockroach cert create-node localhost $(hostname) 192.168.10.11 --certs-dir=certs --ca-key=certs/ca.key

Sul nodo3, esegui il comando seguente per generare il certificato del server:

cockroach cert create-node localhost $(hostname) 192.168.10.12 --certs-dir=certs --ca-key=certs/ca.key

Questo genererà i file node.key e node.crt all'interno della directory ~/certs.

Puoi elencare tutti i certificati con il seguente comando:

cockroach --certs-dir=certs cert list

Dovresti ottenere il seguente output:

Certificate directory: certs
  Usage  | Certificate File |    Key File     |  Expires   |                   Notes                    | Error
---------+------------------+-----------------+------------+--------------------------------------------+--------
  CA     | ca.crt           |                 | 2033/01/17 | num certs: 1                               |
  Node   | node.crt         | node.key        | 2028/01/14 | addresses: localhost,vultr,192.168.10.10 |
  Client | client.root.crt  | client.root.key | 2028/01/14 | user: root                                 |
(3 rows)

Una volta terminato, puoi procedere al passaggio successivo.

Avvia CockroachDB Cluster

A questo punto tutti i certificati sono pronti per avviare il cluster CockroachDB.

Sul nodo 1, esegui il comando seguente per pubblicizzare il Secure CockroachDB Cluster:

cockroach start --background --certs-dir=certs --advertise-host=192.168.10.10 --join=192.168.10.10,192.168.10.11,192.168.10.12 --background

Dovresti ottenere il seguente output.

* WARNING: Running a server without --sql-addr, with a combined RPC/SQL listener, is deprecated.
* This feature will be removed in the next version of CockroachDB.
*
*
* INFO: initial startup completed.
* Node will now attempt to join a running cluster, or wait for `cockroach init`.
* Client connections will be accepted after this completes successfully.
* Check the log file(s) for progress. 

Successivamente, inizializza il cluster con il comando seguente.

cockroach init --certs-dir=certs --host=192.168.10.10

Per impostazione predefinita, il cluster CockroachDB è in ascolto sulla porta 26257. Puoi verificarlo con il seguente comando.

ss -antpl | grep 26257

Otterrai il seguente output.

LISTEN 0      4096               *:26257            *:*    users:(("cockroach",pid=86868,fd=25))

Puoi anche controllare lo stato del cluster con il seguente comando:

cockroach node status --certs-dir=certs --host=192.168.10.10

Dovresti ottenere il seguente output:

  id |        address        |      sql_address      |  build  |              started_at              |              updated_at              | locality | is_available | is_live
-----+-----------------------+-----------------------+---------+--------------------------------------+--------------------------------------+----------+--------------+----------
   1 | 192.168.10.10:26257 | 192.168.10.10:26257 | v22.2.2 | 2023-01-10 07:19:44.009519 +0000 UTC | 2023-01-10 07:20:24.521341 +0000 UTC |          | true         | true
(1 row)

Una volta terminato, puoi procedere al passaggio successivo.

Aggiungi i nodi rimanenti al cluster

Successivamente, dovrai aggiungere entrambi i nodi al cluster CockroachDB.

Sul nodo2, esegui il comando seguente per aggiungerlo al cluster CockroachDB.

cockroach start --background --certs-dir=certs --advertise-host=192.168.10.11 --listen-addr=192.168.10.11 --join=192.168.10.10:26257

Sul nodo 3, esegui il comando seguente per aggiungerlo al cluster CockroachDB.

cockroach start --background --certs-dir=certs --advertise-host=192.168.10.12 --listen-addr=192.168.10.12 --join=192.168.10.10:26257

Successivamente, torna al nodo1 e controlla lo stato del cluster utilizzando il seguente comando:

cockroach node status --certs-dir=certs --host=192.168.10.10

Dovresti vedere che tutti i nodi sono stati aggiunti al cluster.

  id |        address        |      sql_address      |  build  |              started_at              |              updated_at              | locality | is_available | is_live
-----+-----------------------+-----------------------+---------+--------------------------------------+--------------------------------------+----------+--------------+----------
   1 | 192.168.10.10:26257 | 192.168.10.10:26257 | v22.2.2 | 2023-01-10 07:19:44.009519 +0000 UTC | 2023-01-10 07:21:27.529911 +0000 UTC |          | true         | true
   2 | 192.168.10.11:26257  | 192.168.10.11:26257  | v22.2.2 | 2023-01-10 07:21:04.206015 +0000 UTC | 2023-01-10 07:21:26.718227 +0000 UTC |          | true         | true
   3 | 192.168.10.12:26257 | 192.168.10.12:26257 | v22.2.2 | 2023-01-10 07:21:17.704146 +0000 UTC | 2023-01-10 07:21:26.718768 +0000 UTC |          | true         | true

A questo punto, il cluster CockroachDB è avviato e in ascolto sulla porta 8080. Ora puoi procedere al passaggio successivo.

Accedi alla dashboard di CockroachDB

CockroachDB fornisce un'interfaccia web semplice e facile da usare per monitorare il cluster. Prima di accedere all'interfaccia web di CockroachDB, dovrai creare un utente amministratore e impostarne una password.

Sul nodo1, accedi alla shell SQL cockroachdb con il seguente comando:

cockroach sql --certs-dir=certs --host=192.168.10.10

Successivamente, crea un utente denominato user1 e imposta la password con il seguente comando:

[email :26257/defaultdb> CREATE USER user1 WITH PASSWORD 'securepassword';

Successivamente, esci dalla shell SQL utilizzando il comando seguente.

[email :26257/defaultdb> exit;

Ora apri il tuo browser web e accedi all'interfaccia web di CockroachDB utilizzando l'URL https://node1-ip-address:8080. Dovresti vedere la seguente pagina:

Fornisci il nome utente e la password dell'amministratore e fai clic sul pulsante ACCEDI. Dovresti vedere la dashboard di CockroachDB nella pagina seguente:

Verificare la replica del database in Custer

Successivamente, dovrai verificare se il database è replicato tra tutti i nodi o meno.

Sul nodo1, accedi alla shell SQL con il seguente comando:

cockroach sql --certs-dir=certs --host=192.168.10.10

Successivamente, crea un database denominato wpdb1 e wpdb2 con il seguente comando:

create database wpdb1;
create database wpdb2;

Successivamente, verifica i database con il seguente comando:

show databases;

Dovresti vedere tutti i database nel seguente output:

  database_name | owner | primary_region | secondary_region | regions | survival_goal
----------------+-------+----------------+------------------+---------+----------------
  defaultdb     | root  | NULL           | NULL             | {}      | NULL
  postgres      | root  | NULL           | NULL             | {}      | NULL
  system        | node  | NULL           | NULL             | {}      | NULL
  wpdb1         | root  | NULL           | NULL             | {}      | NULL
  wpdb2         | root  | NULL           | NULL             | {}      | NULL
(5 rows)


Time: 3ms total (execution 3ms / network 1ms)

Successivamente, vai al Nodo2 e verifica se il database è replicato o meno.

Sul nodo2, accedi alla shell SQL con il seguente comando:

cockroach sql --certs-dir=certs --host=192.168.10.11

Eseguire il comando seguente per mostrare i database:

show databases;

Dovresti vedere wpdb1 e wpdb2 nel seguente output:

  database_name | owner | primary_region | secondary_region | regions | survival_goal
----------------+-------+----------------+------------------+---------+----------------
  defaultdb     | root  | NULL           | NULL             | {}      | NULL
  postgres      | root  | NULL           | NULL             | {}      | NULL
  system        | node  | NULL           | NULL             | {}      | NULL
  wpdb1         | root  | NULL           | NULL             | {}      | NULL
  wpdb2         | root  | NULL           | NULL             | {}      | NULL
(5 rows)


Time: 7ms total (execution 6ms / network 1ms)

L'output precedente indica che la replica del database funziona sul cluster CockroachDB.

Conclusione

Questa guida spiega come installare e configurare un cluster CockroachDB sicuro sul server Ubuntu 22.04. Ora puoi ridimensionare facilmente il tuo cluster aggiungendo ulteriori nodi al cluster. Sentiti libero di chiedermi se hai qualche domanda. Per maggiori informazioni potete visitare la documentazione ufficiale di CockroachDB.

Articoli correlati: