noticias
Serverspace Tecnologías en los Emiratos Árabes Unidos: lanzamiento de Falconcloud
VB
28 de Octubre de 2022
Actualizado en abril 6, 2023

Cómo hacer que su sitio web sea a prueba de desastres con NGINX y Keepalive

NGINX Servidor web

que es keepalive

Keepalived es un servicio, diseñado para la creación y el soporte de infraestructura sin fallas. No es una entidad suficiente y necesita un servicio de equilibrador para proporcionar acceso al contenido "objetivo". En este artículo, mostraré cómo configurar un paquete "keepalived + haproxy + webserver" en Ubuntu 20.04 litros.

Preparación de procedimientos

Antes de la instalación necesitamos preparar nuestra infraestructura:

  • Dos servidores para contenido idéntico y dos servidores para keepalive daemon y haproxy balancer;
  • Ubuntu 20.04 OS y acceso a cuentas privilegiadas en todos estos servidores;
  • Dos subredes, una pública y otra privada. Los servidores de contenido por razones de seguridad no serán accesibles a través de la subred pública, los servidores de acceso deben estar conectados a ambas redes;
  • Una dirección IP pública adicional, enrutada a la subred pública y no asignada a ningún servidor de acceso;
  • Nombre de dominio, "apuntado" a esta IP "adicional".

Comencemos a preparar:

  • Crear cuatro servidores a través de ServerSpace cliárea de entrada. Todos ellos deben estar ubicados en un centro de datos;

pic1

  • Cree dos subredes como se describe;

pic2

pic3

  • Conecte todos los servidores a las redes creadas. Luego reinstale el sistema operativo, es la forma más rápida de aplicar configuraciones "dentro" de los sistemas operativos;

pic4

pic5

  • Como resultado, verá todas las direcciones asignadas en los detalles de las subredes. Recuerde estas direcciones IP, se necesita más. Además, una IP no utilizada (p. ej., 45.14.48.134 en mi ejemplo) se utilizará como dirección "flotante" para keepalived;

pic6

pic7

  • Crear firewall regla para bloquear todo el tráfico entrante a los servidores "backend" a través de la interfaz pública, además de la subred asignada. No olvide incluir en la lista blanca su propia IP, hará que la administración de servidores sea más cómoda. La forma más fácil de hacer esto: vaya a la configuración de detalles de su servidor, agregue las reglas y click a la SAVE botón. Recuerde, las reglas con la acción "permitir" deben colocarse "superior" y luego bloquear las reglas;

pic6

  • Repita este paso para el servidor "content2".
  • Editar / etc / hosts en cada cuatro servidores, simplemente agregue las siguientes líneas al final:

<backend_server_one_IP> content1 content1.your.domain
<backend_server_two_IP> content2 content2.your.domain
<balancer_server_one_IP> haproxy1 haproxy1.your.domain
<balancer_server_two_IP> haproxy2 haproxy2.your.domain
<1st_floating_IP_for_keepalived> your.domain
<2nd_floating_IP_for_keepalived> your.domain

pic9

Configuración del paquete "servidor web, equilibrador y reloj demonio"

  • Instale su proyecto en los servidores de contenido. Se debe colocar contenido idéntico en ambos backends. Como este artículo es solo un ejemplo, instalaré nginx servidor web con un cambio: los archivos de índice serán diferentes para mostrar cómo funciona todo;
apt-get update; apt install -y nginx

echo $(hostname) > /var/www/html/index.nginx-debian.html  # path may be different, it is website working directory and index file

pic10

  • Abierto SSH-sesiones en el primer servidor balanceador e instale el paquete haproxy.
apt -y install haproxy
  • Editar nano /etc/haproxy/haproxy.cfg config-file y agregue las líneas de seguimiento;

#frontend
#---------
frontend my_haproxy
bind *:80
stats uri /haproxy?stats
default_backend my_haproxy

# backend
#---------
backend my_haproxy
balance roundrobin
mode http
server content1 <1st_backend_server_private_IP>:80 check
server content2 <2nd_backend_server_private_IP>:80 check

pic11

  • Reiniciar los servicios haproxy
service haproxy restart
  • Abrir dos separados windows de cualquier terminal en su computadora local y ejecute estos comandos (uno por ventana):

while sleep 3; do curl http://<1st_balancer_public_IP>; done

while sleep 3; do curl http://<2nd_balancer_public_IP>; done

Si ve "respuestas" intercaladas en ambas terminales windows - los haproxies están funcionando, vaya al siguiente paso;

pic12

  • Instale el paquete de software Keepalive Daemon en ambos equilibradores:
apt install -y keepalived
  • Encuentre y recuerde los nombres de las interfaces públicas en ambos servidores balanceadores;
ip a | grep <server_public_IP>

pic13

  • Crear parameters archivo en el la primera balanceador y pasar el siguiente código dentro:
nano /etc/keepalived/keepalived.conf

 

vrrp_instance MY_KEEPALIVED1 {
state MASTER
interface ens192
virtual_router_id 1
priority 11

virtual_ipaddress {
45.14.48.134/29 dev ens192 label ens192:1
}
}

pic14

Paramdescripción de eters:

instancia_vrrp - cualquier nombre sin spaaquellos,

estado - rol de servidor,

interfaz. - nombre de la interfaz de red, lo sabía en el paso anterior,

id_enrutador_virtual - identificador de instancia, debe ser idéntico en todos los balanceadores,

lista de prioridades - usando orden, el servidor maestro debe tener mayor prioridad,

dirección_i_virtual - una de las direcciones IP no utilizadas en la subred, su dominio debe estar "anclado" a esta dirección.

  • Cree un archivo de configuración para el segundo servidor equilibrador:

vrrp_instance MY_KEEPALIVED1 {
state SLAVE
interface ens192
virtual_router_id 1
priority 10

virtual_ipaddress {
45.14.48.134/29 dev ens192 label ens192:1
}
}

pic15

Preste atención al texto de configuración - "prioridad" y "estado" parametros se "intercambian", todos los demás puntos se mantienen idénticos.

  • Habilite la carga automática y reinicie los servicios en ambos servidores frontales;
systemctl enable haproxy && service haproxy restart; systemctl enable keepalived && service keepalived start

pic16

  • Compruebe el estado. La imagen como la siguiente muestra que los servicios se están ejecutando;
systemctl status haproxy && service keepalived status

pic17

Comprobación y simulación de desastres

Entonces, es hora de revisar nuestro trabajo.

  • Abra la terminal en su computadora nuevamente y ejecute

while sleep 5; do curl http://<your_domain>; done

Ambos servidores están funcionando y respondiendo a su vez;

pic18

  • Detener master-balancer;
systemctl stop haproxy && service keepalived stop

Como vemos, el balanceador de respaldo se convierte en maestro, sin interrupciones de entrega de contenido;

pic19

pic20

  • Vamos a "soltar" un nodo de contenido;
service nginx stop

Como vemos, solo se eliminó un paquete, luego nuestro proyecto continúa entregando contenido desde el segundo nodo;

pic21

  • Cuando el servidor "fallido" regresa, su contenido también regresa;

pic22

  • Y finalmente, si el balanceador "caído" regresa, toma el papel de maestro nuevamente.
systemctl start haproxy && service keepalived start

pic23

Conclusión

En este tutorial expliqué qué es el demonio keepalive y cómo hacer una infraestructura a prueba de fallas con nginx, haproxy y paquetes keepalived en Ubuntu 20 litros.

Votar:
5 de 5
Calificación promedio: 5
Calificado por: 1
1101 CT Ámsterdam Países Bajos, Herikerbergweg 292
+31 20 262-58-98
700 300
ITGLOBAL.COM NL
700 300
Utilizamos cookies para hacer que su experiencia en el Serverspace mejor. Al continuar navegando en nuestro sitio web, usted acepta nuestros
Uso de Cookies y Sitio de Política de privacidad.