So installierst du einen CockroachDB Cluster unter AlmaLinux 9

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.

Diese Anleitung zeigt dir, wie du einen CockroachDB-Cluster auf mehreren AlmaLinux 9 Servern installierst und erstellst. Außerdem lernst du die grundlegenden Abfragen mit CockroachDB und die Überprüfung der automatischen Replikation deiner Datenbanken.

Voraussetzung

Bevor du beginnst, solltest du sicherstellen, dass du Folgendes hast:

  • Zwei oder mehr AlmaLinux 9 Server – In dieser Demo werden wir zwei Server verwenden: srv1 mit der IP-Adresse 192.168.10.20 und srv2 mit der IP-Adresse 192.168.10.21.
  • Ein Nicht-Root-Benutzer kann den Befehl sudo ausführen, um Root-Rechte zu erhalten.

Einrichten des FQDN

Als erstes musst du für alle deine Server einen fqdn (fully qualified domain name) einrichten und sicherstellen, dass jeder fqdn auf die richtige lokale IP-Adresse zeigt.

Auf srv1 führst du den folgenden Befehl aus, um den fqdn auf srv1.hwdomain.lan einzurichten.

sudo hostnamectl set-hostname srv1.hwdomain.lan

Für srv2 führst du den folgenden Befehl aus, um den fqdn srv2.hwdomain.lan einzurichten.

sudo hostnamectl set-hostname srv2.hwdomain.lan

Öffne nun die Datei /etc/hosts mit dem folgenden Befehl des nano Editors.

sudo nano /etc/hosts

Füge die folgende Konfiguration am Ende der Zeile ein.

```ini
192.168.10.20 srv1.hwdomain.lan srv1
192.168.10.21 srv2.hwdomain.lan srv2
```

Speichere und beende die Datei, nachdem du fertig bist.

Führe abschließend den folgenden Befehl aus, um den fqdn jedes Servers zu überprüfen, und führe den Befehl ping aus, um sicherzustellen, dass jeder fqdn auf die richtige interne IP-Adresse zeigt.

sudo hostname -f
ping -c3 srv1.hwdomain.lan
ping -c3 srv2.hwdomain.lan

Der srv1-Server sollte den fqdn srv1.hwdomain.lan haben und auf die IP-Adresse 192.168.10.20 verweisen, während der srv2-Server mit dem fqdn srv2.hwdomain.lan und der IP-Adresse 192.168.10.21 konfiguriert ist.

fqdn einrichten

Herunterladen und Installieren von CockroachDB

CockroachDB kann in verschiedenen Umgebungen installiert werden. Du kannst es auf traditionelle Weise installieren, indem du das vorgefertigte Binärpaket von CockroachDB herunterlädst, oder du installierst es in einer containerisierten Umgebung wie Kubernetes.

In diesem Abschnitt wirst du CockroachDB über ein vorgefertigtes Binärpaket auf deinen AlmaLinux 9 Servern installieren.

Als erstes installierst du curl mit dem unten stehenden dnf-Befehl.

sudo dnf install curl -y

Curl installieren

Führe nun den unten stehenden Befehl aus, um das CockroachDB-Binärpaket herunterzuladen und entpacke es mit dem Befehl tar.

curl https://binaries.cockroachdb.com/cockroach-v23.1.3.linux-amd64.tgz --output cockroach-v23.1.3.linux-amd64.tgz
tar -xzf cockroach-v23.1.3.linux-amd64.tgz

Verschiebe die CockroachDB-Binärdatei cockroach-v23.1.3.linux-amd64/cockroach mit dem unten stehenden Befehl in das Verzeichnis /usr/bin/.

sudo cp -i cockroach-v23.1.3.linux-amd64/cockroach /usr/bin/

cockroachdb herunterladen

Gib abschließend den folgenden Befehl ein, um den vollständigen Pfad der Cockroach-Binärdatei und die CockroachDB-Version zu überprüfen.

which cockroach
cockroach version

cockroachdb installieren

Firewalld einrichten

Nach der Installation von CockroachDB richtest du die Firewalld ein und öffnest Port 8080 für das CockroachDB Webadministrations-Dashboard und Port 26257 für die Clusterverbindung.

Führe den folgenden Befehl firewall-cmd aus, um die Ports 8080 und 26257 zur Firewalld hinzuzufügen. Lade dann die Firewalld neu, um die Änderungen zu übernehmen.

sudo firewall-cmd --add-port={8080/tcp,26257/tcp} --permanent
sudo firewall-cmd --reload

Überprüfe nun die Liste der Firewall-Regeln mit dem unten stehenden Befehl. Du solltest sehen, dass die Ports 8080 und 26257 zur Firewalld hinzugefügt wurden.

sudo firewall-cmd --list-all

firewalld einrichten

SSL/TLS-Zertifikate generieren

Im folgenden Abschnitt wirst du mehrere Zertifikate erzeugen, die für den CockroachDB-Cluster verwendet werden. Dies kann über OpenSSL geschehen, aber du kannst auch das Cockroach-Kommandozeilen-Tool verwenden.

Im Folgenden findest du einige SSL/TLS-Zertifikate, die du erstellen wirst:

  • CA-Zertifikate: Diese werden zum Signieren aller deiner Zertifikate verwendet.
  • Client-Zertifikate: Damit kannst du dich mit dem CockroachDB-Cluster verbinden.
  • Node-Zertifikate: Du musst für jeden Server Knotenzertifikate erstellen, um einen sicheren CockroachDB-Cluster zu schaffen.

CA-Zertifikate generieren

Führe den folgenden Befehl auf den Servern srv1 und srv2 aus, um ein neues Verzeichnis /opt/cockroachdb/ zu erstellen. In diesem Verzeichnis erstellst du auch die Verzeichnisse certs und private.

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

Auf srv1 führst du den folgenden cockroach-Befehl aus, um die CA-Zertifikate zu erzeugen. Dadurch werden die CA-Zertifikate ca.crt und ca.key erzeugt.

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

CA-Zertifikat erzeugen

Führe nun den Befehl scp aus, um die CA-Zertifikate ca.crt und ca.key auf den Server srv2 zu kopieren.

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

CA-Zertifikat nach srv2 kopieren

Client-Zertifikate generieren

Führe auf dem Server srv1 den folgenden Befehl aus, um das Client-Zertifikat für den Standardbenutzer root zu erzeugen. Dadurch werden zwei Zertifikate client.root.crt und client.root.key erzeugt, die für die Anmeldung am CockroachDB-Cluster verwendet werden können.

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

Client-Zertifikat erzeugen

Node-Zertifikat generieren

Nachdem die CA-Zertifikate erstellt und auf den srv2-Server hochgeladen wurden, generierst du Knotenzertifikate auf den Servern srv1 und srv2.

Führe den folgenden Befehl auf dem srv1-Server aus, um das Node-Zertifikat zu erzeugen. Achte darauf, dass du den fqdn und die IP-Adresse des srv1-Servers änderst.

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

Nachdem der Befehl ausgeführt wurde, sind die Node-Zertifikate node.crt und node.key verfügbar.

Knotenzertifikat erzeugen srv1

Führe nun den folgenden Befehl auf dem srv2-Server aus, um Knotenzertifikate zu erzeugen. Achte darauf, dass du den fqdn und die IP-Adresse des srv2-Servers änderst.

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

Du solltest sehen, dass die Knotenzertifikate node.crt und node.key generiert wurden.

Knotenzertifikate erzeugen srv2

CockroachDB als Systemd-Dienst ausführen

Nachdem du SSL/TLS-Zertifikate erzeugt hast, startest du als Nächstes den CockroachDB-Dienst. Du kannst CockroachDB manuell über die Kommandozeile starten, aber die empfohlene Methode ist die Verwendung des Systemd-Dienstes.

Führe zunächst den folgenden Befehl auf den Servern srv1 und srv2 aus, um einen neuen Benutzer cockroach anzulegen und den Eigentümer des Verzeichnisses /opt/cockroachdb auf den Benutzer cockroach zu ändern.

sudo adduser -d /opt/cockroachdb -r -U cockroach
sudo chown -R cockroach:cockroach /opt/cockroachdb

Führe auf dem Server srv1 den folgenden nano-Befehl aus, um eine neue systemd-Dienstdatei /etc/systemd/system/cockroachdb.service zu erstellen.

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

Füge die folgende Konfiguration ein und achte darauf, dass du den Parameter –advertise-addr durch die IP-Adresse des srv1-Servers 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.10.20 --join=192.168.10.20,192.168.10.21
TimeoutStopSec=60
Restart=always
RestartSec=10
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=cockroach
User=cockroach

[Install]
WantedBy=default.target

Speichere die Datei und beende den Editor, wenn du fertig bist.

Wechsle nun zum srv2-Server und erstelle mit dem Editor nano eine neue systemd-Dienstdatei /etc/systemd/system/cockroachdb.service.

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

Füge die folgende Konfiguration in die Datei ein und achte darauf, dass du den Parameter –advertise-addr in die IP-Adresse des srv2-Servers ä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.10.21 --join=192.168.10.20,192.168.10.21
TimeoutStopSec=60
Restart=always
RestartSec=10
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=cockroach
User=cockroach

[Install]
WantedBy=default.target

Speichere die Datei und beende den Editor, wenn du fertig bist.

Als Nächstes führst du den systemctl-Befehl aus, um den systemd-Manager neu zu laden und den neuen systemd-Dienst anzuwenden.

sudo systemctl daemon-reload

Starte und aktiviere dann den Dienst cockroachdb mit dem systemctl-Befehl unten.

sudo systemctl start cockroachdb
sudo systemctl enable cockroachdb

cockroachdb als systemd-Dienst ausführen

Überprüfe abschließend den cockroachdb-Dienst, um sicherzustellen, dass der Dienst läuft.

sudo systemctl status cockroachdb

Wenn die Konfiguration erfolgreich war, solltest du den Status des Dienstes cockroachdb active (running) erhalten.

Den Status des cockroachdb-Dienstes auf dem Server srv1.

cockroachdb Dienst auf srv1

Den Status des cockroachdb-Dienstes auf dem srv2-Server.

cockroachdb Dienststatus srv2

CockroachDB-Cluster initialisieren

Nachdem du CockroachDB als systemd-Dienst auf den Servern srv1 und srv2 gestartet hast, kannst du nun den CockroachDB-Cluster initialisieren.

Führe den unten stehenden Befehl cockroach auf dem Server srv1 aus, um den CockroachDB-Cluster zu initialisieren.

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

Wenn die Initialisierung erfolgreich war, solltest du die Ausgabe„Cluster successfully initialized“ erhalten.

Führe nun den folgenden Befehl aus, um die CockroachDB-Logs im CockroachDB-Datenverzeichnis /opt/cockroachdb/cockroach-data/ zu überprüfen.

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

Wenn du eine Ausgabe wie „CockroachDB node starting…“ erhältst, bedeutet das, dass der CockroachDB-Cluster erfolgreich initialisiert wurde.

cockroachdb-Cluster initialisieren

Führe abschließend den folgenden Befehl aus, um die Liste der Knoten im CockroachDB-Cluster und den detaillierten Status jedes Knotens zu überprüfen.

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

Du solltest zwei CockroachDB-Server im Cluster mit dem Status alive und available sehen.

Überprüfung des Cluster-Status

Admin-Benutzer auf CockroachDB anlegen

Wenn der CockroachDB-Cluster läuft, musst du im nächsten Schritt einen Admin-Benutzer für den CockroachDB-Cluster anlegen.

Führe zunächst den folgenden Cockroach-Befehl aus, um dich mit dem CockroachDB-Server srv1.hwdomain.lan mit dem Standardbenutzer root und den Zertifikaten im Verzeichnis /opt/cockroachdb/certs zu verbinden.

cockroach sql --certs-dir=/opt/cockroachdb/certs --host=srv1.hwdomain.lan:26257

In der CockroachDB-Eingabeaufforderung unten wird bestätigt, dass du dich als Standard-Root-Benutzer mit dem CockroachDB-Server srv1.hwdomain.lan und der Datenbank defaultdb verbunden hast.

Verbindung zum cockroachdb Server

Führe nun die folgende Abfrage aus, um die verfügbaren Datenbanken auf dem CockroachDB-Cluster aufzulisten.

SHOW DATABASES;

Du solltest die Datenbanken defaultdb, postgres und system auf deinem CockroachDB-Cluster sehen.

Liste Datenbanken cockroachdb

Als Nächstes führst du die folgende Abfrage aus, um einen neuen Benutzer alice anzulegen. Erteile dem Benutzer alice anschließend Admin-Rechte. Vergiss nicht, das Passwort in der folgenden Abfrage zu ändern.

CREATE USER alice WITH PASSWORD 'password';
GRANT admin TO alice;

Gib nun quit ein oder drücke Strg+d, um die CockroachDB-Shell zu verlassen.

Admin-Benutzer anlegen

Starte deinen Webbrowser und rufe die IP-Adresse von srv1 gefolgt von Port 8080 (d.h.: http://192.168.10.20:8080/) auf, um auf das CockroachDB-Webadministrations-Dashboard zuzugreifen. Du solltest nach der CockroachDB-Authentifizierung gefragt werden.

Gib den Benutzer alice und das Passwort ein und klicke dann auf Anmelden.

Anmeldung am cockroachdb Server

Wenn du den richtigen Benutzer und das richtige Passwort hast, solltest du das CockroachDB-Administrations-Dashboard erhalten. Du solltest wissen, dass der CockroachDB-Cluster zwei Server hat, 192.168.10.20 und 192.168.10.21.

cockroachdb web administration dashboard

Grundlegende Bedienung von CockroachDB

Im folgenden Abschnitt erfährst du, wie du eine neue Datenbank und Tabelle erstellst und Daten in CockroachDB einfügst und abrufst. Der folgende Befehl wird auf dem Server srv1 ausgeführt.

Führe zunächst den folgenden Befehl aus, um dich mit dem Benutzer alice am CockroachDB-Cluster anzumelden.

cockroach sql --user=alice --certs-dir=/opt/cockroachdb/certs --host=srv1.hwdomain.lan:26257

Wenn du zur Eingabe des Passworts aufgefordert wirst, gibst du das Passwort für den Benutzer alice ein.

als neuer Benutzer anmelden

Sobald du eingeloggt bist, führe die folgenden Abfragen aus, um eine neue Datenbank testdb mit der Tabelle users zu erstellen.

CREATE DATABASE testdb;
CREATE TABLE testdb.users (
   id INT PRIMARY KEY     NOT NULL,
   name           TEXT    NOT NULL,
   age            INT     NOT NULL,
   address        CHAR(50),
   salary         REAL
);

Datenbank und Tabelle erstellen

Führe nun die USE-Abfrage aus, um zur Datenbank testdb zu wechseln, und führe die INSERT-Abfrage aus, um neue Daten in die Tabelle users einzufügen.

USE testdb;
INSERT INTO users (id,name,age,address,salary) VALUES (1, 'Paul', 32, 'California', 20000.00);
INSERT INTO users (id,name,age,address,salary) VALUES (2, 'Jesse', 35, 'Mexico', 30000.00);
INSERT INTO users (id,name,age,address,salary) VALUES (3, 'Linda', 27, 'Canada', 40000.00);

neue Daten einfügen

Zum Schluss führst du die SELECT-Abfrage aus, um deine Daten aus der Tabelle users abzurufen.

SELECT * FROM users;

Deine Daten sollten auf deinem Terminalbildschirm angezeigt werden.

Daten abrufen

Prüfen der Datenbankreplikation im CockroachDB Cluster

Nachdem du eine neue Datenbank erstellt und neue Daten eingefügt hast, wirst du nun die Datenbankreplikation im CockroachDB-Cluster vom srv2-Server aus überprüfen.

Führe auf dem srv2-Server den folgenden Befehl aus, um dich über den Benutzer alice mit dem CockroachDB-Server zu verbinden.

cockroach sql --user=alice --certs-dir=/opt/cockroachdb/certs --host=srv2.hwdomain.lan:26257

Gib das Passwort für den Benutzer alice ein, wenn du dazu aufgefordert wirst.

Sobald du eingeloggt bist, führe die folgende Abfrage aus, um die Liste der verfügbaren Datenbanken auf dem CockroachDB-Cluster zu überprüfen.

SHOW DATABASES;

Wenn die Datenbankreplikation erfolgreich ist, sollte die Datenbank testdb auf dem Server srv2 verfügbar sein.

Verbindung zum srv2-Server

Führe nun die folgenden Abfragen aus, um zur Datenbank testdb zu wechseln und die verfügbaren Daten aus der Tabelle users abzurufen.

USE testdb;
SELECT * FROM users;

Wenn die Replikation erfolgreich war, solltest du deine Daten auf dem srv2-Server sehen.

cherck Datenbankreplikation

Fazit

Glückwunsch und gut gemacht! Du hast die Installation des CockroachDB Clusters auf deinen AlmaLinux 9 Servern abgeschlossen. Du hast einen sicheren CockroachDB-Cluster mit SSL/TLS-Zertifikaten erstellt und CockroachDB als systemd-Dienst im Hintergrund laufen lassen. Außerdem hast du einige grundlegende Abfragen zum Erstellen eines Admin-Benutzers und einer Datenbank sowie zum Einfügen und Abrufen von Daten in CockroachDB gelernt.

Mit diesen Kenntnissen kannst du jetzt mit der Migration zum CockroachDB-Cluster beginnen und deine Datenbank wird automatisch auf mehrere Knoten repliziert.

Das könnte dich auch interessieren …