Nota:
- Questa esercitazione richiede l'accesso a Oracle Cloud. Per iscriversi a un account gratuito, vedere Introduzione a Oracle Cloud Infrastructure Free Tier.
- Utilizza valori di esempio per le credenziali, la tenancy e i compartimenti di Oracle Cloud Infrastructure. Al termine del laboratorio, sostituire questi valori con quelli specifici del proprio ambiente cloud.
Configurare un cluster attivo/passivo pfSense High Availability con Corosync/Pacemaker su Oracle Cloud Infrastructure
Nota: pfSense non è ufficialmente supportato su Oracle Cloud Infrastructure da Netgate o Oracle. Prima di provare questa esercitazione, contattare il team di supporto pfSense.
Introduzione
Oracle Cloud Infrastructure (OCI) è un set di servizi cloud complementari che ti consentono di creare ed eseguire una vasta gamma di applicazioni e servizi in un ambiente hosted ad alta disponibilità. Oracle Cloud Infrastructure (OCI) offre funzionalità di computazione ad alte prestazioni (come istanze hardware fisiche) e capacità di storage in una rete virtuale di overlay flessibile, accessibile in modo sicuro dalla tua rete on-premise.
pfSense è un firewall e un router open source gratuito che offre anche funzioni unificate di gestione delle minacce, bilanciamento del carico, WAN multiplo e altro ancora.
Obiettivo
Imposta l'appliance virtuale pfSense in una configurazione attiva/passiva ad alta disponibilità con l'ausilio di Corosync/Pacemaker in OCI.
Prerequisiti
- Accesso a una tenancy Oracle Cloud
- Impostazione di una rete cloud virtuale nella tenancy
- Tutte le impostazioni dei criteri necessarie per Storage degli oggetti Oracle, Reti cloud virtuali, Computazione e immagini personalizzate.
Punti da notare
- In questa esercitazione viene fornita una configurazione regionale di Virtual Cloud Network con due subnet: pubblica e privata con il CIDR 192.0.2.0/29 e 192.0.2.8/29, rispettivamente
- Istanza primaria: Node1, istanza secondaria: Node2
- Node1 nome host: "pfSense-primary" e IP: 192.0.2.2/29
- Node2 nome host: "pfSense-secondary" e IP: 192.0.2.5/29
- È possibile utilizzare lo strumento pfSense Modifica file disponibile nella console pfSense, Diagnostica, Modifica file per apportare modifiche al file.
- Il termine shell pfSense viene utilizzato in questa esercitazione, è possibile accedere alla shell tramite ssh nell'istanza e selezionando 8 nel menu pfSense.
Task 1: installare due pfSense Virtual Appliance su Oracle Cloud
In questa esercitazione verranno utilizzate due appliance virtuali pfSense per l'alta disponibilità. È possibile impostare più nodi in base alle esigenze. Attenersi alla procedura descritta in questa esercitazione relativa all'installazione e configurazione di pfSense su Oracle Cloud Infrastructure.
Nota:
- I due nodi devono essere impostati in domini di disponibilità differenti e dovrebbero essere in grado di confrontarsi tra loro.
- Puoi impostare questi nodi in reti cloud virtuali o aree diverse, ma assicurati di disporre dei gateway di peering e delle tabelle di instradamento appropriati per consentire ai nodi di accedervi a vicenda.
- Se non riesci a eseguire il ping dei nodi l'uno dall'altro, verifica le tue regole di firewall pfSense e l'elenco di sicurezza Oracle Cloud associato alla tua istanza e consenti il traffico ICMP.
Installare i pacchetti richiesti
-
I repository FreeBSD sono disabilitati per impostazione predefinita. Per abilitare i repository FreeBSD, effettuare le operazioni riportate di seguito.
- Imposta FreeBSD:
{ enabled: yes } in /usr/local/etc/pkg/repos/FreeBSD.conf
- Imposta FreeBSD:
{ enabled: yes } in /usr/local/share/pfSense/pkg/repos/pfSense-repo.conf
- Imposta FreeBSD:
-
Dopo aver abilitato i repository FreeBSD, aggiornare Package Manager.
Node1@ pkg update Node2@ pkg update
Nota: questa operazione aggiornerà il Package Manager e i metadati repository.
-
Installare i quattro pacchetti seguenti richiesti per impostare il cluster ad alta disponibilità.
- Pacemaker (disambigua)
- Corosincronizzazione
- Crmsh (disambigua)
- OCI CLI
Eseguire i seguenti comandi per l'installazione
Node1@ pkg install pacemaker2 corosync2 crmsh devel/oci-cli Node2@ pkg install pacemaker2 corosync2 crmsh devel/oci-cli
Seguire le istruzioni per completare l'installazione.
Task 3: Impostazione di Pacemaker/Corosync sulle istanze
Configura Corosync
-
Creare un nuovo file di configurazione Corosync eseguendo il comando seguente in entrambe le istanze.
Node1@ touch /usr/local/etc/corosync/corosync.conf Node2@ touch /usr/local/etc/corosync/corosync.conf
-
Incollare la configurazione seguente nello script su entrambi i nodi.
Nota: assicurarsi di sostituire gli indirizzi IP nella lista di nodi.
# 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 }
Se si tenta di avviare Corosync ora, non verrà visualizzato il messaggio di errore "Nessuno spazio disponibile sul dispositivo".
Abilita disco RAM su entrambi i nodi
Corosync e Pacemaker si basano sulla directory /var
per il loro runtime e se hai effettuato un'installazione predefinita, lo spazio disponibile per /var
è molto limitato. È necessario impostare e utilizzare la memoria (RAM) per le directory /var
e /tmp
, ci aiuterà anche a migliorare le prestazioni.
-
Nella console pfSense accedere a Sistema, fare clic su Avanzate, quindi su Varie.
-
Scorrere fino a Impostazioni disco rigido e selezionare la casella di controllo Usa dischi RAM.
-
Immettere la dimensione del disco RAM da allocare alle directory
/tmp
e/var
. -
Salvare la configurazione. Verrà richiesto di eseguire il riavvio per la prima volta che si abilita il disco RAM. In seguito sarà possibile aumentare o ridurre la dimensione del disco RAM durante gli spostamenti.
Nota: poiché si utilizzano dischi Ram, in caso di chiusura del sistema tutti i file in
/tmp
e/var
andranno persi. È necessario impostare uno script di avvio (file rc.d) che creerà le directory di cui Corosync e Pacemaker devono funzionare correttamente. -
Aprire il file
/usr/local/etc/rc.d/corosync
e aggiungere le righe seguenti al codice dopo la riga 17 su entrambi i nodi.mkdir -p /var/lib/corosync mkdir -p /var/run/qb chmod 777 /var/run/qb
-
Dopo aver apportato le modifiche, Jle avrà un aspetto simile al seguente:
#!/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"
Avvia il servizio Corosync e Pacemaker su tutti i nodi
Ora è possibile aggiungere corosync_enable=YES
e pacemaker_enable=YES
al file /etc/rc.conf
. Eseguire il comando riportato di seguito su tutti i nodi.
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
Nota:
- Ci vorranno pochi secondi per iniziare Pacemaker.
- Se viene visualizzato un messaggio di errore quando si tenta di avviare Corosync: E
RROR: sysctl:kern.ipc.maxsockbuf must be at least 18874368
, andare alla console pfSense, fare clic su Sistema, quindi su Avanzate e infine su Tunable di sistema e aggiornare il valore persysctl:kern.ipc.maxsockbuf
su tutti i nodi.
Controllare lo stato del cluster
-
Ora che abbiamo Pacemaker e Corosync in esecuzione su tutti i nodi, controlliamo lo stato del cluster. Per controllare lo stato, eseguire il comando riportato di seguito.
Node1@ crm status
-
Disabilitare Stonith per il momento in quanto non copriamo Stonith in questa esercitazione.
Node1@ crm configure property stonith-enabled=false Node2@ crm configure property stonith-enabled=false
Come puoi vedere nell'immagine, lo stato indica che 2 nodi sono configurati e online.
Nota:
- Se non si vede che entrambi i nodi sono configurati e in linea come mostrato nell'immagine, indica che è configurata una sola istanza ed è in linea. Ciò significa che i nodi non sono in grado di parlare tra loro.
- Per risolvere il problema, controllare pfSense e gli elenchi di sicurezza di Oracle Cloud per consentire il traffico UDP e ICMP.
Task 4: impostare Oracle Cloud Infrastructure CLI
Abbiamo bisogno dell'interfaccia CLI OCI per spostare e associare l'IP a virgola mobile virtuale tra i nodi a livello dell'infrastruttura. L'interfaccia CLI OCI è già stata installata in precedenza con altri package. Ora la configurazione verrà impostata. Vogliamo usare i principal delle istanze per autorizzare i nostri comandi CLI. È possibile ottenere ulteriori informazioni sui principal delle istanze e su OCI cli.
Segui questo blog e imposta i principal delle istanze di Oracle Cloud Infrastructure.
Imposta IP a virgola mobile virtuale
In questa esercitazione, utilizzeremo 192.0.2.3/29 come IP mobile virtuale. Non è possibile impostare l'heartbeat IPaddr2 in pfSense basato su FreeBSD. Se l'abbiamo provato comunque, verrà restituito un errore "IP non è disponibile", l'IP del pacchetto è solo linux. Verrà invece impostato un hotbeat IPaddr.
-
Aprire
/usr/local/lib/ocf/resource.d/heartbeat/IPaddr
nell'editor di file. -
Aggiungere alcune righe di codice che avvieranno l'interfaccia CLI OCI per spostare l'IP da una vNIC a un'altra. Aggiungere le seguenti righe di codice dopo la riga 584 nel metodo add_interface() dello script.
-
Assegnare i valori node1vnic, node2vnic, vnicip e hostname nello script. Puoi trovare gli OCID vNIC nel menu Console di Oracle Cloud, Computazione, Collegato 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
-
Per il nodo 1: nella console di Oracle Cloud andare a Computazione, quindi fare clic su pfSense-primario e su VNIC collegate. Selezionare la vNIC primaria e aggiungere un IP privato secondario (come floating_IP nello script precedente)
-
Per entrambi i nodi: nella console pfSense andare a firewall, quindi fare clic su IP virtuali e aggiungere un alias IP (come floating_IP nello script precedente).
Impostazione di Heartbeat
-
Nella shell pfSense eseguire il comando riportato di seguito sul nodo 1.
crm configure primitive IP ocf:heartbeat:IPaddr params ip=192.0.2.3 cidr_netmask="29" nic=”vtnet0” op monitor interval="5s"
-
In questa esercitazione, 192.0.2.3 è l'IP mobile. Assicurarsi di sostituire i valori ip, netmask e nic con i valori. Ciò dovrebbe creare una risorsa IP in Pacemaker.
Se si esegue crm status
ora, verranno visualizzati due nodi in linea e una risorsa disponibile che punta a pfSense-primary
. È inoltre possibile eseguire ipconfig vtnet0
per verificare se l'IP virtuale è ora associato all'interfaccia sul nodo primario.
Failover test
Stato corrente
-
Eseguire il comando seguente per forzare uno switchover:
crm resource move IP pfSense-secondary.example.com
-
Eseguire il comando
crm status
per vedere che la risorsa IP mobile viene spostata in pfSense-secondaria. -
Controlla gli avvertimenti vNIC della console Oracle Cloud relativi ai tuoi nodi. Vedrai che l'IP mobile è stato spostato sul secondo nodo.
Nota: se si tenta di eseguire l'arresto ora, la risorsa passerà allo stato arrestato perché non sarà in grado di determinare quale nodo considerare come principale, poiché pfSense richiede almeno il 50% di voti per assegnare un master. Dal momento che abbiamo solo 2 nodi e uno di essi è inattivo, Pacemaker non sarà in grado di impostarne uno come maestro.
-
Eseguire il comando seguente per ignorare il criterio del 50% dei voti:
crm configure property no-quorum-policy=ignore
-
Ora prova un arresto e puoi vedere lo spostamento dell'IP mobile.
Task 5: Impostazione XLMRPC e pfsync
Vogliamo che i nostri nodi abbiano uno stato sincronizzato se vogliamo avere un cluster realmente ad alta disponibilità, basta spostare gli IP non lo farà. È necessario impostare un altro set di vNIC su ciascuna delle nostre istanze per la sincronizzazione.
Imposta interfaccia Sync
-
Per entrambi i nodi: andare a Compute, selezionare l'istanza, aprire Notizie collegate, quindi fare clic su Crea vnic.
-
Una volta creata e collegata la vNIC, andare alla console pfSense, fare clic su interfacce, quindi fare clic su Assegnazioni e aggiungere l'interfaccia appena rilevata.
-
Fare clic sull'interfaccia appena assegnata e impostarla come configurazione.
-
Assegnare l'indirizzo IPv4 statico e la maschera di sottorete creati nel passo precedente della console OCI.
-
Fare clic su Salva e applicare le modifiche.
Imposta High Availability sul nodo principale
- Andare alla console pfSense, fare clic su Sistema, quindi su Sincronizzazione ad alta disponibilità.
- Abilita sincronizzazione stato pfsync.
- Scegliere l'interfaccia di sincronizzazione.
- Aggiungere l'IP del nodo secondario.
- Configurazione sincronizzazione XMLRPC: aggiungere l'IP nodo secondario.
- Impostare il nome utente e la password e controllare che cosa si desidera sincronizzare.
- Fare clic su Salva e applica.
Imposta High Availability sul nodo secondario
- Andare alla console pfSense, fare clic su Sistema, quindi su Sincronizzazione ad alta disponibilità.
- Abilita sincronizzazione stato pfsync.
- Scegliere l'interfaccia di sincronizzazione.
- Aggiungere l'IP del nodo primario.
- Fare clic su Salva e applica.
Gli stati del firewall sono sincronizzati tra entrambi i nodi ed è possibile provare ad aggiungere una regola firewall nell'istanza primaria. Lo stesso verrà visualizzato anche nel nodo secondario. Ora è possibile provare a eseguire di nuovo il failover con un arresto del sistema.
Collegamenti correlati
- Sito Web pfSense
- Domini di disponibilità:
- Gateway peering
- Lista di sicurezza
- Risoluzione dei problemi relativi a file system completi o errori di inode
- Chiamata di servizi da un'istanza
- Chiamata dell'interfaccia CLI OCI tramite il principal dell'istanza
Confermazioni
Autore - Mayank Kakani (architetto cloud OCI)
Altre risorse di apprendimento
Esplora altri laboratori su docs.oracle.com/learn o visita altri contenuti di formazione gratuiti sul canale Oracle Learning YouTube. Inoltre, visitare education.oracle.com/learning-explorer per diventare un Oracle Learning Explorer.
Per la documentazione sul prodotto, visitare 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.