CockroachDB ist eine Open-Source- und Cloud-native SQL-Datenbank, die von den CockroachLabs entwickelt wurde. Es ist eine verteilte SQL-Datenbank, die auf dem Transaktions- und Schlüsselwertspeicher basiert. CockroachDB ist eine skalierbare SQL-Datenbank, die mit der Google Spanner-Datenbank verglichen wurde. Es basiert auf dem PostgreSQL-Protokoll und ist produktionsreif.
In diesem Tutorial zeigen wir Ihnen, wie Sie den Secure CockroachDB-Cluster unter Ubuntu 18.04 einrichten. Sie erfahren, wie Sie den sicheren Cluster einrichten, auf das CockroachDB-Admin-Dashboard zugreifen, einen neuen Benutzer auf CockroachDB erstellen und eine Datenbank auf CockroachDB erstellen und anzeigen.
Voraussetzungen
Um den CockroachDB-Cluster auszuführen, benötigen wir mehrere Server. Und wir werden drei Ubuntu 18.04-Server mit den detaillierten Hostnamen und IP-Adressen wie unten verwenden.
node1 10.5.5.21
node2 10.5.5.22
node3 10.5.5.23
Was werden wir tun?
- NTP-Server mit Chrony einrichtensystemctl chrony neu starten
systemctl chrony aktivieren - Laden Sie CockroachDB herunter und installieren Sie es
- Zertifikate erstellen
- CockroachDB-Cluster initialisieren
- Knoten zum CockroachDB-Cluster hinzufügen
- Testen
Schritt 1 – NTP-Server mit Chrony einrichten
Erstens müssen wir die Zeit zwischen den Servern im Cluster synchron halten. Also müssen wir das NTP-Paket auf allen Servern installieren. Und für diese Anleitung verwenden wir chrony.
Installieren Sie das Chrony-Paket mit dem folgenden Befehl auf allen Servern.
sudo apt install chrony -y
Gehen Sie nach Abschluss der Installation in das Konfigurationsverzeichnis „/etc/chrony/“ und bearbeiten Sie die Datei „chrony.conf“.
cd /etc/chrony/
vim chrony.conf
Löschen Sie den standardmäßigen NTP-Pool und ersetzen Sie ihn durch Ihren eigenen Länderpool.
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
Speichern und schließen.
Starten Sie nun den Chrony-Dienst neu und fügen Sie dann Chrony zum Startdienst hinzu.
systemctl restart chrony
systemctl enable chrony
Als Ergebnis wird die Zeit zwischen den Servern mit denselben NTP-Pool-Servern synchronisiert.
Schritt 2 – Laden Sie CockroachDB herunter und installieren Sie es
In diesem Schritt werden wir die CockroachDB herunterladen und auf allen Servern installieren. Führen Sie also alle Befehle auf allen Ihren Cluster-Servern aus.
Erstellen Sie ein neues Verzeichnis namens 'binary' und gehen Sie hinein.
mkdir -p binary; cd binary
Laden Sie die komprimierte Cockroachdb-Binärdatei für Linux herunter und extrahieren Sie sie.
wget https://binaries.cockroachdb.com/cockroach-latest.linux-amd64.tgz
tar -xvzf cockroach-latest.linux-amd64.tgz
Kopieren Sie nun die Binärdatei ‚cockroach‘ in das Verzeichnis ‚/etc/local/bin‘.
cp cockroach-*/cockroach /usr/local/bin/
Danach können Sie den 'cockroach'-Befehl ausführen und den grundlegenden Befehl nach Hilfe durchsuchen, die Version überprüfen usw.
cockroach version
Die CockroachDB wurde auf allen Servern installiert.
Schritt 3 – Zertifikate erstellen
Jetzt werden wir einige Zertifikate generieren, um den CockrouchDB-Cluster zu sichern. Wir können OpenSSL oder die Kakerlaken-Befehlszeile zum Generieren von Zertifikatsdateien verwenden.
Wir generieren das CA-Zertifikat und den Schlüssel sowie das Generierungszertifikat für den Benutzerstamm und das Zertifikat für jeden Knoten im Cluster.
Erstellen Sie das Zertifikatsverzeichnis ‚~/.cockroach-certs‘ und die Umgebungsvariable dafür.
mkdir -p ${HOME}/.cockroach-certs/
export COCKROACH_CERTS_DIR='${HOME}/.cockroach-certs/'
Zertifizierungsstelle erstellen und auf alle Knoten kopieren
Erstellen Sie auf dem Server „node1“ die Zertifizierungsstelle mit dem untenstehenden Kakerlaken-Befehl.
cockroach cert create-ca \
--certs-dir=$COCKROACH_CERTS_DIR \
--ca-key=$COCKROACH_CERTS_DIR/ca.key
Und Sie erhalten die 'ca.key' und 'ca.crt' im Verzeichnis '~/.cockroach-certs'.
Kopieren Sie danach das ca-Zertifikat und den Schlüssel auf alle Server, indem Sie den scp-Befehl wie unten beschrieben verwenden.
Auf den 'node2'-Server kopieren.
scp ~/.cockroach-certs/ca.crt ~/.cockroach-certs/ca.key [email protected]:~/.cockroach-certs/
Auf den 'node3'-Server kopieren.
scp ~/.cockroach-certs/ca.crt ~/.cockroach-certs/ca.key [email protected]:~/.cockroach-certs/
Stellen Sie nun sicher, dass das CA-Zertifikat und der Schlüssel auf alle Hostserver hochgeladen wurden.
Client-Zertifikate erstellen
Nach dem Erstellen der Zertifizierungsstelle müssen wir das Client-Zertifikat generieren. Das Client-Zertifikat wird verwendet, um die Kommunikation zwischen der integrierten SQL-Shell und dem Cluster zu sichern.
Generieren Sie das Client-Zertifikat auf allen Servern mit dem folgenden Cockroach-Befehl.
cockroach cert create-client \
root \
--certs-dir=$COCKROACH_CERTS_DIR \
--ca-key=$COCKROACH_CERTS_DIR/ca.key
Und Sie erhalten Client-Zertifikate für den Benutzerstamm „client.root.crt“ und „client.root.key“.
Serverzertifikate erstellen
Serverzertifikate werden verwendet, um die Kommunikation zwischen Servern im CockroachDB-Cluster zu sichern. Und um dem sicheren Cluster beizutreten, müssen Sie Serverzertifikate für jeden Server generieren.
Erstellen Sie auf dem Knoten 1 das Serverzertifikat mit dem folgenden Befehl.
cockroach cert create-node \
localhost \
$(hostname) \
10.5.5.21 \
--certs-dir=$COCKROACH_CERTS_DIR \
--ca-key=$COCKROACH_CERTS_DIR/ca.key
Ändern Sie die IP-Adresse mit Ihrer eigenen.
Erstellen Sie auf dem „Knoten2“ das Serverzertifikat mit dem folgenden Befehl.
cockroach cert create-node \
localhost \
$(hostname) \
10.5.5.22 \
--certs-dir=$COCKROACH_CERTS_DIR \
--ca-key=$COCKROACH_CERTS_DIR/ca.key
Ändern Sie die IP-Adresse mit Ihrer eigenen.
Erstellen Sie auf dem „Knoten3“ das Serverzertifikat mit dem folgenden Befehl.
cockroach cert create-node \
localhost \
$(hostname) \
10.5.5.23 \
--certs-dir=$COCKROACH_CERTS_DIR \
--ca-key=$COCKROACH_CERTS_DIR/ca.key
Ändern Sie die IP-Adresse mit Ihrer eigenen.
Jetzt erhalten Sie die Serverzertifikate „node.crt“ und „node.key“ im Verzeichnis „~/.cockroach-certs“.
Schritt 4 – Sicheres CockroachDB-Cluster starten
Nachdem wir einige SSL-Zertifikate erstellt haben, initialisieren wir den Secure CockroachDB-Cluster vom „node1“-Server.
Führen Sie den folgenden Befehl auf dem Server „node1“ aus.
cockroach start \
--background --certs-dir=$COCKROACH_CERTS_DIR \
--advertise-host=10.5.5.21 --listen-addr=10.5.5.21
Stellen Sie sicher, dass kein Fehler vorliegt.
Überprüfen Sie danach den Status des Cluster-Knotens, indem Sie den Kakerlaken-Befehl unten ausführen.
cockroach node status --host=10.5.5.21
Sie erhalten den Knoten 1 mit der IP-Adresse 10.5.5.21, der mit CockroachDB v2.1.6 ausgeführt wird.
Schritt 5 – Knoten zum Cluster hinzufügen
Als Nächstes fügen wir „node2“ und „node3“ dem sicheren Cluster „CockroachDB“ hinzu.
Stellen Sie sicher, dass sich die Zertifizierungsstelle und das Serverzertifikat im Verzeichnis ~/.cockroach-certs befinden.
ls -lah ~/.cockroah-certs/
Führen Sie nun den folgenden Befehl aus, um den „node2“ mit der IP-Adresse 10.5.5.22 hinzuzufügen. Fügen Sie es dem CockroachDB-Cluster hinzu.
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
Wenn es fertig ist, gehen Sie zu 'node3' und führen Sie den folgenden Befehl aus.
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
Ändern Sie die IP-Adresse mit Ihrer eigenen.
Jetzt wurden „node2“ und „node3“ zum Secure CockroachDB-Cluster hinzugefügt. Überprüfen Sie es vom Server „node1“ mit dem folgenden Befehl.
cockroach node status --host=10.5.5.21
Und Sie erhalten drei verschiedene Server, auf denen die Kakerlake v2.1.6 ausgeführt wird.
Schritt 6 – Testen
Für diesen letzten Schritt testen wir unsere CockroachDB Secure Cluster-Installation, indem wir auf das Admin-Dashboard zugreifen und die Datenbankreplikation zwischen Servern testen.
Testen des CockroachDB-Dashboards
Die CockroachDB bietet eine schöne Dashboard-Benutzeroberfläche zur Überwachung des Clusters. Öffnen Sie Ihren Webbrowser und geben Sie die Server-IP-Adresse gefolgt vom Port 8080 ein.
https://10.5.5.21:8080/
Und Sie erhalten die Anmeldeseite von CockroachDB wie folgt.
Um sich beim Dashboard anzumelden, müssen wir einen Benutzer in der CockroachDB-Datenbank erstellen.
Kehren Sie zu Ihrem Terminal „node1“ zurück und melden Sie sich mit dem folgenden Befehl bei der Cockroachdb-SQL-Shell an.
cockroach sql --certs-dir=$COCKROACH_CERTS_DIR \
--host=10.5.5.21
Erstellen Sie jetzt einen neuen Benutzer namens „hakase“ mit dem Passwort „[email protected]#“ mithilfe der folgenden Abfrage.
CREATE USER hakase WITH PASSWORD '[email protected]#';
Geben Sie '\q' ein, um die SQL-Shell von CockroachDB zu verlassen.
Kehren Sie nun zum Webbrowser zurück und geben Sie auf der Anmeldeseite den Benutzer „hakase“ mit dem Passwort „[email protected]#“ ein und klicken Sie auf die Schaltfläche „Anmelden“.
Und Sie erhalten das Admin-Dashboard von CockroachDB wie folgt.
Datenbankreplikation testen
Jetzt werden wir die Datenbankreplikation zwischen Servern auf dem CockroachDB-Cluster testen, indem wir die Datenbank auf „Knoten1“ erstellen und die Datenbank von „Knoten2“ oder „Knoten3“ überprüfen.
Greifen Sie auf 'node1' mit dem folgenden Befehl auf die SQL-Shell von CockroachDB zu.
cockroach sql --certs-dir=$COCKROACH_CERTS_DIR \
--host=10.5.5.21
Erstellen Sie zwei Datenbanken „hakasedb“ und „hakasedb2“, indem Sie die folgenden Abfragen verwenden.
create database hakasedb;
create database hakasedb2;
Drucken Sie jetzt die Datenbankliste und stellen Sie sicher, dass Sie zwei Datenbanken erhalten, die wir gerade erstellt haben.
show databases;
Melden Sie sich als Nächstes beim Server „node2“ an und greifen Sie mit dem folgenden Befehl auf die CockroachDB-SQL-Shell zu.
cockroach sql --certs-dir=$COCKROACH_CERTS_DIR \
--host=10.5.5.22
Überprüfen Sie die Datenbankliste.
show databases;
Und Sie erhalten „hakasedb“ und „hakasedb2“ wurde auf den „node2“-Server repliziert.
Und schließlich wurde die Installation und Konfiguration von Secure CockroachDB Cluster mit Ubuntu 18.04 erfolgreich abgeschlossen.