¿Que es CARP?
Common Address Redundancy Protocol (CARP) permite que varios servidores compartan la misma dirección IP y la misma identificación de host virtual (VHID) para proporcionar alta disponibilidad para uno o más servicios. Esto significa que uno o más servidores pueden fallar, y los otros servidores tomarán el control de forma transparente.
¿Que es Monit?
Monit es una utilidad para administrar y monitorear procesos, programas, archivos, directorios y sistemas de archivos en un sistema Unix. Monit lleva a cabo el mantenimiento y la reparación automáticos y puede ejecutar en situaciones de error.
P.ej. Monit puede iniciar un proceso si no se ejecuta, reiniciar un proceso si no responde y detener un proceso si usa demasiados recursos. Puede usar Monit para monitorear archivos, directorios y sistemas de archivos en busca de cambios, tales como cambios en la fecha y hora, cambios en la suma de verificación o cambios de tamaño.
Configuración del entorno
Para la configuración de este escenario en alta disponibidad en FreeBSD vamos a emplear CARP el cual nos proporcionara una ip virtual y Monit con el cual realizaremos la monitorización del servicio de nginx.
Para llevar esto la nic em1 la cual es la que realiza la comunicación entre los servidores tiene que estar en modo promiscuo.
Diagrama:
Instalamos en los dos nodos los paquetes necesarios
pkg install nginx monit
Activamos CARP (ambos nodos)
echo ‘carp_load=»YES»‘ >> /boot/loader.conf
kldload carp
Configuramos el direccionamiento IP
freebsdweb01
cat /etc/rc.conf
hostname=»freebsdweb01″
keymap=»es.acc.kbd»
ifconfig_em0=»inet 192.168.1.40 netmask 255.255.255.0″
ifconfig_em1=»inet 10.10.1.8 netmask 255.255.255.0″
ifconfig_em1_alias0=»inet vhid 1 pass testpass alias 10.10.1.10/32″
defaultrouter=»192.168.1.1″
freebsdweb02
hostname=»freebsdweb02″
keymap=»es.acc.kbd»
ifconfig_em0=»inet 192.168.1.41 netmask 255.255.255.0″
ifconfig_em1=»inet 10.10.1.9 netmask 255.255.255.0″
ifconfig_em1_alias0=»inet vhid 1 pass testpass alias 10.10.1.10/32 advskew 100″
defaultrouter=»192.168.1.1″
Configuración de monit (en ambos nodos)
debemos copiar el archivo de configuración de ejemplo:
cp /usr/local/etc/monitrc.sample /usr/local/etc/monitrc
Agregamos la configuración para la monitorizacón del servicio de nginx
# Monitors the Nginx HTTP server
check process nginx with pidfile /var/run/nginx.pid
start program «/usr/local/etc/rc.d/nginx start»
stop program «/usr/local/etc/rc.d/nginx stop»
if failed port 80 protocol http then restart
if failed port 443 protocol http then restart
if 1 restarts within 2 cycles then exec «/sbin/ifconfig em1 vhid 1 state backup»
Agregamos en el inicio el servico de nginx y monit
echo ‘nginx_enable=»YES»‘ >> /etc/rc.conf
echo ‘monit_enable=»YES»‘ >> /etc/rc.conf
Iniciamos ambos servicios
service nginx start
service monit start
Ahora solo faltaría realizar las pruebas de alta disponibilidad.
:wq!
Que versión de FreeBSD has utilizado para la creación del SIRP y configurar availability.
Buenas,
Actualmente están bajo FreeBSD 12.0-RELEASE-p3
Un saludo.