Remarque :
- Ce tutoriel requiert l'accès à Oracle Cloud. Pour vous inscrire à un compte gratuit, reportez-vous à Introduction au niveau gratuit d'Oracle Cloud Infrastructure.
- Il utilise des exemples de valeur pour les informations d'identification, la location et les compartiments Oracle Cloud Infrastructure. A la fin de l'exercice, remplacez ces valeurs par des valeurs propres à votre environnement cloud.
Configurer un cluster actif/passif haute disponibilité pfSense avec Corosync/Pacemaker sur Oracle Cloud Infrastructure
Remarque : pfSense n'est pas officiellement pris en charge sur Oracle Cloud Infrastructure par Netgate ou Oracle. Contactez l'équipe de support pfSense avant d'essayer ce tutoriel.
Introduction
Oracle Cloud Infrastructure (OCI) est un ensemble de services cloud complémentaires qui vous permettent de créer et d'exécuter un large éventail d'applications et de services dans un environnement hébergé hautement disponible. Oracle Cloud Infrastructure (OCI) offre des fonctionnalités de calcul (comme les instances matérielles physiques) et une capacité de stockage hautes performances sur un réseau virtuel superposé flexible et accessible de manière sécurisée à partir de votre réseau on-premise.
pfSense est un pare-feu et un routeur open source et gratuit disposant d'une gestion unifiée des menaces, d'un équilibrage de charge, de plusieurs réseaux WAN, etc.
Objectif
Configurez l'appliance virtuelle pfSense dans une configuration active/passive haute disponibilité à l'aide de Corosync/Pacemaker dans OCI.
Prérequis
- Accès à une location Oracle Cloud
- Configuration d'un réseau cloud virtuel dans la location
- Toutes les configurations de stratégie requises pour Oracle Object Storage, les réseaux cloud virtuels, Compute et les images personnalisées.
Points à noter
- Dans ce tutoriel, nous avons une configuration réseau cloud virtuel régionale avec deux sous-réseaux : public et privé avec le CIDR 192.0.2.0/29 et 192.0.2.8/29 respectivement.
- Instance principale : Node1, instance secondaire : Node2
- Nom d'hôte Node1 - "pfSense-primary" et adresse IP : 192.0.2.2/29
- Nom d'hôte Node2 - "pfSense-secondary" et adresse IP : 192.0.2.5/29
- Vous pouvez utiliser l'outil pfSense Edit File situé dans la console pfSense, Diagnostics, Edit file pour apporter des modifications aux fichiers.
- Le terme shell pfSense est utilisé dans ce tutoriel. Vous pouvez accéder au shell en effectuant une connexion SSH à l'instance et en sélectionnant 8 dans le menu pfSense.
Tâche 1 : installation de deux appliances virtuelles pfSense sur Oracle Cloud
Dans ce tutoriel, nous allons utiliser deux appliances virtuelles pfSense pour la haute disponibilité. Vous pouvez configurer plusieurs noeuds en fonction de vos besoins. Suivez les étapes de ce tutoriel Installation et configuration de pfSense sur Oracle Cloud Infrastructure.
Remarque :
- Les deux noeuds doivent être configurés dans des domaines de disponibilité différents et peuvent envoyer une commande ping.
- Vous pouvez configurer ces noeuds dans différents réseaux cloud virtuels ou régions, mais assurez-vous que des passerelles d'appairage et des tables de routage appropriées sont définies pour autoriser les noeuds à accéder les uns aux autres.
- Si vous ne parvenez pas à envoyer une commande ping aux noeuds les uns des autres, vérifiez les règles de pare-feu pfSense, ainsi que la liste de sécurité Oracle Cloud associée à l'instance et autorisez le trafic ICMP.
Installer les packages obligatoires
-
Les référentiels FreeBSD sont désactivés par défaut. Pour activer les référentiels FreeBSD, procédez comme suit :
- Définissez FreeBSD :
{ enabled: yes } in /usr/local/etc/pkg/repos/FreeBSD.conf
- Définissez FreeBSD :
{ enabled: yes } in /usr/local/share/pfSense/pkg/repos/pfSense-repo.conf
- Définissez FreeBSD :
-
Après avoir activé le référentiel FreeBSD, mettez à jour le gestionnaire de packages.
Node1@ pkg update Node2@ pkg update
Remarque : cette opération met à jour le gestionnaire de packages et les métadonnées de référentiel.
-
Installez les quatre packages suivants requis pour configurer le cluster haute disponibilité.
- Pacemaker (homonymie)
- Corosync
- Crmsh (homonymie)
- OCI CLI
Exécutez les commandes suivantes pour l'installation
Node1@ pkg install pacemaker2 corosync2 crmsh devel/oci-cli Node2@ pkg install pacemaker2 corosync2 crmsh devel/oci-cli
Suivez les invites pour terminer l'installation.
Tâche 3 : configurer Pacemaker/Corosync sur les instances
Configurer Corosync
-
Créez un fichier de configuration Corosync en exécutant la commande suivante dans les deux instances.
Node1@ touch /usr/local/etc/corosync/corosync.conf Node2@ touch /usr/local/etc/corosync/corosync.conf
-
Collez la configuration suivante dans le script sur les deux noeuds.
Remarque : veillez à remplacer vos adresses IP dans la liste des noeuds.
# 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 }
Si vous essayez de démarrer Corosync maintenant, l'opération échoue avec le message d'erreur "No space left on device".
Activer le disque RAM sur les deux noeuds
Corosync et Pacemaker s'appuient sur le répertoire /var
pour leur exécution. Si vous avez effectué une installation par défaut, l'espace disponible pour /var
est très limité. Vous devez configurer et utiliser la mémoire (RAM) pour les répertoires /var
et /tmp
, ce qui nous aidera également à améliorer les performances.
-
Dans la console pfSense, accédez à Système, cliquez sur Avancé, puis sur Divers.
-
Faites défiler la page jusqu'à Ram Disk Settings et cochez la case Use Ram Disks.
-
Entrez la taille de disque RAM à allouer aux répertoires
/tmp
et/var
. -
Enregistrez la configuration. Vous serez invité à redémarrer lors de la première activation du disque RAM. Plus tard, vous pourrez augmenter ou diminuer la taille du disque RAM lors de vos déplacements.
Remarque : étant donné que nous utilisons des disques Ram, en cas d'arrêt du système, tous les fichiers dans
/tmp
et/var
seront perdus. Nous devons configurer un script de démarrage (fichier rc.d) qui créera les répertoires dont Corosync et Pacemaker ont besoin pour fonctionner correctement. -
Ouvrez le fichier
/usr/local/etc/rc.d/corosync
et ajoutez les lignes suivantes au code après la ligne 17 sur les deux noeuds.mkdir -p /var/lib/corosync mkdir -p /var/run/qb chmod 777 /var/run/qb
-
Après avoir effectué les modifications, le Jle ressemblera à ceci :
#!/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"
Démarrer le service Corosync et Pacemaker sur tous les noeuds
Nous pouvons désormais ajouter corosync_enable=YES
et pacemaker_enable=YES
au fichier /etc/rc.conf
. Exécutez la commande suivante sur tous les noeuds.
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
Remarque :
- Le démarrage de Pacemaker prendra quelques secondes.
- Si un message d'erreur s'affiche lors du démarrage de Corosync : E
RROR: sysctl:kern.ipc.maxsockbuf must be at least 18874368
, accédez à la console pfSense, cliquez sur Système, puis sur Avancé, puis cliquez sur Paramètres réglables du système et mettez à jour la valeur desysctl:kern.ipc.maxsockbuf
sur tous les noeuds.
Vérification du statut du cluster
-
Maintenant que Pacemaker et Corosync sont en cours d'exécution sur tous les noeuds, vérifions le statut du cluster. Exécutez la commande suivante pour vérifier le statut :
Node1@ crm status
-
Désactivez Stonith pour l'instant car nous ne couvrons pas Stonith dans ce tutoriel.
Node1@ crm configure property stonith-enabled=false Node2@ crm configure property stonith-enabled=false
Comme vous pouvez le voir sur l'image, le statut indique que 2 noeuds sont configurés et en ligne.
Remarque :
- Si vous ne voyez pas que les deux noeuds sont configurés et en ligne comme indiqué dans l'image, cela signifie qu'une seule instance est configurée et est en ligne. Cela signifie que les nœuds ne sont pas en mesure de communiquer entre eux.
- Pour résoudre ce problème, consultez les listes de sécurité pfSense et Oracle Cloud pour autoriser le trafic UDP et ICMP.
Tâche 4 : configuration de l'interface de ligne de commande Oracle Cloud Infrastructure
Nous avons besoin de l'interface de ligne de commande OCI pour déplacer et associer l'adresse IP flottante virtuelle entre les noeuds au niveau de l'infrastructure. Nous avons déjà installé l'interface de ligne de commande OCI précédemment avec d'autres packages. Désormais, nous allons configurer la configuration. Nous voulons utiliser des principaux d'instance pour autoriser nos commandes d'interface de ligne de commande. Vous pouvez en savoir plus sur les ID instance et les classes OCI.
Suivez ce blog et configurez les principaux d'instance Oracle Cloud Infrastructure.
Configurer l'adresse IP flottante virtuelle
Dans ce tutoriel, nous allons utiliser 192.0.2.3/29 comme IP flottante virtuelle. Nous ne pouvons pas configurer un signal d'activité IPaddr2 dans pfSense qui est basé sur FreeBSD. Si nous l'avons essayé de toute façon, il générera une erreur "IP is not available", le package IP est linux uniquement. Nous allons configurer un signal d'activité IPaddr à la place.
-
Ouvrez
/usr/local/lib/ocf/resource.d/heartbeat/IPaddr
dans l'éditeur de fichiers. -
Ajoutez quelques lignes de code qui lanceront l'interface de ligne de commande OCI pour déplacer l'adresse IP d'une vNIC vers une autre. Ajoutez les lignes de code suivantes après la ligne 584 dans la méthode add_interface() du script.
-
Affectez les valeurs node1vnic, node2vnic, vnicip et hostname dans le script. Vous pouvez trouver les OCID de votre carte vNIC dans le menu Console Oracle Cloud, Compute et Attaché 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
-
Pour le noeud 1 : dans la console Oracle Cloud, accédez à Compute, puis cliquez sur pfSense-primary et sur VNIC attachées. Sélectionner la carte vNIC principale et ajouter une adresse IP privée secondaire (identique à floating_IP dans le script ci-dessus)
-
Pour les deux noeuds : dans la console pfSense, accédez à firewall, puis cliquez sur Virtual IPs et ajoutez un alias IP (comme floating_IP dans le script ci-dessus).
Configurer le signal d'activité
-
Dans le shell pfSense, exécutez la commande suivante sur le noeud 1.
crm configure primitive IP ocf:heartbeat:IPaddr params ip=192.0.2.3 cidr_netmask="29" nic=”vtnet0” op monitor interval="5s"
-
Dans ce tutoriel, 192.0.2.3 est l'adresse IP flottante. Veillez à remplacer les valeurs ip, netmask et nic par vos valeurs. Cela devrait créer une ressource IP dans Pacemaker.
Si vous exécutez crm status
maintenant, deux noeuds sont en ligne et une ressource disponible pointe vers pfSense-primary
. Vous pouvez également exécuter ipconfig vtnet0
pour vérifier si l'adresse IP virtuelle est désormais associée à l'interface sur le noeud principal.
Basculement de test
Etat en cours
-
Exécutez la commande suivante pour forcer un basculement :
crm resource move IP pfSense-secondary.example.com
-
Exécutez la commande
crm status
et vous verrez que la ressource IP flottante est maintenant déplacée vers pfSense-secondary. -
Vérifiez la disponibilité des cartes vNIC de la console Oracle Cloud pour vos noeuds. Vous pouvez constater que l'adresse IP flottante a été déplacée vers le deuxième noeud.
Remarque : si vous essayez de vous arrêter maintenant, la ressource passera à l'état Arrêté car elle ne sera pas en mesure de déterminer quel noeud considérer comme maître, car pfSense a besoin d'au moins 50 % de votes pour affecter un maître. Puisque nous n'avons que 2 nœuds et l'un d'entre eux est en panne, Pacemaker ne pourra pas en définir un comme maître.
-
Exécutez la commande suivante pour ignorer la stratégie des 50 % de votes :
crm configure property no-quorum-policy=ignore
-
Maintenant, testez un arrêt et vous pouvez voir le déplacement Floating IP.
Tâche 5 : configurer XLMRPC et pfsync
Nous voulons que nos nœuds aient un état synchronisé si nous voulons avoir un cluster véritablement hautement disponible, le simple fait de déplacer l'IP ne va pas le faire. Nous devons configurer un autre ensemble de vNIC sur chacune de nos instances pour la synchronisation.
Configurer l'interface de synchronisation
-
Pour les deux noeuds : accédez à Compute, sélectionnez l'instance, ouvrez VNIC attachées, puis cliquez sur créer une VNIC.
-
Une fois la carte vNIC créée et attachée, accédez à la console pfSense, cliquez sur interfaces, puis sur Assignments et ajoutez l'interface nouvellement détectée.
-
Cliquez sur l'interface nouvellement affectée et configurez-la.
-
Affectez l'adresse IPv4 statique et le masque de sous-réseau créés à l'étape précédente dans la console OCI.
-
Cliquez sur Enregistrer et appliquez les modifications.
Configurer la haute disponibilité sur le noeud principal
- Accédez à la console pfSense, cliquez sur Système, puis sur Synchronisation haute disponibilité.
- Activez la synchronisation d'état pfsync.
- Choisissez l'interface de synchronisation.
- Ajoutez l'adresse IP du noeud secondaire.
- Configuration de synchronisation XMLRPC : ajoutez l'adresse IP du noeud secondaire.
- Définissez le nom d'utilisateur et le mot de passe et vérifiez ce que vous voulez synchroniser.
- Cliquez sur Enregistrer et appliquer.
Configurer la haute disponibilité sur le noeud secondaire
- Accédez à la console pfSense, cliquez sur Système, puis sur Synchronisation haute disponibilité.
- Activez la synchronisation d'état pfsync.
- Choisissez l'interface de synchronisation.
- Ajoutez l'adresse IP du noeud principal.
- Cliquez sur Enregistrer et appliquer.
Les états du pare-feu sont synchronisés entre les deux noeuds et vous pouvez essayer d'ajouter une règle de pare-feu sur l'instance principale. Le même message apparaîtra également sur le noeud secondaire. Nous pouvons maintenant essayer de tester le basculement avec un arrêt du système.
Liens connexes
- pfSense Site Web
- Domaines de disponibilité
- Passerelles d'appairage
- Liste de sécurité
- Dépannage des erreurs Inode ou du système de fichiers complet
- Appel de services à partir d'une instance
- Appel de l'interface de ligne de commande OCI à l'aide du principal d'instance
Remarques
Auteur - Mayank Kakani (architecte OCI Cloud)
Ressources de formation supplémentaires
Parcourez d'autres ateliers sur docs.oracle.com/learn ou accédez à d'autres contenus de formation gratuite sur le canal Oracle Learning YouTube. En outre, visitez le site education.oracle.com/learning-explorer pour devenir un explorateur Oracle Learning.
Pour consulter la documentation du produit, visitez le site 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.