Installation eines Nomad-Clusters mit Konsole auf Cloud-Servern

0 Aktien
0
0
0
0

Einführung

In diesem Tutorial richten wir einen HashiCorp Nomad-Cluster ein, indem wir die Konsole zur Erkennung von Diensten und Knoten verwenden. Mit drei Serverknoten und einer beliebigen Anzahl von Clientknoten bietet dieses Tutorial eine gute Grundlage für wachsende Projekte. Wir erstellen außerdem einen Snapshot in der Hetzner Cloud für unsere Clients, wodurch wir weitere Clients hinzufügen können, ohne diese manuell konfigurieren zu müssen. Dieser Cluster läuft in einem privaten Netzwerk zwischen den Servern und unterstützt alle Standardfunktionen von Nomad und der Konsole, wie z. B. Diensterkennung und Volumes.

Dieses Tutorial orientiert sich teilweise an den Schritten, die in den offiziellen Installationsanleitungen von Consul und Nomad empfohlen werden.

Voraussetzungen
  • Ein Hetzner Cloud-Konto
  • Einführung in Linux und Terminalbefehle
  • Möglichkeit zur Verbindung mit dem Server über SSH

Dieses Tutorial wurde auf Ubuntu 24.04 Servern von Hetzner Cloud mit den Versionen Nomad 1.9.3 und Consul 1.20.1 getestet.

Begriffe und Symbole

Befehle:

local$ <دستور> # این دستور باید در ماشین محلی شما اجرا شود

server$ <دستور> # این دستور باید در سرور به‌عنوان کاربر root اجرا شود

 

Schritt 1 – Erstellen Sie ein Basisbild

Folgende Ressourcen werden in diesem Schritt verwendet:

  • 1 Hetzner Cloud-Server Modell CX22

Wir beginnen mit der Einrichtung eines Consul/Nomad-Servers auf einem neuen CX22-Server in der Hetzner Cloud. Der resultierende Snapshot dient in den folgenden Schritten als Basis-Image für alle Cluster-Server und Clients.

Schritt 1.1 – Installation von Consul

Um Consul zu installieren, führen Sie die folgenden Befehle aus:

server$ wget -O- https://apt.releases.hashicorp.com/gpg | gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg
server$ echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | tee /etc/apt/sources.list.d/hashicorp.list
server$ apt update && apt install consul

Um die Autovervollständigungsfunktion in Consul hinzuzufügen (optional):

server$ consul -autocomplete-install

Schritt 1.2 – Installieren Sie die Nomad-Binärdatei

Um Nomad zu installieren, führen Sie die folgenden Befehle aus:

server$ wget -O- https://apt.releases.hashicorp.com/gpg | gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg
server$ echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | tee /etc/apt/sources.list.d/hashicorp.list
server$ apt update && apt install nomad

Um die Autovervollständigungsfunktion in Nomad hinzuzufügen (optional):

server$ nomad -autocomplete-install

Schritt 1.3 – Vorbereiten der systemd-Dienste

Consul und Nomad sollen beim Systemstart automatisch starten. Um diese Funktion zu aktivieren, erstellen Sie für jedes der beiden Programme einen systemd-Dienst.

server$ chown consul:consul dc1-server-consul*
server$ chown consul:consul dc1-client-consul*
server$ chown -R consul:consul /opt/consul
server$ chown -R nomad:nomad /opt/nomad
server$ mkdir -p /opt/alloc_mounts && chown -R nomad:nomad /opt/alloc_mounts

Erstellen Sie anschließend die Konfigurationsdatei /etc/systemd/system/consul.service mit folgendem Inhalt:

[Unit]
Description="HashiCorp Consul - A service mesh solution"
Documentation=https://www.consul.io/
Requires=network-online.target
After=network-online.target
ConditionFileNotEmpty=/etc/consul.d/consul.hcl
[Service]
EnvironmentFile=-/etc/consul.d/consul.env
User=consul
Group=consul
ExecStart=/usr/bin/consul agent -config-dir=/etc/consul.d/
ExecReload=/bin/kill --signal HUP $MAINPID
KillMode=process
KillSignal=SIGTERM
Restart=on-failure
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target

Erstellen Sie anschließend die Konfigurationsdatei /etc/systemd/system/nomad.service mit folgendem Inhalt:

[Unit]
Description=Nomad
Documentation=https://www.nomadproject.io/docs/
Wants=network-online.target
After=network-online.target
[Service]
User=nomad
Group=nomad
ExecReload=/bin/kill -HUP $MAINPID
ExecStart=/usr/bin/nomad agent -config /etc/nomad.d
KillMode=process
KillSignal=SIGINT
LimitNOFILE=65536
LimitNPROC=infinity
Restart=on-failure
RestartSec=2
OOMScoreAdjust=-1000
TasksMax=infinity
[Install]
WantedBy=multi-user.target

Aktivieren Sie diese Dienste in dieser Phase noch nicht, da die Installation noch nicht abgeschlossen ist.

Schritt 1.5 – Erstellen eines Basis-Snapshots

Zum Schluss stoppen Sie den Server in der Hetzner Cloud-Konsole und erstellen einen Snapshot. Dieser Snapshot dient als Grundlage für die Einrichtung der Cluster-Server und -Clients.

Schritt 2 – Einrichten der Cluster-Server

In diesem Schritt erstellen Sie drei Cluster-Server aus dem Basis-Image. Diese Server bilden die Basis Ihres Clusters und wählen automatisch einen Cluster-Leader.

Wir werden folgende Ressourcen nutzen:

  • 1 Hetzner Cloud Network
  • 3 Hetzner Cloud-Server Modell CX22

Erstellen Sie in der Hetzner Cloud Console drei CX22-Server aus dem in Schritt 1 erstellten Snapshot und verbinden Sie diese mit einem gemeinsamen Cloud-Netzwerk. In diesem Tutorial wird das Netzwerk 10.0.0.0/8 verwendet, kleinere Netzwerke sind aber ebenfalls geeignet.

Schritt 2.1 – Generieren eines symmetrischen Verschlüsselungsschlüssels

Erstellen Sie zunächst einen symmetrischen Verschlüsselungsschlüssel, der von allen Servern gemeinsam genutzt wird. Bewahren Sie diesen Schlüssel an einem sicheren Ort auf, da wir ihn in den nächsten Schritten benötigen.

server$ consul keygen

Schritt 2.2 – Zertifikate verteilen

Nun können wir die korrekten Zertifikate aus Schritt 1 in das Consul-Konfigurationsverzeichnis kopieren. Führen Sie dazu folgenden Befehl auf allen Servern aus:

server$ cp consul-agent-ca.pem /etc/consul.d/

Die in Schritt 1 erstellten drei Serverzertifikate müssen so verteilt werden, dass jeder Server sein eigenes, eindeutiges Zertifikat mit dem zugehörigen Schlüssel erhält. Dieses Tutorial stellt die folgenden Befehle für die verschiedenen Server bereit:

[10.0.0.2] server$ cp -a dc1-server-consul-0* /etc/consul.d/
[10.0.0.3] server$ cp -a dc1-server-consul-1* /etc/consul.d/
[10.0.0.4] server$ cp -a dc1-server-consul-2* /etc/consul.d/

Schritt 2.3 – Consul-Konfiguration bearbeiten

Bearbeiten Sie auf allen Servern die Konfigurationsdatei /etc/consul.d/consul.hcl und fügen Sie folgenden Inhalt hinzu:

datacenter = "dc1"
data_dir = "/opt/consul"
encrypt = "your-symmetric-encryption-key"
tls {
defaults {
ca_file = "/etc/consul.d/consul-agent-ca.pem"
cert_file = "/etc/consul.d/dc1-server-consul-0.pem"
key_file = "/etc/consul.d/dc1-server-consul-0-key.pem"
verify_incoming = true
verify_outgoing = true
},
internal_rpc {
verify_server_hostname = true
}
}
retry_join = ["10.0.0.2"]
bind_addr = "{{ GetPrivateInterfaces | include \"network\" \"10.0.0.0/8\" | attr \"address\" }}"
acl = {
enabled = true
default_policy = "allow"
enable_token_persistence = true
}
performance {
raft_multiplier = 1
}

Schritt 2.4 – Consul und Nomad einrichten

Nachdem die Konfigurationen nun korrekt durchgeführt wurden, können Sie die Consul- und Nomad-Dienste starten.

server$ systemctl enable consul
server$ systemctl start consul
server$ systemctl enable nomad
server$ systemctl start nomad

Um den Status der Dienste zu überprüfen, können Sie die folgenden Befehle verwenden:

server$ systemctl status consul
server$ systemctl status nomad
 

Wenn alles korrekt funktioniert, sollten die Consul- und Nomad-Dienste laufen und der Cluster ordnungsgemäß eingerichtet sein.

Schritt 2.5 – Verbinden weiterer Knoten mit dem Cluster

Nachdem die Hauptserver des Clusters nun betriebsbereit sind, können die übrigen Knoten verbunden werden. Um Client-Knoten mit dem Cluster zu verbinden, wenden Sie einfach dieselben Einstellungen auf die Consul- und Nomad-Konfigurationen der neuen Knoten an.

Erstellen Sie auf jedem der Client-Knoten die gleichen Konfigurationsdateien wie auf dem Hauptserver und starten Sie anschließend die Dienste:

client$ cp consul-agent-ca.pem /etc/consul.d
/client$ cp dc1-client-consul-* /etc/consul.d
/client$ systemctl enable consul client$ systemctl start consul
client$ systemctl enable nomad client$ systemctl start nomad

Schritt 3 – Cluster und Konfiguration überprüfen

Nach dem Starten der Server und Clients können Sie den Status des Clusters mit den folgenden Befehlen überprüfen:

client$ consul members

Dieser Befehl sollte eine Liste der Knoten im Cluster anzeigen. Sie können den Status und die Einstellungen von Nomad auch mit dem folgenden Befehl überprüfen:

client$ nomad status

Schritt 4 – Clustermanagement

Nachdem Ihr Consul- und Nomad-Cluster nun ordnungsgemäß eingerichtet ist, können Sie ihn verwalten und seine verschiedenen Funktionen nutzen.

Um den Clusterstatus anzuzeigen und Verwaltungsanforderungen auszuführen, verwenden Sie die folgenden Befehle:

  • Konsulatsinformationen #, um allgemeine Informationen über den Consul-Cluster zu erhalten.
  • Jobstatus für Nomaden #, um den Jobstatus von Nomad anzuzeigen
  • Nomaden-Zuteilungsstatus #, um den Status der Zuteilungen im Nomad-Cluster anzuzeigen

Verwendung des Nomad-Clusters

Nomad ermöglicht die Durchführung verschiedener Aufgaben wie das Verwalten von Jobs, das Bereitstellen von Pods und die Koordination mit Consul zur Ermittlung von Diensten.

Consul zur Ermittlung von Diensten verwenden

Consul bietet eine automatische Diensterkennung. Über die Consul-Weboberfläche (standardmäßig auf Port 8500 verfügbar) können Sie die verfügbaren Dienste anzeigen und bei Bedarf konfigurieren.

Ergebnis

In diesem Tutorial haben Sie mit Hetzner Cloud einen Cluster aus HashiCorp Nomad- und Consul-Servern in einem privaten Cloud-Netzwerk erstellt. Dieser Cluster eignet sich zur Verwaltung verschiedener umfangreicher Workloads. Außerdem wurde in diesem Tutorial die Einrichtung neuer Knoten per Snapshot und die detaillierte Konfiguration der Server behandelt.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert


Das könnte Ihnen auch gefallen
Anleitung zur Installation von Cockpit unter Ubuntu 24.04

Wie installiert man Cockpit auf Ubuntu 24.04?

Cockpit ist ein webbasiertes Management-Panel für Server, mit dem sich Dienste, Speicher, Protokolle und Benutzer einfach und grafisch überwachen und verwalten lassen. Auf einem VPS ermöglicht Cockpit Systemadministratoren, viele Serververwaltungsaufgaben ohne Kommandozeile durchzuführen. Im Folgenden erklären wir Ihnen Schritt für Schritt die Installation, die Konfiguration der Sicherheit und den Zugriff auf Cockpit.