So installierst du CockroachDB Cluster unter Debian 12

CockroachDB ist eine verteilte und skalierbare Open-Source-SQL-Datenbank für Cloud-Anwendungen. CockroachDB bietet Konsistenz der nächsten Stufe, eine replizierte SQL-Datenbank und einen transaktionalen Datenspeicher.

CockroachDB speichert deine Daten an mehreren Orten und beschleunigt so die Datenbereitstellung. Außerdem ist sie einfach zu skalieren und bietet hohe Verfügbarkeit und Fehlertoleranz für deine Anwendungen.

In dieser Anleitung zeigen wir dir, wie du CockroachDB auf Debian 12-Servern installierst. Anschließend zeigen wir dir, wie du den CockroachDB-Cluster mit mehreren Debian-Servern initialisierst.

Voraussetzungen

Bevor du fortfährst, musst du sicherstellen, dass du Folgendes hast:

  • Zwei oder mehr Debian 12-Server, die sich über ein lokales Netzwerk miteinander verbinden.
  • Einen Nicht-Root-Benutzer mit Administrator-Rechten.
  • Auf jedem Server ist ein FQDN konfiguriert.

CockroachDB installieren

CockroachDB ist ein verteiltes und skalierbares SQL-Datenbanksystem. Bevor du den CockroachDB-Cluster einrichtest, musst du die CockroachDB-Anwendung auf jedem deiner Server installieren.

Jetzt wirst du CockroachDB auf jedem deiner Debian-Server installieren.

Erstelle zunächst einen neuen Systembenutzer cockroach mit dem Standard-Home-Verzeichnis /opt/cockroachdb.

sudo adduser --home /opt/cockroachdb --system --group cockroach
sudo chown -R cockroach:cockroach /opt/cockroachdb

Lade die neueste Version von CockroachDB mit dem unten stehenden curl-Befehl herunter. Besuche unbedingt die CockroachDB-Downloadseite, um den Link zur neuesten Version von CockroachDB zu erhalten.

curl https://binaries.cockroachdb.com/cockroach-v23.1.14.linux-amd64.tgz --output cockroach-v23.1.14.linux-amd64.tgz

Nach dem Download entpackst du die Datei cockroach-v23.1.14.linux-amd64.tgz und kopierst die CockroachDB-Binärdatei in das Verzeichnis /usr/bin/.

tar -xzf cockroach-v23.1.14.linux-amd64.tgz
cp -i cockroach-v23.1.14.linux-amd64/cockroach /usr/bin/

Überprüfe abschließend die CockroachDB-Version mit dem unten stehenden Befehl.

cockroach --version

Unten siehst du, dass CockroachDB v23.1.14 installiert ist, also die neueste Version zum aktuellen Zeitpunkt.

Version prüfen

UFW einrichten

Nachdem du CockroachDB installiert hast, musst du UFW installieren, um deine Server zu sichern. Anschließend musst du die TCP-Ports 8080 und 26257 öffnen, die vom CockroachDB-Cluster verwendet werden sollen.

Installiere das UFW-Paket auf deinem Debian-Server mit dem unten stehenden Befehl.

sudo apt install ufw -y

ufw installieren

Füge nun das OpenSSH-Profil hinzu und aktiviere UFW, indem du den unten stehenden Befehl ausführst. Gib y ein, um UFW zu starten und zu aktivieren.

sudo ufw allow OpenSSH
sudo ufw enable

Sobald UFW aktiviert ist, siehst du die Ausgabe „Firewall ist aktiv und wird beim Systemstart aktiviert“.

ufw aktivieren

Als Nächstes fügst du die TCP-Ports 8080 und 26257 mit dem folgenden Befehl zur UFW hinzu. Diese TCP-Ports werden von dem CockroachDB-Cluster verwendet.

sudo ufw allow 8080/tcp
sudo ufw allow 26257/tcp

Überprüfe abschließend den UFW-Status und die Liste der aktivierten Regeln mit dem folgenden Befehl. Du wirst sehen, dass UFW den Status Aktiv hat und die OpenSSH-Ports 8080/tcp und 26257/tcp aktiviert sind.

sudo ufw status

ufw-Einrichtung

Erzeugen von Zertifikaten

Bevor du die Zertifikate für den CockroachDB-Cluster erstellst, führe den folgenden Befehl aus, um neue Verzeichnisse certs und private in /opt/cockroachdb zu erstellen, in denen deine Zertifikate gespeichert werden.

mkdir -p /opt/cockroachdb/{certs,private}

Erstelle nun diese Zertifikate: CA-Zertifikat, Node-Zertifikat und Client-Zertifikat.

CA-Zertifikat generieren

Das CA-Zertifikat ist wichtig für das Signieren von Client- und Node-Zertifikaten. In diesem Abschnitt wirst du ein CA-Zertifikat auf dem Server comp1 und ein CA-Zertifikat und einen Schlüssel für den Server comp2 über scp erzeugen. Stelle also sicher, dass du SSH-Zugriff auf den comp2-Server hast.

Führe den folgenden Befehl aus, um ein CA-Zertifikat auf dem Server comp1 zu erzeugen.

cockroach cert create-ca \
--certs-dir=/opt/cockroachdb/certs \
--ca-key=/opt/cockroachdb/private/ca.key

erzeugen ca

Sobald die CA generiert ist, kopierst du sowohl ca.key als auch ca.crt auf den Server comp2.

scp /opt/cockroachdb/private/ca.key root@comp2.hwdomain.lan:/opt/cockroachdb/private/
scp /opt/cockroachdb/certs/ca.crt root@comp2.hwdomain.lan:/opt/cockroachdb/certs/

Zeugnisse kopieren

Client generieren

Nach der Erstellung des CA-Zertifikats benötigst du als Nächstes ein Client-Zertifikat. Dieses wird verwendet, um eine sichere Verbindung zum CockroachDB-Cluster über TLS herzustellen.

Auf dem Server comp1 führst du den folgenden Befehl aus, um das Client-Zertifikat für den Standardbenutzer root zu erstellen.

cockroach cert create-client \
root \
--certs-dir=/opt/cockroachdb/certs \
--ca-key=/opt/cockroachdb/private/ca.key

Sobald der Vorgang abgeschlossen ist, ist dein Client-Zertifikat unter /opt/cockroachdb/certs/client.root.crt und /opt/cockroachdb/certs/client.root.key verfügbar.

Client-Zertifikate erstellen

Node generieren

Als Letztes musst du Node-Zertifikate erzeugen, die ebenfalls von der Anzahl der Server im Cluster abhängen. In diesem Beispiel werde ich ein Node-Zertifikat für die Server comp1 und comp2 erzeugen.

Führe den folgenden Befehl auf dem Server comp1 aus, um ein Node-Zertifikat für comp1 zu erstellen. Achte darauf, dass du die IP-Adresse und den fqdn mit deinen Serverdaten änderst.

cockroach cert create-node \
comp1.hwdomain.lan \
192.168.5.21 \
localhost \
--certs-dir=/opt/cockroachdb/certs \
--ca-key=/opt/cockroachdb/private/ca.key

node cert comp1

Gehe zum Server comp2 und führe den unten stehenden Befehl aus, um ein Node-Zertifikat für comp2 zu erstellen. Ändere auch die Details der IP-Adresse und des fqdn des comp2-Servers.

cockroach cert create-node \
comp2.hwdomain.lan \
192.168.5.22 \
localhost \
--certs-dir=/opt/cockroachdb/certs \
--ca-key=/opt/cockroachdb/private/ca.key

node cert comp2

Berechtigung für Zertifikate einrichten

Wenn alle Zertifikate erstellt sind, führe den folgenden Befehl aus, um dem Benutzer cockroach den Zugriff auf die Zertifikatsdateien zu ermöglichen. Achte darauf, dass du diesen Befehl sowohl auf dem Server comp1 als auch auf dem Server comp2 ausführst.

sudo chown -R cockroach:cockroach /opt/cockroachdb/certs
sudo chown -R cockroach:cockroach /opt/cockroachdb/private

Einrichten des Systemd-Dienstes

Nachdem du die Zertifikate für CockroachDB erstellt hast, musst du im nächsten Schritt die CockroachDB-Dienstdatei für jeden Server erstellen. Starten und aktivieren Sie dann den CockroachDB-Dienst.

CockroachDB-Dienst für comp1

Erstelle auf dem Server comp1 einen neuen systemd-Dienst /etc/systemd/system/cockroachdb.service mit dem unten stehenden nano-Editor-Befehl.

sudo nano /etc/systemd/system/cockroachdb.service

Füge diese Dienstkonfigurationen hinzu. Achte darauf, dass du den Parameter –advertise-addr durch die IP-Adresse von comp1 ersetzt.

[Unit]
Description=Cockroach Database cluster node
Requires=network.target
[Service]
Type=notify
WorkingDirectory=/opt/cockroachdb
ExecStart=/usr/bin/cockroach start --certs-dir=/opt/cockroachdb/certs --advertise-addr=192.168.5.21 --join=192.168.5.21,192.168.5.22
TimeoutStopSec=60
Restart=always
RestartSec=10
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=cockroach
User=cockroach

[Install]
WantedBy=default.target

Speichere und beende die Datei, wenn du fertig bist.

CockroachDB Dienst für comp2

Gehe zum Server comp2 und führe den unten stehenden nano-Editor-Befehl aus, um eine neue Dienstdatei /etc/systemd/system/cockroachdb.service zu erstellen.

sudo nano /etc/systemd/system/cockroachdb.service

Füge die unten stehende Konfiguration ein und achte darauf, dass du den Parameter –advertise-addr mit der IP-Adresse von comp2 änderst.

[Unit]
Description=Cockroach Database cluster node
Requires=network.target
[Service]
Type=notify
WorkingDirectory=/opt/cockroachdb
ExecStart=/usr/bin/cockroach start --certs-dir=/opt/cockroachdb/certs --advertise-addr=192.168.5.22 --join=192.168.5.21,192.168.5.22
TimeoutStopSec=60
Restart=always
RestartSec=10
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=cockroach
User=cockroach

[Install]
WantedBy=default.target

Wenn du fertig bist, speichere die Datei und beende den Editor.

CockroachDB starten

Nachdem du die CockroachDB-Dienstdatei erstellt hast, kannst du nun deine Änderungen anwenden und den CocroachDB-Dienst starten und aktivieren.

Führe den folgenden Befehl aus, um den systemd manager neu zu laden und den neuen Dienst für CockroachDB anzuwenden.

sudo systemctl daemon-reload

Starte und aktiviere nun den CockroachDB-Dienst auf den Servern comp1 und comp2 mit dem folgenden Befehl.

sudo systemctl start cockroachdb
sudo systemctl enable cockroachdb

start enable cockroachdb service

Überprüfe abschließend den CockroachDB-Dienst mit dem folgenden Befehl, um sicherzustellen, dass der Dienst läuft.

sudo systemctl status cockroachdb

Vergewissere dich also, dass der CockroachDB-Dienst auf beiden Debian-Servern läuft.

cockroachdb service comp1 status

cockroachdb service comp2 status

CockroachDB-Cluster initialisieren

Jetzt, da der CockroachDB-Dienst auf beiden Servern läuft, kannst du den CockroachDB-Cluster auf dem Server comp1 initialisieren. Anschließend erstellst du den Admin-Benutzer für CockroachDB und rufst das CockroachDB Web-Administrations-Dashboard auf.

Führe auf dem Server comp1 den folgenden Befehl aus, um den CockroachDB-Cluster zu initialisieren. Wenn der Vorgang abgeschlossen ist, solltest du die Ausgabe„Cluster erfolgreich initialisiert“ erhalten.

cockroach init --certs-dir=/opt/cockroachdb/certs --host=192.168.5.21:26257

Zusätzlich kannst du den Initialisierungsprozess auch über die CockroachDB-Protokolldatei mit dem folgenden Befehl überprüfen.

grep 'node starting' /opt/cockroachdb/cockroach-data/logs/cockroach.log -A 11

Die Ausgabe„CockroachDB node starting...“ bestätigt, dass der Cluster initialisiert ist.

initialisierter Cluster

Als nächstes überprüfst du deinen CockroachDB-Cluster, indem du den folgenden Befehl ausführst. Mit der Option ls erhältst du eine Liste der Server innerhalb des Clusters, während du mit dem Befehl status den Status des CockroachDB-Clusters überprüfst.

cockroach node --certs-dir=/opt/cockroachdb/certs --host=192.168.5.21 ls
cockroach node --certs-dir=/opt/cockroachdb/certs --host=192.168.5.21 status

Unten siehst du die Anzahl der Server im CockroachDB-Cluster und den Status der einzelnen Server.

cockroachdb cluster status

Jetzt, wo der Cluster läuft, führst du den folgenden Befehl aus, um dich am CockroachDB-Server anzumelden. Achte darauf, dass du diesen Befehl vom Server comp1 aus ausführst, da dein Client-Zertifikat auf dem Rechner comp1 verfügbar ist.

cockroach sql --certs-dir=/opt/cockroachdb/certs --host=192.168.5.21:26257

Sobald du verbunden bist, siehst du die CockroachDB-Eingabeaufforderung wie die folgende:

cockroachdb sql shell

Führe die folgenden Abfragen aus, um einen neuen Benutzer bob mit dem Passwort p4ssw0rd zu erstellen. Erteile dann dem Benutzer bob die Admin-Rechte.

CREATE USER bob WITH PASSWORD 'p4ssw0rd';
GRANT admin TO bob;

Drücke Strg+d, um den CockroachDB-Server zu verlassen.

Admin-Benutzer anlegen

Öffne deinen Webbrowser auf deinem lokalen Rechner und rufe die IP-Adresse von comp1 mit Port 8080 (https://192.168.5.21:8080) auf. Du wirst auf die Anmeldeseite von CockroachDB weitergeleitet.

Melde dich mit dem Benutzer bob und dem Passwort p4ssw0rd an.

Login-Seite

Sobald du eingeloggt bist, siehst du das CockroachDB-Administrations-Dashboard wie folgt:

cockroachdb dashboard

Fazit

Damit hast du die Installation des CockroachDB-Clusters auf Debian 12-Servern abgeschlossen. Außerdem hast du den Admin-Benutzer für CockroachDB erstellt und das CockroachDB Web-Administrations-Dashboard aufgerufen. Jetzt kannst du eine neue Datenbank und einen neuen Benutzer anlegen und das CockroachDB-Webadministrations-Dashboard zur Verwaltung der CockroachDB-Installation nutzen.

Das könnte dich auch interessieren …