Nota:
- Este tutorial requiere acceso a Oracle Cloud. Para registrarse para obtener una cuenta gratuita, consulte Introducción al nivel gratuito de Oracle Cloud Infrastructure.
- Utiliza valores de ejemplo para credenciales, arrendamiento y compartimentos de Oracle Cloud Infrastructure. Al finalizar el laboratorio, sustituya estos valores por otros específicos de su entorno en la nube.
Configure un cluster activo/pasivo de alta disponibilidad pfSense con Corosync/Pacemaker en Oracle Cloud Infrastructure
Nota: Netgate u Oracle no soportan oficialmente pfSense en Oracle Cloud Infrastructure. Póngase en contacto con el equipo de soporte de pfSense antes de probar este tutorial.
Introducción
Oracle Cloud Infrastructure (OCI) es un juego de servicios en la nube complementarios que permiten crear y ejecutar una amplia gama de aplicaciones y servicios en un entorno alojado de alta disponibilidad. Oracle Cloud Infrastructure (OCI) ofrece funciones informáticas de alto rendimiento (como instancias de hardware físico) y capacidad de almacenamiento en una red virtual de superposición flexible accesible de forma segura desde su red local.
pfSense es un firewall y enrutador de código abierto y gratuito que también incluye gestión de amenazas unificada, equilibrio de carga y varias WAN, entre otros.
Objetivo
Configure el dispositivo virtual pfSense en una configuración activa/pasiva de alta disponibilidad con la ayuda de Corosync/Pacemaker en OCI.
Requisitos
- Acceso a un arrendamiento de Oracle Cloud
- Una configuración de red virtual en la nube en el arrendamiento
- Toda la configuración de políticas necesaria para Oracle Object Storage, Virtual Cloud Networks, Compute e Imágenes personalizadas.
Puntos a nota
- En este tutorial, tenemos una configuración de red virtual en la nube regional con dos subredes: pública y privada con el CIDR de 192.0.2.0/29 y 192.0.2.8/29 respectivamente.
- Instancia principal: Node1, instancia secundaria: Node2
- Node1 hostname - "pfSense-primary" e IP: 192.0.2.2/29
- Node2 hostname - "pfSense-secondary" e IP: 192.0.2.5/29
- Puede utilizar la herramienta pfSense Edit File ubicada en la consola pfSense, Diagnostics, Edit file para realizar cambios en los archivos.
- El término shell pfSense se utiliza en este tutorial. Puede acceder al shell si accede a la instancia y selecciona 8 en el menú pfSense.
Tarea 1: Instalación de dos dispositivos virtuales pfSense en Oracle Cloud
En este tutorial, utilizaremos dos dispositivos virtuales pfSense para alta disponibilidad. Puede configurar varios nodos en función de sus necesidades. Siga los pasos de este tutorial Instalación y configuración de pfSense en Oracle Cloud Infrastructure.
Nota:
- Ambos nodos se deben configurar en distintos dominios de disponibilidad y se deben poder hacer ping entre ellos.
- Puede configurar estos nodos en diferentes regiones o redes virtuales en la nube, pero asegúrese de que tiene definidos los gateways de intercambio de tráfico y las tablas de rutas adecuados para permitir a los nodos acceder entre sí.
- Si no puede hacer ping entre los nodos, verifique las reglas de firewall pfSense, así como la lista de seguridad de Oracle Cloud asociada a su instancia y permita el tráfico ICMP.
Instalar los paquetes necesarios
-
Los repositorios FreeBSD están desactivados por defecto. Para activar los repositorios FreeBSD, siga estos pasos:
- Defina FreeBSD:
{ enabled: yes } in /usr/local/etc/pkg/repos/FreeBSD.conf
- Defina FreeBSD:
{ enabled: yes } in /usr/local/share/pfSense/pkg/repos/pfSense-repo.conf
- Defina FreeBSD:
-
Después de activar los repositorios FreeBSD, actualice el gestor de paquetes.
Node1@ pkg update Node2@ pkg update
Nota: Esta acción actualizará el gestor de paquetes y los metadatos del repositorio.
-
Instale los siguientes cuatro paquetes necesarios para configurar el cluster de alta disponibilidad.
- Marcapasos
- Corosíncrono
- Crmsh
- CLI de OCI
Ejecute los siguientes comandos para la instalación:
Node1@ pkg install pacemaker2 corosync2 crmsh devel/oci-cli Node2@ pkg install pacemaker2 corosync2 crmsh devel/oci-cli
Siga las instrucciones para completar la instalación.
Tarea 3: Configuración de Pacemaker/Corosync en las instancias
Configurar Corosync
-
Cree un nuevo archivo de configuración de Corosync ejecutando el siguiente comando en ambas instancias.
Node1@ touch /usr/local/etc/corosync/corosync.conf Node2@ touch /usr/local/etc/corosync/corosync.conf
-
Pegue la siguiente configuración en el script de ambos nodos.
Nota: Asegúrese de sustituir las direcciones IP en la lista de nodos.
# 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 intenta iniciar Corosync ahora, fallará con el mensaje de error "No space left on device".
Activar disco RAM en ambos nodos
Corosync y Pacemaker se basan en el directorio /var
para su tiempo de ejecución y, si realizó una instalación por defecto, el espacio disponible para /var
es muy limitado. Debe configurar y utilizar la memoria (RAM) para los directorios /var
y /tmp
. También nos ayudará a aumentar el rendimiento.
-
En la consola pfSense, navegue hasta Sistema, haga clic en Avanzado y, a continuación, haga clic en Varios.
-
Desplácese hacia abajo hasta Ram Disk Settings y seleccione la casilla de control Use Ram Disks (Usar discos Ram).
-
Introduzca el tamaño del disco RAM que desea asignar a los directorios
/tmp
y/var
. -
Guarde la configuración. Se le pedirá que reinicie por primera vez que active el disco RAM. Posteriormente, podrá aumentar o disminuir el tamaño del disco RAM sobre la marcha.
Nota: Puesto que estamos utilizando discos Ram, en caso de un cierre del sistema, se perderán todos los archivos de
/tmp
y/var
. Debemos configurar un script de inicio (archivo rc.d) que cree los directorios que Corosync y Pacemaker necesitan para funcionar correctamente. -
Abra el archivo
/usr/local/etc/rc.d/corosync
y agregue las siguientes líneas al código después de la línea 17 en ambos nodos.mkdir -p /var/lib/corosync mkdir -p /var/run/qb chmod 777 /var/run/qb
-
Después de haber realizado los cambios, el Jle tendrá un aspecto similar a este:
#!/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"
Iniciar el servicio Corosync y Pacemaker en todos los nodos
Ahora podemos agregar corosync_enable=YES
y pacemaker_enable=YES
al archivo /etc/rc.conf
. ejecute el siguiente comando en todos los nodos.
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:
- Tardará unos segundos en iniciar Pacemaker.
- Si recibe un mensaje de error al intentar iniciar Corosync: E
RROR: sysctl:kern.ipc.maxsockbuf must be at least 18874368
, vaya a la consola pfSense, haga clic en Sistema, a continuación, haga clic en Avanzado y, a continuación, haga clic en Tabla ajustable del sistema y actualice el valor desysctl:kern.ipc.maxsockbuf
en todos los nodos.
Compruebe el estado del cluster
-
Ahora que hay Pacemaker y Corosync en ejecución en todos los nodos, verifiquemos el estado del cluster. Ejecute el siguiente comando para verificar el estado:
Node1@ crm status
-
Desactive Stonith por ahora, ya que no estamos cubriendo Stonith en este tutorial.
Node1@ crm configure property stonith-enabled=false Node2@ crm configure property stonith-enabled=false
Como puede ver en la imagen, el estado le indica que hay 2 nodos configurados y en línea.
Nota:
- Si no ve que ambos nodos están configurados y en línea como se muestra en la imagen, esto indica que sólo una instancia está configurada y en línea. Esto significa que los nodos no pueden comunicarse entre sí.
- Para resolverlo, consulte pfSense y las listas de seguridad de Oracle Cloud para permitir el tráfico UDP e ICMP.
Tarea 4. Configuración de la CLI de Oracle Cloud Infrastructure
Necesitamos la CLI de OCI para mover y asociar la IP flotante virtual entre los nodos en el nivel de infraestructura. Ya hemos instalado la CLI de OCI anteriormente con otros paquetes. Ahora configuraremos la configuración. Queremos utilizar principales de instancia para autorizar nuestros comandos de la CLI. Puede obtener más información sobre los principales de instancia y la cli de OCI
Siga este blog y configure los principales de instancia de Oracle Cloud Infrastructure.
Configurar IP flotante virtual
En este tutorial, utilizaremos 192.0.2.3/29 como IP flotante virtual. No se puede configurar un latido IPaddr2 en pfSense que esté basado en FreeBSD. Si lo probamos de todos modos, devolverá un error "IP is not available", la IP del paquete es solo linux. En su lugar, configuraremos un latido de calor IPaddr.
-
Abra
/usr/local/lib/ocf/resource.d/heartbeat/IPaddr
en el editor de archivos. -
Agregue algunas líneas de código que iniciarán la CLI de OCI para mover la IP de una vNIC a otra. Agregue las siguientes líneas de código después de la línea 584 en el método add_interface() del script.
-
Asigne los valores node1vnic, node2vnic, vnicip y hostname en el script. Puede encontrar los OCID de vNIC en el menú Consola de Oracle Cloud, Recursos informáticos, Asociado 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
-
Para el nodo 1: en la consola de Oracle Cloud, vaya a Recursos informáticos, haga clic en pfSense-primary y, a continuación, haga clic en VNIC asociadas. Seleccione la vNIC principal y agregue una IP privada secundaria (igual que floating_IP en el script anterior).
-
Para ambos nodos: en la consola pfSense, vaya a firewall y, a continuación, haga clic en IP virtuales y agregue un alias de IP (igual que floating_IP en el script anterior).
Configurar latido
-
En el shell pfSense, ejecute el siguiente comando en el nodo 1.
crm configure primitive IP ocf:heartbeat:IPaddr params ip=192.0.2.3 cidr_netmask="29" nic=”vtnet0” op monitor interval="5s"
-
En este tutorial, 192.0.2.3 es la IP flotante. Asegúrese de sustituir los valores de IP, máscara de red y nic por los valores. Debe crear un recurso de IP en el marcador.
Si ejecuta crm status
ahora, verá dos nodos en línea y un recurso disponible que apunta a pfSense-primary
. También puede ejecutar ipconfig vtnet0
para comprobar si la IP virtual está ahora asociada a la interfaz en el nodo principal.
Probar Failover
Estado Actual
-
Ejecute el siguiente comando para forzar un switchover:
crm resource move IP pfSense-secondary.example.com
-
Ejecute el comando
crm status
y verá que el recurso de IP flotante ahora se mueve a pfSense-secondary. -
Compruebe los avachments de vNIC de la consola de Oracle Cloud de sus nodos; verá que la IP flotante ahora se ha movido al segundo nodo.
Nota: Si intenta cerrar ahora, el recurso pasará al estado parado, ya que no podrá averiguar qué nodo debe considerarse maestro, ya que pfSense necesita al menos un 50% de votos para asignar un maestro. Puesto que solo tenemos 2 nodos y uno de ellos está caído, Pacemaker no podrá establecer uno como maestro.
-
Ejecute el siguiente comando para ignorar la política de votos del 50%:
crm configure property no-quorum-policy=ignore
-
Ahora pruebe un cierre y podrá ver el movimiento de IP flotante.
Tarea 5. Configuración de XLMRPC y pfsync
Queremos que nuestros nodos tengan un estado sincronizado si queremos tener un cluster realmente de alta disponibilidad; solo mover las IP no lo hará. Necesitamos configurar otro juego de vNIC en cada una de nuestras instancias para la sincronización.
Configurar interfaz de sincronización
-
Para Ambos nodos: vaya a Compute, seleccione la instancia, abra VNIC asociadas y, a continuación, haga clic en crear vnic.
-
Una vez creada y conectada la vNIC, vaya a la consola pfSense, haga clic en interfaces y, a continuación, haga clic en Asignaciones y agregue la interfaz recientemente detectada.
-
Haga clic en la interfaz recién asignada y configure su configuración.
-
Asigne la dirección IPv4 estática y la máscara de subred que hemos creado en el paso anterior en la consola de OCI.
-
Haga clic en Guardar y aplique los cambios.
Configurar la alta disponibilidad en el nodo primario
- Vaya a la consola pfSense, haga clic en Sistema y, a continuación, haga clic en Sincronización de alta disponibilidad.
- Active la sincronización de estado de pfsync.
- Seleccione la interfaz de sincronización.
- Agregue la IP del nodo secundario.
- Configuración de sincronización de XMLRPC: agregue la IP del nodo secundario.
- Defina el nombre de usuario y la contraseña, y compruebe lo que desea sincronizar.
- Haga clic en Guardar y aplicar.
Configurar la alta disponibilidad en el nodo secundario
- Vaya a la consola pfSense, haga clic en Sistema y, a continuación, haga clic en Sincronización de alta disponibilidad.
- Active la sincronización de estado de pfsync.
- Seleccione la interfaz de sincronización.
- Agregue la IP del nodo primario.
- Haga clic en Guardar y aplicar.
Los estados de firewall se sincronizan entre ambos nodos y puede intentar agregar una regla de firewall en la instancia principal; verá que también aparece lo mismo en el nodo secundario. Ahora podemos probar el failover de nuevo con el cierre del sistema.
Enlaces relacionados
- pfSense Sitio web
- Dominios de disponibilidad
- Gateways de intercambio de tráfico
- Lista de seguridad
- Resolución de errores completos del sistema de archivos o del inode
- Llamada a servicios desde instancias
- Llamada a la CLI de OCI mediante el principal de instancia
Agradecimientos
Autor - Mayank Kakani (Arquitecto de nube de OCI)
Más recursos de aprendizaje
Explore otros laboratorios en docs.oracle.com/learn o acceda a más contenido de aprendizaje gratuito en el canal YouTube de Oracle Learning. Además, visite education.oracle.com/learning-explorer para convertirse en un explorador de Oracle Learning.
Para obtener documentación sobre el producto, visite 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.