View a markdown version of this page

Voraussetzungen und Cluster-Setup - AWS IoT Greengrass

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-id your-vpc-id

    Notieren Sie sich das GroupId aus 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-id security-group-id \ --protocol all \ --source-group security-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-id security-group-id \ --protocol tcp \ --port 22 \ --cidr your-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-name key-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-id ubuntu-ami-id \ --instance-type t3.small \ --key-name key-name \ --security-group-ids security-group-id \ --subnet-id subnet-id \ --count 1 \ --tag-specifications 'ResourceType=instance,Tags=[{Key=Name,Value=pacemaker-instance-1}]'

    Wiederholen Sie den Vorgang Value=pacemaker-instance-2 fü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

  1. 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 host source-instance-private-ip

    Führen Sie auf der Quell-Instance den folgenden Befehl aus, um die Ziel-Instance zu pingen.

    ping -c 4 destination-instance-private-ip

    Sie sollten auf beiden Seiten Ping-Antworten sehen. Wenn nicht, stellen Sie sicher, dass Ihre Sicherheitsgruppe den gesamten Datenverkehr zwischen Instances zulässt.

  2. 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/hosts Fü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'
  3. Legen Sie den Hostnamen für jede Instanz fest. Pacemaker verwendet Hostnamen, um Cluster-Instanzen zu identifizieren.

    Auf Instanz 1:

    sudo hostnamectl set-hostname instance1

    Auf Instanz 2:

    sudo hostnamectl set-hostname instance2
  4. Konfigurieren/etc/hosts. Hängen Sie bei jeder Instanz die privaten IP- und Hostnamenpaare an an. /etc/hosts Dadurch können sich Instanzen gegenseitig anhand des Hostnamens auflösen.

    sudo tee -a /etc/hosts <<EOF instance1-private-ip instance1 instance2-private-ip instance2 EOF

Erstellen Sie den Pacemaker-Cluster

  1. Starten Sie den PCS-Daemon auf jeder Instanz.

    sudo systemctl enable pcsd.service sudo systemctl start pcsd.service
  2. Stellen Sie das Hacluster-Passwort ein. Der hacluster Benutzer ist ein Systemkonto, das automatisch erstellt wird, wenn Sie das Paket installieren. pcs Pacemaker verwendet dieses Konto für die Cluster-Authentifizierung zwischen Instanzen. Legen Sie für jede Instanz dasselbe Passwort fest.

    sudo passwd hacluster
  3. Autorisieren Sie PC-Hosts. Autorisieren Sie die Cluster-Instanzen untereinander. Führen Sie dies auf jeder Instanz aus.

    sudo pcs host auth instance1 instance2

    Sie werden zur Eingabe des hacluster Benutzernamens und des Passworts aufgefordert.

  4. Richten Sie den Cluster ein. Führen Sie diesen Befehl nur auf einer Instanz aus. Das --force Flag zerstört alle vorhandenen Cluster auf dem Gerät.

    sudo pcs cluster setup my-gg-cluster instance1 instance2 --force
  5. Starten Sie den Cluster. Führen Sie diesen Befehl nur auf einer Instanz aus.

    sudo pcs cluster start --all sudo pcs cluster enable --all
  6. Überprüfen Sie den Clusterstatus auf einer der beiden Instanzen.

    sudo pcs status

Richten Sie DRBD ein

DRBD (Distributed Replicated Block Device) ist ein Linux-Kernelmodul, das Speichergeräte zwischen Instanzen in Echtzeit repliziert. Es funktioniert auf der Blockgeräteebene — der Rohdatenträgerebene unter dem Dateisystem —, sodass alle Daten, die auf einer Instanz auf die Festplatte geschrieben werden, auf der anderen Instanz gespiegelt werden. Dadurch wird sichergestellt, dass bei einem Ausfall der primären Instanz die Standby-Instanz über eine identische Kopie der Daten verfügt.

  1. 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/xvdbz fest 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-zone instance-availability-zone

      Notieren Sie sich das VolumeId aus der Ausgabe.

    • Hängen Sie das Volume an eine Instanz an.

      aws ec2 attach-volume \ --volume-id volume-id \ --instance-id instance-id \ --device /dev/xvdbz

      Wiederholen Sie den Vorgang für jede Instanz.

  2. Ü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.

    lsblk

    Bei Nitro-based Instance-Typen wie t3.small z. B. erscheint das Volume als NVMe-Gerät (z. B./dev/nvme1n1) statt als. /dev/xvdbz Wird verwendetlsblk, um den tatsächlichen Gerätenamen zu identifizieren und diesen Namen in der DRBD-Konfiguration zu verwenden.

  3. Installieren Sie die DRBD-Dienstprogramme auf jeder Instanz.

    sudo apt install -y drbd-utils
  4. 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.res

    Fü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; address instance1-private-ip:7788; meta-disk internal; } on instance2 { device /dev/drbd0; disk /dev/instance2-device-name; address instance2-private-ip:7788; meta-disk internal; } }
  5. Erstellen und starten Sie die DRBD-Ressource. Auf beiden Instanzen ausführen.

    sudo drbdadm create-md greengrass sudo drbdadm up greengrass

    Stellen Sie sicherlsblk, dass dies unter Ihrem EBS-Volume-Gerät drbd0 angezeigt wird (z. B. xvdbz odernvme1n1).

  6. 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 status

    Warten Sie, bis in beiden Instanzen der UpToDate Festplattenstatus angezeigt wird. Nach der Synchronisierung werden alle anderen Instanzen zu Standby-Instanzen.

  7. Formatieren und mounten Sie das DRBD-Gerät.

    Formatieren Sie das DRBD-Gerät nur auf der primären Instanz:

    sudo mkfs.ext4 /dev/drbd0

    Erstellen Sie auf allen Instanzen das Mount-Verzeichnis:

    sudo mkdir -p /greengrass/v2

    Mounten Sie das DRBD-Gerät nur auf der primären Instanz:

    sudo mount /dev/drbd0 /greengrass/v2
  8. Überprüfen Sie den DRBD-Synchronisierungsstatus.

    sudo drbdadm status mount | grep 'drbd'