GNU/Linux >> Tutoriales Linux >  >> Cent OS

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

HAProxy o High Availability Proxy es un software de servidor proxy y equilibrador de carga TCP y HTTP de código abierto. HAProxy ha sido escrito por Willy Tarreau en C, es compatible con SSL, compresiones, keep-alive, formatos de registro personalizados y reescritura de encabezados. HAProxy es un servidor proxy y un equilibrador de carga rápidos y livianos con una pequeña huella de memoria y bajo uso de CPU. Es utilizado por sitios grandes como Github, StackOverflow, Reddit, Tumblr, Twitter y otros. Se ha convertido en el equilibrador de carga de software y servidor proxy más popular en los últimos años.

En este tutorial, lo guiaré a través de la instalación y configuración de HAProxy para 3 servidores, un balanceador de carga y dos servidores web Nginx. Instalaremos HAProxy en un solo servidor y luego instalaremos el servidor web Nginx en los otros servidores. HAProxy actúa como un equilibrador de carga para los servidores web Nginx.

Concepto básico con HAProxy

Capa 4 y Capa 7

HAProxy puede ejecutarse en dos modos:modo TCP de capa 4 y modo HTTP de capa 7. En el modo TCP de capa 4, HAProxy reenvía los paquetes RAW TCP del cliente a los servidores de aplicaciones. En el modo HTTP de capa 7, HAProxy analiza el encabezado HTTP antes de reenviarlo a los servidores de aplicaciones. En este tutorial, usaremos Nginx como el servidor web que solo admite el modo HTTP de capa 7.

Algoritmo de Equilibrio

Este es el algoritmo que utiliza HAProxy para seleccionar el servidor al realizar el equilibrio de carga. Están disponibles los siguientes modos:

Todos contra todos

Este es el algoritmo de equilibrio más simple. Para cada nueva conexión, será manejada por el siguiente servidor backend. Si se llega al último servidor backend de la lista, comenzará de nuevo desde la parte superior de la lista backend.

Última conexión

La nueva conexión será manejada por el servidor backend con la menor cantidad de conexiones. Esto es útil cuando el tiempo y la carga de las solicitudes varían mucho.

Fuente

Esto es para sesiones pegajosas, la IP del cliente será codificada para determinar el servidor back-end que recibió la última solicitud de esta IP. Entonces, una IP A siempre será manejada por backend1, y la IP B siempre será manejada por banckend2 para no interrumpir sesiones

Hay otro algoritmo:consulte el sitio oficial de HAProxy para obtener más información.

Requisitos

  • 3 CentOS 7

equilibrador de carga
            192.168.1.102

           nginx1
           192.168.1.104

            nginx2
            192.168.1.105

  • Privilegios de raíz en los 3 servidores.

Paso 1:configure los archivos /etc/hosts

Inicie sesión en el servidor del equilibrador de carga y edite el archivo /etc/hosts.

ssh [email protected]
sudo su
vi /etc/hosts

Agregue los nombres de host nginx1 y nginx2:

192.168.1.104    nginx1.loadbalancer.me     nginx1
192.168.1.105    nginx2.loadbalancer.me     nginx2

Guarde el archivo y salga del editor.

A continuación, edite el archivo de hosts en los servidores Nginx (nginx1 y nginx2):

ssh [email protected]
ssh [email protected]

Edite y agregue una nueva línea para el balanceador de carga en los archivos de hosts:

vi /etc/host

Agregue el nombre de host del equilibrador de carga en cada servidor nginx:

192.168.1.102    loadbalancer

haga esto en el servidor nginx1 y nginx2.

Paso 2:instalar y configurar HAProxy

HAProxy está disponible en el repositorio de CentOS 7, inicie sesión en el servidor del balanceador de carga y actualice las listas de paquetes:

ssh [email protected]
yum -y update

Ahora instale HAProxy con este comando yum:

yum -y install haproxy

Cuando finalice la instalación, vaya al directorio "/etc/haproxy/" y haga una copia de seguridad del archivo de configuración original:

cd /etc/haproxy/
mv haproxy.cfg haproxy.cfg.orig

A continuación, agregue un nuevo archivo de configuración de HAProxy "haproxy.cfg" con el editor vi:

vi haproxy.cfg

Pegue la configuración a continuación:

#---------------------------------------------------------------------
# Global settings
#---------------------------------------------------------------------
global
    log         127.0.0.1 local2     #Log configuration

    chroot      /var/lib/haproxy
    pidfile     /var/run/haproxy.pid
    maxconn     4000               
    user        haproxy             #Haproxy running under user and group "haproxy"
    group       haproxy
    daemon

    # turn on stats unix socket
    stats socket /var/lib/haproxy/stats

#---------------------------------------------------------------------
# common defaults that all the 'listen' and 'backend' sections will
# use if not designated in their block
#---------------------------------------------------------------------
defaults
    mode                    http
    log                     global
    option                  httplog
    option                  dontlognull
    option http-server-close
    option forwardfor       except 127.0.0.0/8
    option                  redispatch
    retries                 3
    timeout http-request    10s
    timeout queue           1m
    timeout connect         10s
    timeout client          1m
    timeout server          1m
    timeout http-keep-alive 10s
    timeout check           10s
    maxconn                 3000

#---------------------------------------------------------------------
#HAProxy Monitoring Config
#---------------------------------------------------------------------
listen haproxy3-monitoring *:8080                #Haproxy Monitoring run on port 8080
    mode http
    option forwardfor
    option httpclose
    stats enable
    stats show-legends
    stats refresh 5s
    stats uri /stats                             #URL for HAProxy monitoring
    stats realm Haproxy\ Statistics
    stats auth howtoforge:howtoforge            #User and Password for login to the monitoring dashboard
    stats admin if TRUE
    default_backend app-main                    #This is optionally for monitoring backend

#---------------------------------------------------------------------
# FrontEnd Configuration
#---------------------------------------------------------------------
frontend main
    bind *:80
    option http-server-close
    option forwardfor
    default_backend app-main

#---------------------------------------------------------------------
# BackEnd roundrobin as balance algorithm
#---------------------------------------------------------------------
backend app-main
    balance roundrobin                                     #Balance algorithm
    option httpchk HEAD / HTTP/1.1\r\nHost:\ localhost    #Check the server application is up and healty - 200 status code
    server nginx1 192.168.1.104:80 check                 #Nginx1
    server nginx2 192.168.1.105:80 check                 #Nginx2

Guarde el archivo de configuración y salga.

A continuación, configure rsyslog para HAProxy.

Configuraremos el demonio rsyslog para registrar las estadísticas de HAProxy. Edite el archivo rsyslog.conf para permitir que rsyslog utilice el puerto UDP 514.

vi /etc/rsyslog.conf

Descomente esta línea para habilitar la conexión UDP:

$ModLoad imudp
$UDPServerRun 514

Si desea utilizar una IP específica, puede agregar una nueva línea como la siguiente:

$UDPServerAddress 127.0.0.1

Guarde el archivo y salga.

Luego cree un nuevo archivo de configuración haproxy para rsyslog:

cd /etc/rsyslog.d/
vi haproxy.conf

Pegue la configuración a continuación:

local2.=info     /var/log/haproxy-access.log    #For Access Log
local2.notice    /var/log/haproxy-info.log      #For Service Info - Backend, loadbalancer

Guardar y salir.

Ahora reinicie rsyslog y luego inicie el haproxy:

systemctl restart rsyslog
systemctl start haproxy

Agregue haproxy para comenzar en el momento del arranque:

systemctl enable haproxy

Paso 3:instalar y configurar Nginx

En esta sección, instalaremos Nginx desde el repositorio de epel en el servidor nginx1 y nginx2.

Inicie sesión en los servidores:

ssh [email protected]
ssh [email protected]

Instale el repositorio de epel con el siguiente comando yum:

yum -y install epel-release

Ahora puedes instalar Nginx:

yum -y install nginx

Nginx está instalado. Vaya al directorio web y cambie el archivo de índice para que podamos ver cuál de los dos servidores entregó el archivo html:

cd /usr/share/nginx/html/
echo "<h1>nginx1.loadbalance.me</h1>" > index.html     #For nginx1 server
echo "<h1>nginx2.loadbalance.me</h1>" > index.html     #For nginx2 server

Luego, agregue Nginx para comenzar en el momento del arranque y luego inícielo:

systemctl enable nginx
systemctl start nginx

Asegúrese de realizar este paso en el servidor nginx1 y nginx2.

Paso 4 - Prueba

Prueba desde el navegador accediendo a la IP del balanceador de carga:192.168.1.102

Probando con el comando curl:

curl 192.168.1.102

Prueba para iniciar sesión en el monitoreo web HAProxy que se ejecuta en el puerto 8080 con el nombre de usuario y la contraseña "howtoforge":

http://192.168.1.102:8080/estadísticas

HAProxy funciona correctamente y actúa como un equilibrador de carga para nuestros dos servidores web Nginx.

Conclusión

HAProxy o proxy de alta disponibilidad es un software de código abierto que proporciona alta disponibilidad para servicios basados ​​en TCP, funciona como equilibrador de carga HTTP y servidor proxy. El software está escrito en C y soporta SSL, keep-alive y compresión. HAProxy es la opción correcta para todos los que necesitan un balanceador de carga y un servidor proxy que sea rápido y liviano con una pequeña huella de memoria y bajo uso de CPU. Haproxy puede ejecutarse en modo TCP de capa 4 y en modo HTTP de capa 7. Nginx solo admite el modo HTTP de capa 7 con HAProxy. Si desea utilizar el modo TCP de capa 4, puede utilizar otros servidores web como apache. En CentOS 7, HAProxy está disponible en el repositorio predeterminado. Es fácil de instalar y configurar.


Cent OS
  1. Cómo instalar Nginx en CentOS 7

  2. Cómo instalar Nginx en CentOS 8

  3. Cómo instalar Magento 2.1 en CentOS 7

  4. Cómo configurar el balanceador de carga HAProxy

  5. Cómo configurar el servidor VNC para nuevos usuarios en CentOS/RHEL 5

Cómo instalar HAProxy en CentOS 8

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

Cómo instalar Varnish Cache 6 para Nginx en CentOS/RHEL 8

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

Cómo configurar HAProxy en CentOS 8

Cómo configurar un servidor NGINX RTMP para transmisión