een veilige CockroachDB Cluster op Ubuntu Server opzetten

CockroachDB is een open bron en cloud-native SQL database, ontwikkeld door de CockroachLabs. Het is een gedistribueerde SQL databank die gebouwd is op de transactionele en key-value store. CockroachDB is schaalbare SQL databank die vergeleken is met Google Spanner databank. Het is gebaseerd op de PostgreSQL protocoldraad en productieklaar.

In deze zelfstudie laten we je zien hoe je de Veilige CockroachDB Cluster opzet op Ubuntu 18.04. Je leert hoe je de beveiligde cluster opzet, toegang krijgt tot het CockroachDB admin dashboard, een nieuwe gebruiker op CockroachDB aanmaakt, databanken op CockroachDB aanmaakt en toont.

Vereisten

Om de CockroachDB Cluster te draaien, hebben we meerdere servers nodig. En we zullen drie Ubuntu 18.04 servers gebruiken met de detail hostname en IP adres zoals hieronder.

node1   10.5.5.21
node2   10.5.5.22
node3   10.5.5.23

Wat zullen we doen?

  • Stel de NTP Server in met Chronysystemctl restart chrony
    systemctl enable chrony
  • Download en installeer CockroachDB
  • Certificaten aanmaken
  • Initialiseer CockroachDB Cluster
  • Voeg Node toe aan de CockroachDB Cluster
  • Testen van

Stap 1 – NTP server instellen met Chrony

Eerst moeten we de tijd tussen de servers op de cluster gesynchroniseerd houden. Dus moeten we het NTP pakket op alle servers installeren. En voor deze gids zullen we chrony gebruiken.

Installeer het chrony pakket op alle servers met het volgende commando.

sudo apt install chrony -y

Zodra de installatie voltooid is, ga je naar de configuratiemap ‘/etc/chrony/’ en bewerk je het bestand ‘chrony.conf’.

cd /etc/chrony/
vim chrony.conf

Verwijder de standaard NTP pool en vervang door je eigen landenpool.

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

Bewaar en sluit.

Start nu de chrony dienst opnieuw op en voeg dan chrony toe aan de opstartdienst.

systemctl restart chrony
systemctl enable chrony

Als resultaat zal de tijd tussen de servers gesynchroniseerd worden met dezelfde NTP pool servers.

Start en schakel Chrony in

Stap 2 – Download en installeer CockroachDB

In deze stap downloaden en installeren we de CockroachDB op alle servers. Voer dus alle commando’s uit op al je clusterservers.

Maak een nieuwe map met de naam ‘binary’ en stap erin.

mkdir -p binary; cd binary

Download het gecomprimeerde binaire bestand cockroachdb voor Linux en pak het uit.

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

Kopieer nu het ‘cockroach’ binaire bestand naar de ‘/etc/local/bin’ directory.

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

Daarna kun je het ‘cockroach’ commando uitvoeren en het basiscommando verkennen voor hulp, de versie controleren enz.

cockroach version

De CockroachDB is nu op alle servers geïnstalleerd.

Installeer CockroachDB

Stap 3 – Certificaten maken

Nu gaan we een aantal certificaten aanmaken om de CockrouchDB Cluster te beveiligen. We kunnen OpenSSL of de kakkerlak opdrachtregel gebruiken om certificaatbestanden te genereren.

We zullen het CA certificaat en sleutel genereren, en het genereren certificaat voor user root en certificaat voor elk knooppunt op het cluster.

Maak de certificaat directory ‘~/.cockroach-certs’ en de omgevingsvariabele ervoor.

mkdir -p ${HOME}/.cockroach-certs/
export COCKROACH_CERTS_DIR='${HOME}/.cockroach-certs/'

Maak CA en kopieer naar alle knooppunten

Op de ‘node1’ server maak je de certificaat autoriteit met het onderstaande kakkerlak commando.

cockroach cert create-ca \
--certs-dir=$COCKROACH_CERTS_DIR \
--ca-key=$COCKROACH_CERTS_DIR/ca.key

En je krijgt de ‘ca.key’ en ‘ca.crt’ op de ‘~/.cockroach-certs’ directory.

Maak CA en kopieer naar alle knooppunten

Kopieer daarna het ca certificaat en de sleutel naar alle servers met het scp commando zoals hieronder.

Kopieer naar de ‘node2’ server.

scp ~/.cockroach-certs/ca.crt ~/.cockroach-certs/ca.key [email protected]:~/.cockroach-certs/

Kopieer naar de ‘node3’ server.

scp ~/.cockroach-certs/ca.crt ~/.cockroach-certs/ca.key [email protected]:~/.cockroach-certs/

Zorg er nu voor dat het CA certificaat en de sleutel naar alle host servers geüpload zijn.

Controleer CA certificaat

Client certificaten maken

Na het aanmaken van de certificaat autoriteit, moeten we het client certificaat aanmaken. Het client certificaat zal gebruikt worden om de communicatie tussen de ingebouwde SQL shell en het cluster te beveiligen.

Genereer het cliëntcertificaat op alle servers met het volgende kakkerlak commando.

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

En je krijgt cliëntcertificaten voor user root ‘client.root.crt’ en ‘client.root.key’.

Client Certificaten maken

Server certificaten maken

Server certificaten zullen gebruikt worden om de communicatie tussen servers op het CockroachDB cluster te beveiligen. En om deel uit te maken van het beveiligde cluster, moet je voor elke server server servercertificaten aanmaken.

Maak op de ‘node1’ het servercertificaat met het volgende commando.

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

Verander het IP adres met je eigen.

Verander IP adres

Maak op de ‘node2’ het servercertificaat aan met het volgende commando.

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

Wijzig het IP adres met je eigen adres.

IP adres configuratie

Op de ‘node3’ maak je het servercertificaat aan met het volgende commando.

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

Verander het IP adres met je eigen.

Nu krijg je server certificaten ‘node.crt’ en ‘node.key’ op de ‘~/.cockroach-certs’ directory.

Stap 4 – Veilige CockroachDB Cluster starten

Na het aanmaken van een aantal SSL certificaten, zullen we de Secure CockroachDB Cluster initialiseren vanaf de ‘node1’ server.

Voer het volgende commando uit op de ‘node1’ server.

cockroach start \
--background --certs-dir=$COCKROACH_CERTS_DIR \
--advertise-host=10.5.5.21 --listen-addr=10.5.5.21

Zorg ervoor dat er geen fout optreedt.

Controleer daarna de status van de clusterknooppunten door het onderstaande kakkerlak commando uit te voeren.

cockroach node status --host=10.5.5.21

Je krijgt dat node1 met IP adres 10.5.5.21 up and running is met CockroachDB v2.1.6.

Start het cluster

Stap 5 – Voeg node aan de Cluster toe

Nu voegen we de ‘node2’ en ‘node3’ toe aan het veilige CockroachDB cluster.

Zorg ervoor dat het CA en server certificaat in de ~/.cockroach-certs directory staan.

ls -lah ~/.cockroah-certs/

Voer nu het volgende commando uit om de ‘node2’ met IP adres 10.5.5.22 toe te voegen. Voeg het toe aan het CockroachDB cluster.

cockroach start \
--background --certs-dir=$COCKROACH_CERTS_DIR \
--advertise-host=10.5.5.22 --listen-addr=10.5.5.22 \
--join=10.5.5.21:26257

Als dat klaar is, ga je naar de ‘node3’ en voer je het volgende commando uit.

cockroach start \
--background --certs-dir=$COCKROACH_CERTS_DIR \
--advertise-host=10.5.5.23 --listen-addr=10.5.5.23 \
--join=10.5.5.21:26257

Verander het IP adres met je eigen.

Nu zijn de ‘node2’ en ‘node3’ toegevoegd aan de Veilige CockroachDB Cluster. Controleer het vanaf de ‘node1’ server met het volgende commando.

cockroach node status --host=10.5.5.21

En je krijgt drie verschillende servers is up and running de kakkerlak v2.1.6.

Knooppunt aan cluster toevoegen

Stap 6 – Testen

Bij deze laatste stap zullen we onze CockroachDB Secure Cluster installatie testen door het admin dashboard te openen en de replicatie van de databank tussen de servers te testen.

Testen van het CockroachDB Dashboard

De CockroachDB biedt een mooi dashboard UI om het cluster te bewaken. Open je web browser en typ het IP adres van de server gevolgd door poort 8080.

https://10.5.5.21:8080/

En je krijgt de CockroachDB login pagina zoals hieronder.

KakkerlakDB Dashboard

Om in te loggen op het dashboard moeten we een gebruiker aanmaken op de CockroachDB database.

Ga terug naar je ‘node1’ terminal en log in op de cockroachdb SQL shell met het volgende commando.

cockroach sql --certs-dir=$COCKROACH_CERTS_DIR \
--host=10.5.5.21

Maak nu een nieuwe gebruiker aan genaamd ‘hakase’ met wachtwoord ‘[email protected]#’ met de onderstaande query.

CREATE USER hakase WITH PASSWORD '[email protected]#';

Type ‘\q’ om de kakkerlakDB SQL shell te verlaten.

KakkerlakDB SQL schil

Ga nu terug naar de web browser en typ de gebruiker ‘hakase’ met wachtwoord ‘[email protected]#’ op de login pagina en klik op de Login knop.

Kakkerlak DB

En je krijgt het CockroachDB admin dashboard zoals hieronder.

Cluster Overview

Replicatie van databanken testen

Nu gaan we de databasereplicatie tussen de servers op de CockroachDB Cluster testen door de database op de ‘node1’ aan te maken en die van ‘node2’ of ‘node3’ te controleren.

Open op de ‘node1’ de CockroachDB SQL shell met het volgende commando.

cockroach sql --certs-dir=$COCKROACH_CERTS_DIR \
--host=10.5.5.21

Maak twee databases ‘hakasedb’ en ‘hakasedb2’ met de onderstaande query’s.

create database hakasedb;
create database hakasedb2;

Druk nu de databaselijst af en controleer of je twee databases krijgt die we zojuist gemaakt hebben.

show databases;

Kakkerlak DB cmd regel

Log vervolgens in op de ‘node2’ server en open de CockroachDB SQL shell met het volgende commando.

cockroach sql --certs-dir=$COCKROACH_CERTS_DIR \
--host=10.5.5.22

Bekijk de databanklijst.

show databases;

En je krijgt ‘hakasedb’ en ‘hakasedb2’ is gerepliceerd naar de ‘node2’ server.

Toon databanken

En tenslotte is de installatie en configuratie van Secure CockroachDB Cluster met Ubuntu 18.04 met succes voltooid.