Hinweis:
- Für dieses Tutorial ist Zugriff auf Oracle Cloud erforderlich. Informationen zum Registrieren für einen kostenlosen Account finden Sie unter Erste Schritte mit Oracle Cloud Infrastructure Free Tier.
- Es verwendet Beispielwerte für Oracle Cloud Infrastructure-Zugangsdaten, -Mandanten und -Compartments. Wenn Sie Ihre Übung abgeschlossen haben, ersetzen Sie diese Werte durch Werte, die speziell für Ihre Cloud-Umgebung gelten.
Konfigurieren Sie ein pfSense High Availability-Aktiv-/Passivcluster mit Corosync/Pacemaker auf Oracle Cloud Infrastructure
Hinweis: pfSense wird von Netgate oder Oracle offiziell auf Oracle Cloud Infrastructure nicht unterstützt. Wenden Sie sich an das Supportteam von pfSense, bevor Sie dieses Tutorial ausprobieren.
Einführung
Oracle Cloud Infrastructure (OCI) besteht aus einer Reihe sich ergänzender Cloud-Services, mit denen Sie eine Vielzahl von Anwendungen und Services in einer hochverfügbaren gehosteten Umgebung erstellen und ausführen können. Oracle Cloud Infrastructure (OCI) bietet High-Performance-Compute-Funktionen (als physische Hardwareinstanzen) und Speicherkapazität in einem flexiblen virtuellen Überlagerungsnetzwerk, auf das über Ihr On-Premise-Netzwerk sicher zugegriffen werden kann.
pfSense ist eine kostenlose Open-Source-Firewall und ein Open-Source-Router, die auch einheitliches Bedrohungsmanagement, Load Balancing, Multi-WAN und mehr bietet.
Zielsetzung
Richten Sie pfSense Virtual Appliance mit Hilfe von Corosync/Pacemaker in OCI in einer hochverfügbaren aktiven/passiven Konfiguration ein.
Voraussetzungen
- Zugriff auf einen Oracle Cloud-Mandanten
- Ein virtuelles Cloud-Netzwerk, das im Mandanten eingerichtet ist
- Alle erforderlichen Policy-Setup für Oracle Object Storage, Virtuelle Cloud-Netzwerke, Compute und Benutzerdefinierte Images.
Zu beachtende Punkte
- In diesem Tutorial ist ein regionales virtuelles Cloud-Netzwerk-Setup mit zwei Subnetzen vorhanden: öffentlich und privat mit dem CIDR 192.0.2.0/29 bzw. 192.0.2.8/29
- Primäre Instanz - Node1, sekundäre Instanz - Node2
- Node1-Hostname - "pfSense-primary" und IP: 192.0.2.2/29
- Node2-Hostname - "pfSense-secondary" und IP: 192.0.2.5/29
- Mit dem Tool pfSense Datei bearbeiten in der Konsole pfSense, Diagnose, Datei bearbeiten können Sie Dateiänderungen vornehmen.
- Der Begriff pfSense-Shell wird in diesem Tutorial verwendet. Sie können auf die Shell zugreifen, indem Sie in der Instanz ssh'ing und im Menü pfSense die Option 8 auswählen.
Aufgabe 1: Zwei pfSense Virtual Appliances in Oracle Cloud installieren
In diesem Tutorial werden die beiden pfSense virtuellen Appliances für High Availability verwendet. Sie können je nach Ihren Anforderungen mehrere Knoten einrichten. Befolgen Sie die Schritte in diesem Tutorial Installieren und konfigurieren Sie pfSense auf Oracle Cloud Infrastructure.
Hinweis:
- Die beiden Knoten müssen in verschiedenen Availability-Domains eingerichtet sein und sich gegenseitig pingen können.
- Sie können diese Knoten in verschiedenen virtuellen Cloud-Netzwerken oder Regionen einrichten. Stellen Sie jedoch sicher, dass Sie über die richtigen Peering-Gateways und Routentabellen verfügen, damit Knoten aufeinander zugreifen können.
- Wenn Sie die Knoten nicht voneinander pingen können, prüfen Sie die pfSense-Firewallregeln sowie die Oracle Cloud-Sicherheitsliste, die mit Ihrer Instanz verknüpft ist, und lassen Sie ICMP-Traffic zu.
Erforderliche Packages installieren
-
FreeBSD-Repositorys sind standardmäßig deaktiviert. So aktivieren Sie FreeBSD-Repositorys:
- Legen Sie FreeBSD fest:
{ enabled: yes } in /usr/local/etc/pkg/repos/FreeBSD.conf
- Legen Sie FreeBSD fest:
{ enabled: yes } in /usr/local/share/pfSense/pkg/repos/pfSense-repo.conf
- Legen Sie FreeBSD fest:
-
Nachdem Sie die FreeBSD-Repositorys aktiviert haben, aktualisieren Sie den Packagemanager.
Node1@ pkg update Node2@ pkg update
Hinweis: Dadurch werden der Package Manager und die Repository-Metadaten aktualisiert.
-
Installieren Sie die folgenden vier Packages, die für das Setup des High Availability-Clusters erforderlich sind.
- Herzschrittmacher
- Corosync
- CRM
- OCI-CLI
Führen Sie die folgenden Befehle zur Installation aus.
Node1@ pkg install pacemaker2 corosync2 crmsh devel/oci-cli Node2@ pkg install pacemaker2 corosync2 crmsh devel/oci-cli
Befolgen Sie die Anweisungen, um die Installation abzuschließen.
Aufgabe 3: Pacemaker/Corosync für die Instanzen einrichten
Corosync konfigurieren
-
Erstellen Sie eine neue Corosync-Konfigurationsdatei, indem Sie den folgenden Befehl in beiden Instanzen ausführen.
Node1@ touch /usr/local/etc/corosync/corosync.conf Node2@ touch /usr/local/etc/corosync/corosync.conf
-
Fügen Sie die folgende Konfiguration in das Skript auf beiden Knoten ein.
Hinweis: Stellen Sie sicher, dass Sie Ihre IP-Adressen in der Knotenliste ersetzen.
# Please read the corosync.conf.5 manual page totem { version: 2 crypto_cipher: none crypto_hash: none transport: udpu } logging { fileline: off to_logfile: yes to_syslog: yes logfile: /var/log/cluster/corosync.log debug: on timestamp: on logger_subsys { subsys: QUORUM debug: on } } nodelist { node { ring0_addr: 192.0.2.2 # make sure to replace with your IP nodeid: 1 } node { ring0_addr: 192.0.2.5 # make sure to replace with your IP nodeid: 2 } } quorum { # Enable and configure quorum subsystem (default: of # see also corosync.conf.5 and votequorum.5 provider: corosync_votequorum }
Wenn Sie versuchen, Corosync jetzt zu starten, wird die Fehlermeldung "No space left on device" angezeigt.
RAM-Festplatte auf beiden Knoten aktivieren
Corosync und Pacemaker verlassen sich zur Laufzeit auf das Verzeichnis /var
. Wenn Sie eine Standardinstallation durchgeführt haben, ist der verfügbare Speicherplatz für /var
sehr begrenzt. Sie müssen Arbeitsspeicher (RAM) für die Verzeichnisse /var
und /tmp
einrichten und verwenden. Dadurch wird auch die Performance verbessert.
-
Navigieren Sie in der pfSense-Konsole zu System, klicken Sie auf Erweitert, und klicken Sie dann auf Sonstiges.
-
Scrollen Sie nach unten zu Ram-Datenträgereinstellungen, und aktivieren Sie das Kontrollkästchen Ram-Datenträger verwenden.
-
Geben Sie die RAM-Datenträgergröße ein, die Sie den Verzeichnissen
/tmp
und/var
zuweisen möchten. -
Speichern Sie die Konfiguration. Sie werden aufgefordert, das System neu zu starten, wenn Sie RAM Disk zum ersten Mal aktivieren. Später können Sie die RAM Disk-Größe von unterwegs erhöhen oder verringern.
Hinweis: Da wir Ram Disks verwenden, gehen beim Herunterfahren des Systems alle Dateien in
/tmp
und/var
verloren. Wir müssen ein Startskript (rc.d-Datei) einrichten, das die Verzeichnisse erstellt, die Corosync und Pacemaker benötigen, um ordnungsgemäß zu funktionieren. -
Öffnen Sie die Datei
/usr/local/etc/rc.d/corosync
, und fügen Sie dem Code nach Zeile 17 auf beiden Knoten die folgenden Zeilen hinzu.mkdir -p /var/lib/corosync mkdir -p /var/run/qb chmod 777 /var/run/qb
-
Nachdem Sie die Änderungen vorgenommen haben, sieht die Jle ungefähr wie folgt aus:
#!/bin/sh # PROVIDE: corosync # REQUIRE: LOGIN FILESYSTEMS # KEYWORD: shutdown . /etc/rc.subr name="corosync" rcvar="corosync_enable" start_precmd="corosync_precmd" corosync_precmd() { if [ `${SYSCTL_N} kern.ipc.maxsockbuf` -lt 18874368 ]; then err 3 "sysctl:kern.ipc.maxsockbuf must be at least 18874 fi mkdir -p /var/lib/corosync mkdir -p /var/run/qb chmod 777 /var/run/qb } load_rc_config $name : ${corosync_enable:=YES} command="/usr/local/sbin/corosync" run_rc_command "$1"
Corosync- und Pacemaker-Service auf allen Knoten starten
Sie können der Datei /etc/rc.conf
jetzt corosync_enable=YES
und pacemaker_enable=YES
hinzufügen. Führen Sie den folgenden Befehl auf allen Knoten aus.
Node1@ sysrc corosync_enable=YES
Node2@ sysrc corosync_enable=YES
Node1@ sysrc pacemaker_enable=YES
Node2@ sysrc pacemaker_enable=YES
Node1@ service corosync start
Node2@ service corosync start
Node1@ service pacemaker start
Node2@ service pacemaker start
Hinweis:
- Es dauert einige Sekunden, um Pacemaker zu starten.
- Wenn beim Starten von Corosync: E
RROR: sysctl:kern.ipc.maxsockbuf must be at least 18874368
eine Fehlermeldung angezeigt wird, gehen Sie zu der pfSense-Konsole, klicken Sie auf System, klicken Sie dann auf Erweitert, und klicken Sie dann auf System Tunables, und aktualisieren Sie den Wert fürsysctl:kern.ipc.maxsockbuf
auf allen Knoten.
Prüfen Sie den Clusterstatus
-
Nachdem Pacemaker und Corosync auf allen Knoten ausgeführt wurden, prüfen wir den Clusterstatus. Führen Sie den folgenden Befehl aus, um den Status zu prüfen:
Node1@ crm status
-
Deaktivieren Sie Stonith jetzt, da wir Stonith in diesem Tutorial nicht behandeln.
Node1@ crm configure property stonith-enabled=false Node2@ crm configure property stonith-enabled=false
Wie Sie in der Abbildung sehen können, gibt der Status an, dass 2 Knoten konfiguriert und online sind.
Hinweis:
- Wenn nicht angezeigt wird, dass beide Knoten konfiguriert und online sind, wie im Image dargestellt, bedeutet dies, dass nur eine Instanz konfiguriert und online ist. Dies bedeutet, dass die Knoten nicht miteinander kommunizieren können.
- Um dies zu beheben, prüfen Sie pfSense und Oracle Cloud-Sicherheitslisten, um UDP- und ICMP-Traffic zuzulassen.
Aufgabe 4: Oracle Cloud Infrastructure-CLI einrichten
Die virtuelle Floating-IP muss von OCI CLI zwischen den Knoten auf Infrastrukturebene verschoben und verknüpft werden. Die OCI-CLI wurde bereits früher mit anderen Packages installiert. Jetzt wird die Konfiguration eingerichtet. Wir möchten Instanz-Principals verwenden, um unsere CLI-Befehle zu autorisieren. Weitere Informationen zu Instanz-Principals und OCI-CLI
Befolgen Sie diesen Blog, und richten Sie die Principals der Oracle Cloud Infrastructure-Instanz ein.
Virtuelle variable IP einrichten
In diesem Tutorial verwenden wir 192.0.2.3/29 als virtuelle schwimmende IP. Wir können keinen IPaddr2-Heartbeat in pfSense einrichten, der auf FreeBSD basiert. Wenn wir es trotzdem versucht haben, wird ein Fehler "IP ist nicht verfügbar" ausgegeben, die Paket-IP ist nur linux. Stattdessen richten wir einen IPaddr-Heatbeat ein.
-
Öffnen Sie
/usr/local/lib/ocf/resource.d/heartbeat/IPaddr
im Dateieditor. -
Fügen Sie ein paar Codezeilen hinzu, mit denen die OCI-CLI initiiert wird, um die IP von einer vNIC in eine andere zu verschieben. Fügen Sie die folgenden Codezeilen nach Zeile 584 in der Methode add_interface() des Skripts hinzu.
-
Weisen Sie im Skript die Werte node1vnic, node2vnic, vnicip und hostname zu. Sie finden Ihre vNIC-OCIDs in der Oracle Cloud-Konsole, im Menü Compute, Angehängt vNICs.
else ##### OCI vNIC variables server="`hostname -s`" node1vnic="<node1vnic>" node2vnic="<node2vnic>" vnicip="<floating_IP>" export LC_ALL=C.UTF-8 export LANG=C.UTF-8 touch /tmp/ip_switch_error.log ##### OCI/IPaddr Integration if [ $server = "<host_name>" ]; then /usr/local/bin/oci network vnic assign-private-ip --auth instance_principal --unassign-if-already-assigned --vnic-id $node1vnic --ip-address $vnicip >/tmp/ip_switch_error.log 2>&1 else /usr/local/bin/oci network vnic assign-private-ip --auth instance_principal --unassign-if-already-assigned --vnic-id $node2vnic --ip-address $vnicip >/tmp/ip_switch_error.log 2>&1 fi
-
Für Knoten 1: Gehen Sie in der Oracle Cloud-Konsole zu Compute, klicken Sie dann auf pfSense-primär, und klicken Sie dann auf Angehängte vNICs. Wählen Sie die primäre vNIC aus, und fügen Sie eine sekundäre private IP hinzu (identisch mit der floating_IP im obigen Skript)
-
Für beide Knoten: Gehen Sie in der Konsole pfSense zu firewall, und klicken Sie auf Virtuelle IPs, und fügen Sie einen IP-Alias hinzu (dieser entspricht floating_IP im obigen Skript).
Heartbeat einrichten
-
Führen Sie in der pfSense-Shell den folgenden Befehl auf Knoten 1 aus.
crm configure primitive IP ocf:heartbeat:IPaddr params ip=192.0.2.3 cidr_netmask="29" nic=”vtnet0” op monitor interval="5s"
-
In diesem Tutorial ist 192.0.2.3 die unverankerte IP. Stellen Sie sicher, dass Sie die IP-, Netzmasken- und nic-Werte durch Ihre Werte ersetzen. Dadurch sollte eine IP-Ressource in Pacemaker erstellt werden.
Wenn Sie crm status
jetzt ausführen, werden zwei Knoten online und eine verfügbare Ressource angezeigt, die auf pfSense-primary
verweist. Sie können auch ipconfig vtnet0
ausführen, um zu prüfen, ob die virtuelle IP jetzt mit der Schnittstelle auf dem primären Knoten verknüpft ist.
Failover testen
Aktueller Status
-
Führen Sie den folgenden Befehl aus, um ein Switchover zu erzwingen:
crm resource move IP pfSense-secondary.example.com
-
Führen Sie den Befehl
crm status
aus. Die Floating-IP-Ressource wird jetzt in pfSense-secondary verschoben. -
Prüfen Sie die vNIC-Avachments der Oracle Cloud-Konsole für Ihre Knoten. Sie sehen, dass die Floating-IP jetzt auf den zweiten Knoten verschoben wurde.
Hinweis: Wenn Sie versuchen, die Ressource jetzt herunterzufahren, wird sie in den Status "Gestoppt" versetzt, da sie nicht herausfinden kann, welcher Knoten als Master betrachtet werden soll, da pfSense mindestens 50% Stimmen benötigt, um einen Master zuzuweisen. Da wir nur 2 Knoten haben und einer von ihnen heruntergefahren ist, kann Pacemaker keinen Knoten als Master festlegen.
-
Führen Sie den folgenden Befehl aus, um die 50%-Stimmen-Richtlinie zu ignorieren:
crm configure property no-quorum-policy=ignore
-
Testen Sie nun ein Herunterfahren, und Sie können die Verschiebung der Floating-IP sehen.
Aufgabe 5: XLMRPC und pfsync einrichten
Wir möchten, dass unsere Knoten einen synchronisierten Status haben, wenn wir ein wirklich hochverfügbares Cluster haben möchten, aber die IPs werden nicht verschoben. Für die Synchronisierung müssen wir auf jeder unserer Instanzen eine weitere Gruppe von vNICs einrichten.
Sync-Schnittstelle einrichten
-
Für beide Knoten: Gehen Sie zu Compute, wählen Sie die Instanz aus, öffnen Sie Angehängte VNICs, und klicken Sie auf VNIC erstellen.
-
Nachdem die vNIC erstellt und angehängt wurde, gehen Sie zu pfSense console, klicken Sie auf interfaces und dann auf Assignments, und fügen Sie die neu erkannte Schnittstelle hinzu.
-
Klicken Sie auf die neu zugewiesene Schnittstelle, und richten Sie die Konfiguration ein.
-
Weisen Sie die statische IPv4-Adresse und Subnetzmaske zu, die wir im vorherigen Schritt in der OCI-Konsole erstellt haben.
-
Klicken Sie auf Speichern, und übernehmen Sie die Änderungen.
High Availability auf dem primären Knoten einrichten
- Gehen Sie zu pfSense Console, klicken Sie auf System und dann auf High Availability Sync.
- Synchronisierung von pfsync-Status aktivieren.
- Wählen Sie die Synchronisierungsschnittstelle aus.
- Fügen Sie die IP des sekundären Knotens hinzu.
- XMLRPC-Synchronisierungskonfiguration: Fügen Sie die IP des sekundären Knotens hinzu.
- Legen Sie den Benutzernamen und das Kennwort fest, und prüfen Sie, welche Elemente synchronisiert werden sollen.
- Klicken Sie auf Speichern und anwenden.
High Availability auf dem sekundären Knoten einrichten
- Gehen Sie zur Konsole pfSense, klicken Sie auf System und dann auf High Availability Sync.
- Synchronisierung von pfsync-Status aktivieren.
- Wählen Sie die Synchronisierungsschnittstelle aus.
- Fügen Sie die IP des primären Knotens hinzu.
- Klicken Sie auf Speichern und anwenden.
Die Firewallstatus werden zwischen beiden Knoten synchronisiert. Sie können versuchen, eine Firewallregel zu Ihrer primären Instanz hinzuzufügen. Diese werden auch auf dem sekundären Knoten angezeigt. Wir können nun versuchen, das Failover erneut zu testen, wenn das System heruntergefahren wird.
Verwandte Links
- pfSense Website
- Availability-Domains
- Peering-Gateways
- Sicherheitsliste
- Fehlerbehebung bei vollständigen Dateisystem- oder Inode-Fehlern
- Services von Instanzen aufrufen
- OCI-CLI mit Instanz-Principal aufrufen
Bestätigungen
Autor - Mayank Kakani (OCI Cloud Architect)
Weitere Lernressourcen
Sehen Sie sich weitere Übungen unter docs.oracle.com/learn an, oder greifen Sie auf weitere kostenlose Lerninhalte im Oracle Learning-Kanal YouTube zu. Besuchen Sie außerdem education.oracle.com/learning-explorer, um Oracle Learning Explorer zu werden.
Die Produktdokumentation finden Sie im Oracle Help Center.
Configure a pfSense High Availability active/passive cluster with Corosync/Pacemaker on Oracle Cloud Infrastructure
F70197-02
September 2022
Copyright © 2022, Oracle and/or its affiliates.