GNU/Linux >> Tutoriales Linux >  >> Linux

Configurar el equilibrio de carga con HAProxy, Nginx y Keepalived en Linux

En el método convencional de alojamiento de un servidor o sitio web, el servidor se aloja a través de un único servidor HTTP. Cuando los clientes acceden al servidor, se les permite acceder al servidor. Pero, ¿qué sucede cuando varios usuarios, aún más; miles de clientes, visitan el sitio a la vez para alguna consulta? ¿Qué pasará si el servidor falla? ¿Cómo equilibrará la carga el servidor único? Para responder a todas estas preguntas, podemos utilizar el término 'equilibrio de carga'. Si está buscando herramientas auténticas para administrar el tráfico de su servidor, definitivamente puede configurar HAProxy, Nginx y Keepalived en Linux para equilibrar la carga.

Fundamentos de HAProxy, Nginx y Keepalived

Nginx es bien conocido por sus servicios de equilibrio de carga y proxy. En los servidores de balanceador de carga, los clientes se conectan al servidor a través de un balanceador de carga en lugar de conectarse directamente con el servidor. El uso de Nginx, HAProxy y Keepalived funciona bien para el equilibrio de carga en Linux. Cuando un servidor falla, el balanceador de carga conecta a los clientes a otro servidor que está en línea.

HAProxy es una herramienta de equilibrio de carga gratuita y de código abierto para servidores web HTTP y TCP. Está escrito en el lenguaje de programación C y tiene la licencia pública GNU. Es altamente completable y fácil de configurar para el equilibrio de carga en Linux. El término HAProxy significa herramienta de proxy de alta disponibilidad. Puede implementar la herramienta HAProxy para mejorar el rendimiento, la disponibilidad y el equilibrio de carga del servidor.

La herramienta Keepalived actúa como intermediario entre dos servidores que pueden redirigir al cliente de un servidor a otro cuando alguno de ellos está caído. Keepalived funciona en un protocolo de redundancia de enrutador virtual para equilibrar la carga y disminuir el problema de falla del servidor. El uso de HAProxy es bueno para equilibrar la carga y hacer que el servidor esté siempre activo.

Por lo tanto, no hay garantía de que HAProxy permanezca siempre activo. Aquí viene Keepalived para hacer una copia de seguridad de su HAProxy. Puede distribuir la solicitud del cliente a servidores ubicados de forma remota y manejar el equilibrio de carga de capa 4, capa 7 (capa de transporte y aplicación). Además, HAProxy puede manejar listas de control de acceso y terminologías de backend y frontend.

Equilibrio de carga con HAProxy, Nginx y Keepalived en Linux

Como ya hemos hablado mucho sobre HAproxy, Nginx y la herramienta Keepalived para Linux, pasemos al tutorial. En esta publicación, veremos cómo configurar el equilibrio de carga con HAProxy, Nginx y Keepalived en Linux. Necesitaremos conocimientos fundamentales a nivel de servidor y la capacidad básica de usar Linux para acompañar esta publicación.

Paso 1:Instale Nginx en Linux para el equilibrio de carga

Ya que veremos los métodos para hacer que nuestro servidor sea más potente, el equilibrio de carga y más manejo de clientes, instalar el servidor web Nginx HTTP sería el primer paso para comenzar el proceso. La instalación del servidor web Nginx es fácil y directa, y puede usar los siguientes comandos para instalar el servidor web Nginx en su máquina Linux.

  • Instalar el servidor web Nginx en Ubuntu/Debian Linux
sudo apt update
sudo apt install nginx
- -

  • Ejecute los siguientes comandos para instalar Nginx en Fedora/Red Hat Linux
yum -y install nginx

Después de instalar el servidor Nginx, configuraremos, activaremos e iniciaremos el servidor en su máquina. Lea esta publicación para ver cómo comenzar con el servidor Nginx en Linux.

Paso 2:Instale HAproxy Load Balancer en Linux

Después de instalar y configurar el servidor Nginx en su máquina Linux, podría funcionar bien como servidor en su máquina o red. Pero, como estamos tratando de hacer un servidor de equilibrio de carga, ahora instalaremos y configuraremos la herramienta HAproxy en nuestro sistema.

1. Instalar y configurar HAproxy en Ubuntu para equilibrio de carga

Antes de instalar HAProxy en su sistema, es posible que desee verificar si los servicios HAProxy ya están en su sistema o no.

sudo apt show haproxy

Ahora, agregue el repositorio HAProxy a su sistema a través de los paquetes PPA. Una vez que el PPA abra el repositorio, actualice el repositorio de su sistema.

sudo add-apt-repository ppa:vbernat/haproxy-1.7
sudo apt update

Finalmente, ejecute los siguientes comandos en su sistema Ubuntu/Debian Linux para obtener HAProxy en el sistema. Después de instalar HAProxy, verifique la versión de HAProxy para asegurarse de que se haya instalado correctamente en su máquina.

sudo apt install -y haproxy
haproxy -v

Una vez que se haya realizado la instalación de HAProxy en su máquina Linux, ahora editaremos el script de configuración para configurar HAProxy con nuestro servidor. Aquí, editaremos algunos scripts de configuración de HAProxy, y tenga cuidado al editar esos scripts y hacer una copia de seguridad de esos archivos para restaurar la configuración predeterminada si algo sale mal.

Primero, ejecute el siguiente comando en el shell de su terminal con acceso de root para editar el script de configuración de HAProxy. Aquí, estoy usando la herramienta de edición de secuencias de comandos Nano y puede usar cualquiera de sus herramientas favoritas.

sudo nano /etc/haproxy/haproxy.cfg

Ahora, copie y pegue las siguientes líneas de script dentro del archivo, luego guarde y cierre el archivo. Las siguientes líneas de script definen el estado del frontend y del backend con HAProxy. Ingrese los detalles de su servidor en el nombre del servidor, IP y otros campos de credenciales.

frontend http_front
bind *:80
stats uri /haproxy?stats
default_backend http_back

backend http_back
balance roundrobin
server :80 check
server :80 check

Ahora, ejecute el siguiente comando en el shell del terminal para editar y configurar el script HAproxy.

sudo nano /etc/haproxy/haproxy.cfg

Utilice el siguiente script de configuración para configurar los ajustes de HAproxy.

frontend http_front
bind *:80
stats uri /haproxy?stats
acl url_blog path_beg /blog
use_backend blog_back if url_blog
default_backend http_back

backend http_back
balance roundrobin
server :80 check
server :80 check

backend blog_back
server :80 check

Cuando finalice la configuración, ahora puede reiniciar la herramienta HAProxy en su máquina Linux ejecutando el siguiente comando de control del sistema con acceso de root.

sudo systemctl status haproxy
sudo systemctl restart haproxy

Ahora puede ejecutar el comando que se menciona a continuación con la dirección de su servidor para verificar el estado del servidor.

http:///haproxy?stats

2. Instalar y configurar HAproxy en Fedora

Instalar la herramienta de equilibrio de carga HAProxy en Fedora Linux es similar a instalarla en los sistemas Debian/Ubuntu. Primero, actualice el repositorio del sistema, luego ejecute el comando DNF para instalar la herramienta HAProxy en su máquina Linux.

yum -y update
yum -y install haproxy

Una vez que finalice la instalación, ejecute el siguiente comando para hacer una copia de seguridad del script de configuración antes de realizar cualquier cambio.

cd /etc/haproxy/
mv haproxy.cfg haproxy.cfg_bac

Ahora puede crear un nuevo script de configuración de HAProxy ejecutando el siguiente comando táctil que se indica a continuación. Luego edite el script con el siguiente comando Nano.

touch haproxy.cfg
nano haproxy.cfg

Puede copiar y pegar el siguiente script de configuración, luego guardar y salir del archivo.

global
log /dev/log local0
log /dev/log local1 notice
chroot /var/lib/haproxy
stats timeout 30s
user haproxy
group haproxy
daemon
defaults
log global
mode http
option httplog
option dontlognull
timeout connect 5000
timeout client 50000
timeout server 50000

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

#round robin balancing backend http
#-----------------------------------
backend http_back
balance roundrobin
#balance leastconn
mode http
server webserver1 10.13.211.169:80 check # ip_address_of_1st_centos_webserver
server webserver2 10.13.211.158:80 check # ip_address_of_2nd_centos_webserver

Después de agregar el script en el archivo de configuración, habilitaremos, iniciaremos y verificaremos el estado de la herramienta HAProxy en nuestro Fedora Linux.

systemctl enable haproxy
systemctl start haproxy
systemctl status haproxy

También puede verificar si HAProxy está funcionando bien en su sistema o no al extraer el estado de HAProxy a través de su navegador web.

http://10.13.211.194/haproxy?stats

Los siguientes comandos de cURL también devolverán el estado del servidor en profundidad junto con el estado de HAProxy.

curl 10.13.211.194
curl 10.13.211.194

Paso 3:Instalar Keepalived en Linux

Como ya hemos discutido Keepalived, aquí estamos pasando directamente por el proceso de instalación de Keepalived en sistemas Linux. Aquí veremos métodos de instalación y configuración de la herramienta Keepalived en Fedora y Debian Linux.

1. Instalar y configurar Keepalived en Ubuntu/Debian

Para instalar la herramienta de equilibrio de carga Keepalived en Ubuntu y otros sistemas Debian Linux, ejecute el siguiente comando para obtener las herramientas esenciales de compilación en sus sistemas. Luego navegue por el directorio de inicio y ejecute el comando wget que se proporciona a continuación para descargar el archivo Keepalived comprimido en el sistema de archivos.

sudo apt-get install build-essential libssl-dev
cd ~
wget http://www.keepalived.org/software/keepalived-1.2.19.tar.gz

Cuando finalice la descarga, use el siguiente comando tar para extraer el archivo, luego explore el directorio extraído a través del comando CD.

tar xzvf keepalived*
cd keepalived*

Ahora puede ejecutar los siguientes comandos para instalar la herramienta Keepalived en su sistema Ubuntu.

./configure
make
sudo make install

Cuando finaliza la instalación, es hora de editar la configuración para configurar Keepalived con nuestro servidor. Ejecute el siguiente comando que se proporciona a continuación para editar el script de configuración.

sudo nano /etc/init/keepalived.conf

Cuando se abra la secuencia de comandos, copie y pegue la siguiente secuencia de comandos que se proporciona a continuación.

description "load-balancing and high-availability service"

start on runlevel [2345]
stop on runlevel [!2345]

Ahora, ejecute mkdir comando para crear un nuevo script de configuración para la herramienta Keepalived, luego complételo con el script de configuración.

sudo mkdir -p /etc/keepalived
sudo nano /etc/keepalived/keepalived.conf

Utilice las siguientes líneas de script para completar el archivo de configuración de Keepalived.

vrrp_script chk_haproxy {
script "pidof haproxy"
interval 2
}

vrrp_instance VI_1 {
interface eth1
state MASTER
priority 200

virtual_router_id 33
unicast_src_ip primary_private_IP
unicast_peer {
secondary_private_IP
}


}

Ahora, edite el script de configuración de Keepalived desde etc directorio y agregue las siguientes líneas en su secuencia de comandos.

sudo nano /etc/keepalived/keepalived.conf

Líneas de script que necesitaremos poner en el archivo de configuración.

vrrp_script chk_haproxy {
script "pidof haproxy"
interval 2
}

vrrp_instance VI_1 {
interface eth1
state BACKUP
priority 100

virtual_router_id 33
unicast_src_ip secondary_private_IP
unicast_peer {
primary_private_IP
}

authentication {
auth_type PASS
auth_pass password
}

track_script {
chk_haproxy
}

notify_master /etc/keepalived/master.sh
}

Después de configurar los scripts para Keepalived, ahora crearemos un script de configuración del balanceador de carga secundario y completaremos el script con las líneas de script necesarias.

sudo nano /etc/keepalived/keepalived.conf

Ejecute el comando nano para editar el script y complete el script con las líneas que se indican a continuación. Una vez que se actualice el archivo, guarde y cierre el script.

vrrp_script chk_haproxy {
script "pidof haproxy"
interval 2
}

vrrp_instance VI_1 {
interface eth1
state BACKUP
priority 100

virtual_router_id 33
unicast_src_ip secondary_private_IP
unicast_peer {
primary_private_IP
}

authentication {
auth_type PASS
auth_pass password
}

track_script {
chk_haproxy
}

notify_master /etc/keepalived/master.sh
}

2. Instalar y configurar Keepalived en Fedora

Instalar la herramienta Keepalived en los sistemas Fedora y Red Hat Linux es bastante similar a instalarla en las distribuciones Debian. Primero, deberá actualizar el repositorio de su sistema, luego ejecutar el siguiente comando yum para instalar la herramienta Keepalived.

yum update
yum install -y keepalived

Cuando finalice la instalación, ahora editaremos el script de configuración de Keepalived para ajustar la configuración del servidor con Keepalived. Antes de realizar cambios, haremos una copia de seguridad del script de configuración de Keepalived.

Ejecute los siguientes comandos en su shell uno por uno para hacer un archivo de copia de seguridad, crear un archivo de configuración y editar el script de configuración. Después de configurar la herramienta, la usaremos para configurar nuestro servidor de equilibrio de carga en Linux.

mv /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf_bac
touch /etc/keepalived/keepalived.conf
vim /etc/keepalived/keepalived.conf

Cuando se abra el script de configuración, complete el archivo con las líneas de script que se proporcionan a continuación. Es posible que deba realizar cambios en el archivo de script de acuerdo con la IP, el puerto, el nombre y otros detalles de su servidor.

global_defs {
notification_email {
www.ubuntupit.com
[email protected]
}
notification_email_from [email protected]
smtp_server 10.13.211.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}

vrrp_instance VI_1 {
state MASTER
interface eth0 #put your interface name here. [to see interface name: $ ip a ]
virtual_router_id 51
priority 101 # 101 for master. 100 for backup. [priority of master> priority of backup]
advert_int 1
authentication {
auth_type PASS
auth_pass 1111 #password
}
virtual_ipaddress {
10.13.211.10 # use the virtual ip address.
}
}

Después de configurar los scripts de Keepalived, ejecute los siguientes comandos de control del sistema con acceso de raíz en el shell de su terminal para iniciar, habilitar y verificar el estado de Keepalived en su máquina Linux.

systemctl start keepalived
systemctl enable keepalived
systemctl status keepalived

Si todo va bien, el siguiente comando devolverá el estado del servidor para todas sus ubicaciones de IP que garantizarán que su servidor Linux tenga la configuración completa para el equilibrio de carga con alta disponibilidad.

$ while true; do ; curl 10.13.211.10 ; sleep 1; done;

Palabras finales

Si es un administrador de sistemas, sabe lo importante que es hacer que su servidor esté siempre activo y accesible desde clientes de todo el mundo. Principalmente, si su servidor está ocupado, se recomienda habilitar un mecanismo de equilibrio de carga.

Puede hacer que el servidor sea rápido y accesible con toneladas de visitas a la vez. En toda la publicación, he repasado los fundamentos de HAProxy, Keepalived y Nginx. Ilustré el concepto y los métodos sobre cómo configurar HAProxy, Nginx y Keepalived para equilibrar la carga en Linux.

Compártalo con sus amigos y la comunidad de Linux si encuentra esta publicación útil e informativa. También puedes escribir tus opiniones sobre esta publicación en la sección de comentarios.


Linux
  1. Cómo instalar y configurar Nginx, WordPress y Mysql 8 en Rocky Linux/Centos 8

  2. Monitoree el servidor Linux con Prometheus y Grafana

  3. Cómo instalar y configurar cPanel en un servidor Linux

  4. Cómo configurar una aplicación simple de nodejs con nginx y pm2 en el servidor ubuntu

  5. Equilibrio de carga Nginx

Equilibrio de carga con HAProxy, Nginx y Keepalived en Linux

Cómo configurar HAProxy como Load Balancer para Nginx en CentOS 7

Cómo instalar y configurar el servidor web Nginx en Oracle Linux 8

Cómo configurar Load Balancing con NGINX en Jelastic Cloud

Cómo configurar el servidor y el cliente VPN de Linux usando OpenVPN

Cómo configurar Logstash en Linux con ElasticSearch, Redis, Nginx