Inicio Linux & Systems Networks & Infrastructure Cybersecurity Cloud & DevOps SIEM & Monitoring DFIR & Threat Intel Development & Other Todas las categorias Herramientas

Nginx high availability en FreeBSD con CARP y Monit

Nginx  high availability en FreeBSD con CARP y Monit

Tabla de contenidos

¿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:

Diagrama freebsd nginx

Instalamos en los dos nodos los paquetes necesarios

text
pkg install nginx monit

Activamos CARP (ambos nodos)

bash
echo ‘carp_load=»YES»‘ >> /boot/loader.conf

kldload carp

Configuramos el direccionamiento IP

freebsdweb01

bash
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

bash
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:

bash
cp /usr/local/etc/monitrc.sample /usr/local/etc/monitrc

Agregamos la configuración para la monitorizacón del servicio de nginx

text
# 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

bash
echo ‘nginx_enable=»YES»‘ >> /etc/rc.conf
echo ‘monit_enable=»YES»‘ >> /etc/rc.conf

Iniciamos ambos servicios

bash
service nginx start
service monit start

Ahora solo faltaría realizar las pruebas de alta disponibilidad.

:wq!

Comentarios