So installierst du Consul Server unter Ubuntu 22.04

Consul ist eine moderne Plattform für die Erkennung von Diensten, mit der du Dienste über die DNS- und HTTP-Schnittstelle registrieren kannst. Außerdem bietet sie eine Service-Mesh-Funktion, die sichere Verbindungen über TLS ermöglicht und die Autorisierung zwischen Diensten ermöglicht.

Darüber hinaus bietet Consul auch ein API-Gateway für die Verwaltung des Zugangs zu Diensten und einen KV-Speicher (Key/Value) für die Speicherung der Dienstkonfiguration.

In diesem Tutorial zeige ich dir die Installation des Consul-Clusters auf Ubuntu 22.04 Servern.

Voraussetzungen

Bevor du beginnst, musst du sicherstellen, dass du 3 Ubuntu 22.04 Server hast, die sich über ein internes Netzwerk miteinander verbinden können. Vergewissere dich außerdem, dass du auf jedem deiner Server über Root-Rechte verfügst.

Jetzt können wir loslegen.

Installation von Consul

Consul ist ein kostenloser und quelloffener Dienst, der von Hoshicorp entwickelt wurde. Es ist für die meisten Linux-Distributionen verfügbar, einschließlich Debian/Ubuntu und RHEL/CentOS.

In diesem Abschnitt wirst du Consul auf deinem Ubuntu-System installieren, indem du das offizielle Consul-Repository für Ubuntu verwendest.

Bevor du beginnst, führe den folgenden Befehl aus, um einige grundlegende Abhängigkeiten auf deinem System zu installieren. Gib y ein, um mit der Installation fortzufahren.

sudo apt install apt-transport-https gnupg curl wget

deps installieren

Führe nun den folgenden Befehl aus, um den GPG-Schlüssel für das Consul-Repository hinzuzufügen.

wget -O- https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg

Füge dann das Consul-Repository für Ubuntu mit dem unten stehenden Befehl hinzu.

echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list

Als Nächstes aktualisierst du deinen Ubuntu-Paketindex mit dem folgenden Befehl.

sudo apt update

Repo hinzufügen

Sobald das Repository aktualisiert ist, installierst du Consul mit dem folgenden apt-Befehl. Wenn du dazu aufgefordert wirst, gib y ein, um fortzufahren und bestätige die Installation.

sudo apt install consul

Konsul installieren

Nachdem die Installation abgeschlossen ist, führe den folgenden Befehl aus, um die Binärdatei und die Version von Consul zu überprüfen.

which consul
consul version

Wie du unten siehst, ist Consul 1.17.2 unter /usr/bin/consul installiert.

Konsulversion prüfen

UFW einrichten

Bevor du den Consul-Cluster einrichtest, musst du die Ports öffnen, die von Consul über UFW verwendet werden. Auf den meisten Ubuntu-Systemen sind die UFW-Pakete bereits vorinstalliert, aber sie sind noch nicht gestartet.

Um UFW zu starten, führe den unten stehenden ufw-Befehl aus. Damit aktivierst du das OpenSSH-Profil, das den Standard-SSH-Port 22 öffnet, und aktivierst dann UFW.

sudo ufw allow OpenSSH
sudo ufw enable

Tippe zur Bestätigung y ein und du erhältst eine Bestätigung wie die folgende:

ufw aktivieren

Als nächstes musst du die TCP-Ports 8300, 8301, 8302, 8400, 8500 und 8600 für Consul öffnen.

Führe den folgenden Befehl aus, um diese Ports auf allen deinen Ubuntu-Systemen zu öffnen.

for i in 8300/tcp 8301/tcp 8302/tcp 8400/tcp 8500/tcp 8600/tcp
do sudo ufw allow $i
done

Führe abschließend den folgenden Befehl aus, um den UFW-Status auf deinen Ubuntu-Servern zu überprüfen. Du wirst sehen, dass der UFW-Status aktiv ist und die Ports 8300, 8301, 8302, 8400, 8500 und 8600 geöffnet sind.

sudo ufw status

ufw prüfen

Consul Cluster erstellen

Nachdem du UFW konfiguriert hast, musst du im nächsten Schritt einen Consul-Cluster erstellen. Dazu musst du eine neue HCL-Konfigurationsdatei im Verzeichnis /etc/consul.d/ erstellen.

Bevor du beginnst, führe den folgenden Befehl aus, um den Consul-Dienst anzuhalten. So stellst du sicher, dass Consul gestoppt ist, bevor du mit der Konfiguration beginnst.

sudo systemctl stop consul

Führe nun den folgenden Befehl auf dem Server consul1 aus, um einen zufälligen Schlüssel für Consul zu erzeugen. Dieser Schlüssel wird an alle Consul-Server verteilt, also kopiere den generierten Schlüssel unbedingt.

consul keygen

Erstelle nun eine neue Consul-Konfiguration /etc/consul.d/consul.hcl auf allen deinen Consul-Servern. In diesem Beispiel verwenden wir den Befehl nano editor.

sudo nano /etc/consul.d/consul.hcl

Ändere die Standardkonfiguration von Consul und passe einige Werte wie die folgenden an:

# Full configuration options can be found at https://www.consul.io/docs/agent/config
# datacenter
datacenter = "my-dc-1"

# data_dir
# This flag provides a data directory for the agent to store state.
data_dir = "/opt/consul"

# client_addr
# The address to which the Consul will bind client interfaces, including the HTTP and DNS
# servers.
client_addr = "0.0.0.0"

# ui
# Enables the built-in web UI server and the required HTTP routes.
ui_config{
enabled = true
}

# default domain
domain = "consul"

# enable dns_config
dns_config{
enable_truncate = true
only_passing = true
}

# server
# This flag is used to control if an agent is in server or client mode. When provided,
# an agent will act as a Consul server. Each Consul cluster must have at least one
# server and ideally no more than 5 per datacenter. All servers participate in the Raft
# consensus algorithm to ensure that transactions occur in a consistent, linearizable
# manner. Transactions modify cluster state, which is maintained on all server nodes to
# ensure availability in the case of node failure. Server nodes also participate in a
# WAN gossip pool with server nodes in other datacenters. Servers act as gateways to
# other datacenters and forward traffic as appropriate.
server = true

# Advertise addr - if you want to point clients to a different address than bind or LB.
advertise_addr = "192.168.5.36"

# bootstrap_expect
# This flag provides the number of expected servers in the datacenter.
bootstrap_expect=3

# encrypt
# Specifies the secret key to use for encryption of Consul network traffic.
encrypt = "t/r8+jTHbMd9u/bD63i70e+h4pLUSRprn2mXKTKJXEY="

# retry_join
retry_join = ["192.168.5.36", "192.168.5.37", "192.168.5.38"]

Wenn du fertig bist, speichere und beende die Datei.

Im Folgenden findest du einige Consul-Parameter, die du für jeden deiner Server festlegen kannst:

  • Server: True bedeutet, dass der Knoten als Consul-Server fungiert.
  • advertise_addr: Ändere dies mit der jeweiligen IP-Adresse des Consul-Servers.
  • bootstrap_expect: Wie viele Server würde dein Cluster umfassen?
  • encrypt: Jeder Server muss denselben Schlüssel haben.
  • retry_join: Gib die IP-Adresse des Consul-Clusters in diesen Parameter ein.

Führe nun den unten stehenden Befehl aus, um deine Consul-Konfiguration zu überprüfen und zu validieren. Wenn du eine korrekte Consul-Syntax hast, bekommst du eine Ausgabe wie„Configuration is valid!„.

sudo consul validate /etc/consul.d/

Als nächstes führst du den folgenden Befehl aus, um Consul auf jedem deiner Server zu starten. Beginne mit consul01, consul02 und dann consul03.

sudo systemctl start consul

Zum Schluss kannst du den folgenden Befehl ausführen, um den Consul-Dienst zu überprüfen und sicherzustellen, dass er auf allen deinen Servern läuft.

sudo systemctl status consul

Unten kannst du sehen, dass Consul auf consul01 läuft.

consul01 Status

Unten siehst du, dass der Consul-Dienst auf dem Server consul02 läuft.

Konsul02

Und unten siehst du den Status auf dem Server consul03.

Konsul03

Mit Consul interagieren

An diesem Punkt hast du die Konfiguration des Consul-Clusters mit drei Ubuntu-Servern abgeschlossen. In diesem Schritt überprüfst du deinen Consul-Cluster, indem du die Liste der Server überprüfst, eine Key-Value-Datenbank in Consul erstellst und dann den Domainnamen der Consul-Server überprüfst.

Überprüfe die Liste der verfügbaren Server in deinem Consul-Cluster mit dem unten stehenden Befehl.

consul members

Wenn deine Consul-Installation erfolgreich war, solltest du drei Server innerhalb deines Consul-Clusters sehen.

Konsulenkonfiguration prüfen

Zusätzlich zur Liste der Mitglieder kannst du auch den folgenden Befehl ausführen, um die Liste der Peers im Consul-Cluster zu erhalten. Hier siehst du die Raft-ID, den Status, den Wähler und die Protokollversion.

consul operator raft list-peers

Liste der Gleichaltrigen

Als Nächstes überprüfst du deinen Consul-Cluster, indem du mit dem folgenden Befehl einen neuen Schlüssel test_db und einen Wert testkv erstellst.

consul kv put consul/configuration/test_db testkv

Sobald die Schlüssel-Wert-Datenbank erstellt ist, führe den folgenden Consul-Befehl aus, um den Schlüssel test_db abzurufen. Du wirst den Wert testkv sehen.

consul kv get consul/configuration/test_db

Konsul kv

Überprüfe abschließend den Consul DNS mit dem Befehl dig. Dieser zeigt dir den Standard-Domänennamen für Consul consul.service.consul und verweist auf die IP-Adressen der Consul-Cluster.

dig @127.0.0.1 -p 8600 consul.service.consul

dns-Konsul

Zugriff auf die Consul Web UI

Consul bietet bei einer Standardinstallation auch ein Webadministrations-Dashboard, das auf Port 8500 mit dem Pfad /ui läuft.

Starte deinen Webbrowser und rufe deine Server-IP-Adresse wie http://192.168.5.36:8500/ui/ auf. Im Consul-Dashboard siehst du die Informationen der drei verfügbaren Consul-Instanzen.

Konsulats-Dashboard

Klicke als Nächstes auf das Menü Nodes, das dir detaillierte Informationen zu jedem Node anzeigt. Unten siehst du den Hearly-Status, die Server-IP-Adresse und die Consul-Version jedes Servers.

Listenknoten

Schließlich klickst du auf das Menü Schlüssel/Wert, um die Liste der verfügbaren Schlüssel/Wert-Daten in deinem Consul-Cluster zu erhalten. Unten siehst du die test_db, die du zuvor erstellt hast.

kv consul

Fazit

Herzlichen Glückwunsch! Du hast nun erfolgreich den Consul-Cluster mit drei Servern auf einem Ubuntu 22.04 Rechner installiert. Außerdem hast du die grundlegenden Consul-Befehle für die Verwaltung von Consul gelernt.

Das könnte dich auch interessieren …