Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Voraussetzungen und Cluster-Setup
In diesem Abschnitt richten Sie die Infrastruktur für das Tutorial zur Hochverfügbarkeit ein. Sie erstellen eine Sicherheitsgruppe, erstellen ein key pair, starten Amazon EC2 EC2-Instances, installieren Pacemaker und DRBD, erstellen einen Cluster und konfigurieren die Replikation auf Blockebene zwischen Instances.
Erstellen und konfigurieren Sie eine Sicherheitsgruppe
Erstellen Sie eine Sicherheitsgruppe, die den gesamten Datenverkehr zwischen Clusterinstanzen zulässt. In diesem Tutorial öffnen Sie alle Ports, um die Einrichtung zu vereinfachen. Für diesen Schritt ist eine VPC erforderlich. Falls Sie noch keine haben, finden Sie weitere Informationen unter Erstellen einer VPC.
Konsole
-
Öffnen Sie die Amazon-EC2-Konsole unter https://console.aws.amazon.com/ec2/
. -
Wählen Sie im Navigationsbereich Sicherheitsgruppen und anschließend Sicherheitsgruppe erstellen aus.
-
Geben Sie einen Namen (z. B.
pacemaker-cluster-sg) und eine Beschreibung ein. -
Wählen Sie Ihre VPC aus.
-
Wählen Sie Sicherheitsgruppe erstellen aus.
-
Wählen Sie nach der Erstellung die neue Sicherheitsgruppe aus und bearbeiten Sie ihre Regeln für eingehenden Datenverkehr. Wählen Sie Regel hinzufügen aus. Stellen Sie Type auf Gesamter Traffic und Source auf die eigene ID der Sicherheitsgruppe ein. Dadurch wird der gesamte Datenverkehr zwischen Instances in dieser Sicherheitsgruppe zugelassen.
-
Fügen Sie eine zweite Regel für eingehenden Datenverkehr für den SSH-Zugriff hinzu. Stellen Sie Type auf SSH und Source auf My IP ein.
AWS Command Line Interface
-
Erstellen Sie die Sicherheitsgruppe.
aws ec2 create-security-group \ --group-name pacemaker-cluster-sg \ --description "Security group for Pacemaker HA cluster" \ --vpc-idyour-vpc-idNotieren Sie sich das
GroupIdaus der Ausgabe (z. B.sg-0123456789abcdef0). -
Fügen Sie eine Regel für eingehenden Datenverkehr hinzu, um den gesamten Datenverkehr von Instances in derselben Sicherheitsgruppe zuzulassen.
aws ec2 authorize-security-group-ingress \ --group-idsecurity-group-id\ --protocol all \ --source-groupsecurity-group-id -
Fügen Sie eine Regel für eingehenden Datenverkehr hinzu, um SSH-Zugriff von Ihrer IP-Adresse aus zu ermöglichen.
aws ec2 authorize-security-group-ingress \ --group-idsecurity-group-id\ --protocol tcp \ --port 22 \ --cidryour-ip/32
Erstellen eines Schlüsselpaares
Erstellen Sie ein key pair, das für den SSH-Zugriff auf alle Instanzen verwendet werden soll. Verwenden Sie in diesem Tutorial für alle Instanzen dasselbe key pair.
Konsole
-
Öffnen Sie die Amazon-EC2-Konsole unter https://console.aws.amazon.com/ec2/
. -
Wählen Sie im Navigationsbereich Schlüsselpaare und dann key pair erstellen aus.
-
Geben Sie einen Namen ein (z. B.
pacemaker-key). -
Wählen Sie RSA als Schlüsselpaartyp und .pem als Dateiformat.
-
Wählen Sie Create Key Pair (Schlüsselpaar erstellen) aus. Die Datei mit dem privaten Schlüssel wird automatisch heruntergeladen.
Warnung
Speichern Sie die Datei mit dem privaten Schlüssel (.pem) an einem sicheren Ort. Sie können sie nicht erneut herunterladen. Sie benötigen diese Datei, um eine SSH-Verbindung zu Ihren Instances herzustellen.
AWS Command Line Interface
-
Erstellen Sie das key pair.
aws ec2 create-key-pair \ --key-namekey-name\ --query 'KeyMaterial' \ --output text > pacemaker-key.pem -
Stellen Sie die richtigen Berechtigungen für die private Schlüsseldatei ein.
chmod 400 pacemaker-key.pem
Starten Sie EC2-Instances
Starten Sie zwei Ubuntu Amazon EC2 EC2-Instances in der Sicherheitsgruppe, die Sie erstellt haben. Ein kleiner Instance-Typ (z. B.t3.small) ist für dieses Tutorial ausreichend.
Konsole
-
Öffnen Sie die Amazon-EC2-Konsole unter https://console.aws.amazon.com/ec2/
. -
Wählen Sie Launch Instances aus.
-
Geben Sie einen Namen für die Instanz ein (z. B.
pacemaker-instance-1). -
Suchen Sie unter Anwendungs- und Betriebssystem-Images nach Ubuntu und wählen Sie ein Ubuntu Server-AMI aus (z. B. Ubuntu Server 24.04 LTS).
-
Wählen Sie unter Instanztyp die Option t3.small aus.
-
Wählen Sie unter Schlüsselpaar den Schlüssel aus, den Sie zuvor erstellt haben.
-
Wählen Sie unter Netzwerkeinstellungen die Option Bearbeiten aus, wählen Sie Ihre VPC und ein Subnetz aus und wählen Sie unter Firewall (Sicherheitsgruppen) die Option Bestehende Sicherheitsgruppe auswählen aus und wählen Sie aus.
pacemaker-cluster-sg -
Wählen Sie Launch Instance (Instance starten) aus.
-
Wiederholen Sie den Vorgang für jede weitere Instanz (z. B.
pacemaker-instance-2). Stellen Sie sicher, dass sich alle Instances in derselben VPC und Sicherheitsgruppe befinden.
AWS Command Line Interface
-
Starten Sie eine Instance.
aws ec2 run-instances \ --image-idubuntu-ami-id\ --instance-type t3.small \ --key-namekey-name\ --security-group-idssecurity-group-id\ --subnet-idsubnet-id\ --count 1 \ --tag-specifications 'ResourceType=instance,Tags=[{Key=Name,Value=pacemaker-instance-1}]'Wiederholen Sie den Vorgang
Value=pacemaker-instance-2für die zweite Instanz.
Sie benötigen die private IP-Adresse jeder Instanz für die Clusterkonfiguration.
-
Konsole: Wählen Sie in der Amazon EC2 EC2-Konsole eine Instance aus und suchen Sie auf der Registerkarte Details nach der privaten IPv4-Adresse.
-
AWS Command Line Interface:
aws ec2 describe-instances \ --filters "Name=tag:Name,Values=pacemaker-instance-*" \ --query "Reservations[*].Instances[*].[Tags[?Key=='Name'].Value|[0],PrivateIpAddress]" \ --output table
Installieren Sie Pacemaker Utilities
SSH in jede Instanz einbinden und die Pacemaker-Dienstprogramme installieren.
ssh -i pacemaker-key.pem ubuntu@instance-public-ip
sudo apt update sudo apt install -y pacemaker pcs resource-agents-extra resource-agents-common resource-agents-base
Konfigurieren Sie die Netzwerkkommunikation
-
Testen Sie die Kommunikation zwischen Instanzen. Führen Sie auf der Zielinstanz den folgenden Befehl aus, um auf Pings von der Quellinstanz zu warten.
sudo tcpdump hostsource-instance-private-ipFühren Sie auf der Quell-Instance den folgenden Befehl aus, um die Ziel-Instance zu pingen.
ping -c 4destination-instance-private-ipSie sollten auf beiden Seiten Ping-Antworten sehen. Wenn nicht, stellen Sie sicher, dass Ihre Sicherheitsgruppe den gesamten Datenverkehr zwischen Instances zulässt.
-
Deaktivieren Sie die Cloud-Init-Hostnamenverwaltung. Auf Ubuntu Amazon EC2 EC2-Instances kann Cloud-Init den Hostnamen und die Änderungen beim Neustart rückgängig machen.
/etc/hostsFühren Sie dies auf jeder Instance aus, um dies zu verhindern.sudo bash -c 'cat > /etc/cloud/cloud.cfg.d/99-preserve-hostconfig.cfg <<EOF preserve_hostname: true manage_etc_hosts: false EOF' -
Legen Sie den Hostnamen für jede Instanz fest. Pacemaker verwendet Hostnamen, um Cluster-Instanzen zu identifizieren.
Auf Instanz 1:
sudo hostnamectl set-hostname instance1Auf Instanz 2:
sudo hostnamectl set-hostname instance2 -
Konfigurieren
/etc/hosts. Hängen Sie bei jeder Instanz die privaten IP- und Hostnamenpaare an an./etc/hostsDadurch können sich Instanzen gegenseitig anhand des Hostnamens auflösen.sudo tee -a /etc/hosts <<EOFinstance1-private-ipinstance1instance2-private-ipinstance2 EOF
Erstellen Sie den Pacemaker-Cluster
-
Starten Sie den PCS-Daemon auf jeder Instanz.
sudo systemctl enable pcsd.service sudo systemctl start pcsd.service -
Stellen Sie das Hacluster-Passwort ein. Der
haclusterBenutzer ist ein Systemkonto, das automatisch erstellt wird, wenn Sie das Paket installieren.pcsPacemaker verwendet dieses Konto für die Cluster-Authentifizierung zwischen Instanzen. Legen Sie für jede Instanz dasselbe Passwort fest.sudo passwd hacluster -
Autorisieren Sie PC-Hosts. Autorisieren Sie die Cluster-Instanzen untereinander. Führen Sie dies auf jeder Instanz aus.
sudo pcs host auth instance1 instance2Sie werden zur Eingabe des
haclusterBenutzernamens und des Passworts aufgefordert. -
Richten Sie den Cluster ein. Führen Sie diesen Befehl nur auf einer Instanz aus. Das
--forceFlag zerstört alle vorhandenen Cluster auf dem Gerät.sudo pcs cluster setup my-gg-cluster instance1 instance2 --force -
Starten Sie den Cluster. Führen Sie diesen Befehl nur auf einer Instanz aus.
sudo pcs cluster start --all sudo pcs cluster enable --all -
Überprüfen Sie den Clusterstatus auf einer der beiden Instanzen.
sudo pcs status
Richten Sie DRBD ein
DRBD
-
EBS-Volumes erstellen und anhängen. Erstellen Sie für jede Instance ein EBS-Volume. Das Volume muss sich in derselben Availability Zone wie die Instance befinden.
Konsole
-
Öffnen Sie die Amazon-EC2-Konsole unter https://console.aws.amazon.com/ec2/
. -
Wählen Sie im Navigationsbereich Volumes und anschließend Create Volume aus.
-
Stellen Sie den Volume-Typ auf gp3, die Größe auf 8 GiB und die Availability Zone auf dieselbe Zone wie Ihre Instance ein.
-
Wählen Sie Create Volume (Volume erstellen) aus.
-
Wählen Sie das neue Volume aus, wählen Sie „Aktionen“ > „Volume anhängen“, wählen Sie die Ziel-Instance aus, legen Sie den Gerätenamen auf
/dev/xvdbzfest und wählen Sie „Volume anhängen“. -
Wiederholen Sie den Vorgang für jede Instanz.
AWS Command Line Interface
-
Erstellen Sie ein Volume in derselben Availability Zone wie Ihre Instance.
aws ec2 create-volume \ --volume-type gp3 \ --size 8 \ --availability-zoneinstance-availability-zoneNotieren Sie sich das
VolumeIdaus der Ausgabe. -
Hängen Sie das Volume an eine Instanz an.
aws ec2 attach-volume \ --volume-idvolume-id\ --instance-idinstance-id\ --device /dev/xvdbzWiederholen Sie den Vorgang für jede Instanz.
-
-
Überprüfen Sie die Lautstärke. Stellen Sie eine SSH-Verbindung zu jeder Instanz her und überprüfen Sie, ob das Volume angeschlossen ist, indem Sie die Blockgeräte auflisten.
lsblkBei Nitro-based Instance-Typen wie
t3.smallz. B. erscheint das Volume als NVMe-Gerät (z. B./dev/nvme1n1) statt als./dev/xvdbzWird verwendetlsblk, um den tatsächlichen Gerätenamen zu identifizieren und diesen Namen in der DRBD-Konfiguration zu verwenden. -
Installieren Sie die DRBD-Dienstprogramme auf jeder Instanz.
sudo apt install -y drbd-utils -
Konfigurieren Sie die DRBD-Ressource. Erstellen Sie das Konfigurationsverzeichnis und die Datei für die DRBD-Ressourcenkonfiguration auf beiden Instanzen.
sudo mkdir -p /etc/drbd.d sudo vi /etc/drbd.d/greengrass.resFügen Sie die folgende Konfiguration hinzu. Ersetzen Sie die Hostnamen und IP-Adressen durch Ihre Werte.
resource greengrass { protocol C; on instance1 { device /dev/drbd0; disk /dev/instance1-device-name; addressinstance1-private-ip:7788; meta-disk internal; } on instance2 { device /dev/drbd0; disk /dev/instance2-device-name; addressinstance2-private-ip:7788; meta-disk internal; } } -
Erstellen und starten Sie die DRBD-Ressource. Auf beiden Instanzen ausführen.
sudo drbdadm create-md greengrass sudo drbdadm up greengrassStellen Sie sicher
lsblk, dass dies unter Ihrem EBS-Volume-Gerätdrbd0angezeigt wird (z. B.xvdbzodernvme1n1). -
Stellen Sie die primäre Instanz ein. Führen Sie die folgenden Befehle nur für instance1 aus, um zu erzwingen, dass es sich um eine primäre Instanz handelt, und warten Sie auf die Synchronisation.
sudo drbdadm -- --overwrite-data-of-peer primary greengrass sudo drbdadm statusWarten Sie, bis in beiden Instanzen der
UpToDateFestplattenstatus angezeigt wird. Nach der Synchronisierung werden alle anderen Instanzen zu Standby-Instanzen. -
Formatieren und mounten Sie das DRBD-Gerät.
Formatieren Sie das DRBD-Gerät nur auf der primären Instanz:
sudo mkfs.ext4 /dev/drbd0Erstellen Sie auf allen Instanzen das Mount-Verzeichnis:
sudo mkdir -p /greengrass/v2Mounten Sie das DRBD-Gerät nur auf der primären Instanz:
sudo mount /dev/drbd0 /greengrass/v2 -
Überprüfen Sie den DRBD-Synchronisierungsstatus.
sudo drbdadm status mount | grep 'drbd'