Compartir tecnología

Haproxy construye un clúster web

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

1: análisis de caso

1: descripción general del caso

2: conocimiento previo al caso

3: entorno del caso

2: Implementación del caso

1: Compile e instale el servidor nginx (los pasos para los dos sitios web de nginx son exactamente los mismos, solo la página de prueba es diferente)

[root@localhost ~]# yum -y install pcre-devel zlib-devel gcc*

[root@localhost ~]# useradd -M -s /sbin/nologin nginx

[root@localhost ~]# tar zxvf nginx-1.12.0.tar.gz

[root@localhost ~]# cd nginx-1.12.0/

[root@localhost nginx-1.12.0]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module

[root@localhost nginx-1.12.0]# make && make install

[root@localhost nginx-1.12.0]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/

[root@localhost nginx-1.12.0]# cd /usr/local/nginx/html/0

[root@localhost html]# echo "prueba web01" > prueba.html

[root@localhost ~]# systemctl detiene firewalld

[raíz@localhost ~]# nginx -t

[root@localhost ~]# nginx ##Iniciar el proceso nginx

[root@localhost ~]# netstat -anpt | grep nginx

2: compilar e instalar Haproxy

[root@localhost ~]# systemctl detiene firewalld

[root@localhost ~]# setenforce 0

[root@localhost ~]# yum -y install pcre-devel bzip2-devel gcc*

[root@localhost ~]# tar zxvf haproxy-1.5.19.tar.gz

[root@localhost ~]# cd haproxy-1.5.19/

[root@localhost haproxy-1.5.19]# hacer OBJETIVO=linux26

[root@localhost haproxy-1.5.19]# hacer instalación

Nota:

linux22 para Linux 2.2

linux24 para Linux 2.4 y superior (predeterminado)

linux24e para Linux 2.4 con soporte para un epoll funcional (> 0.21)

linux26 para Linux 2.6 y superior

solaris para Solaris 8 o 10 (otros no probados)

freebsd para FreeBSD 5 a 8.0 (otros no probados)

openbsd para OpenBSD 3.1 a 4.6 (otros no probados)

Cygwin para Cygwin

genérico para cualquier otro sistema operativo.

Personalizado para ajustar manualmente cada configuración

3: configuración del servidor Haproxy

(1) Crear un archivo de configuración haproxy

[root@localhost haproxy-1.5.19]# mkdir /etc/haproxy

[root@localhost haproxy-1.5.19]# cp ejemplos/haproxy.cfg /etc/haproxy/

(2) Crear script de servicio

[root@localhost haproxy-1.5.19]# cp ejemplos/haproxy.init /etc/init.d/haproxy

[root@localhost haproxy-1.5.19]# ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy

[root@localhost haproxy-1.5.19]# chmod +x /etc/init.d/haproxy

[root@localhost ~]# chkconfig --add haproxy

(3) Introducción a la configuración de Haproxy

[root@localhost haproxy-1.5.19]# vi /etc/haproxy/haproxy.cfg

global

registro 127.0.0.1 local0

registro 127.0.0.1 aviso local1

#log loghost información local0

Maxconn 4096

fluido 99

día 99

demonio

#depurar

#tranquilo

valores predeterminados

registro global

modo http

Opción httplog

Opción dontlognull

reintentos 3

# reenvío

Maxconn 2000

tiempo de espera continuo 5000

tiempo de espera de clima 50000

tiempo de espera del servidor 50000

escuchar webcluster 0.0.0.0:80

opción httpchk GET /index.html

equilibrio de turnos

servidor inst1 192.168.1.61:80 comprobar inter 2000 otoño 3

servidor inst2 192.168.1.62:80 comprobar inter 2000 otoño 3

Puede agregar peso después de cada servidor para establecer el valor de peso.

servidor inst1 192.168.1.61:80 comprobar inter 2000 otoño 3peso 1

servidor inst2 192.168.1.62:80 comprobar inter 2000 otoño 3peso 2

Explicación de cada afirmación.

global

registro 127.0.0.1 local0 \configurar el registro,local0Es el dispositivo de registro, el valor predeterminado es el registro del sistema.

registro 127.0.0.1 local1 aviso \El nivel de registro esaviso

#log loghost información local0

Maxconn 4096 \Número máximo de conexiones

fluido 99 \usuariofluido

gid 99 \usuarioGíralo

demonio \Ejecutar como un proceso demonio

#depuración \Modo de depuración, salida de información de inicio a la salida estándar

#tranquilo \Modo silencioso, sin salida al inicio

valores predeterminados

registro global \usargloboregistro definido en

modo http \El modo eshttp

opción httplog \usarhttpEl formato de registro.

opción dontlognull \asegurarProxy de alta disponibilidadNo registre los paquetes de latidos enviados por el equilibrador de carga de nivel superior para detectar datos de estado.

reintentos 3 \Verifique el número de fallas de conexión de nodos, que excede3El nodo se considera no disponible.

  # reenvío\cuando cargaCuando el valor es muy alto, las conexiones que se hayan procesado en la cola actual durante mucho tiempo finalizarán automáticamente.

Maxconn 2000 \Número máximo de conexiones

tiempo de espera continuo 5000 \El tiempo de conexión expiroEM

tiempo de espera de clima 50000Tiempo de espera del clienteEM

tiempo de espera del servidor 50000Tiempo de espera del servidorEM

escuchar webcluster 0.0.0.0:80 \Definir números de puerto de escucha y de clúster

opción httpchk GET /index.html \comprobar el servidoríndice.htmldocumento,Configuración de URL de detección de latidos

equilibrio roundrobin \El algoritmo de programación de equilibrio de carga es round robin

servidor inst1 192.168.1.61:80 comprobar inter 2000 otoño 3 \Definir nodos en línea

servidor inst2 192.168.1.62:80 comprobar inter 2000 otoño 3

comprobar entre 2000es detectar la frecuencia de los latidos del corazón (cada2000 msDetectado una vez),Otoño 33El servidor se considera no disponible en caso de falla

En la nueva versión, la configuración del tiempo de espera se ha ajustado de la siguiente manera:

contimeout se reemplaza por timeout connect:Defina el período de tiempo de espera que haproxy espera para reenviar las solicitudes de los clientes al servidor backend.

clitimeout se reemplaza por el cliente de tiempo de espera:El período de tiempo de espera por inactividad del cliente es el tiempo que tarda la aplicación en conectarse a haproxy.

srvtimeout se reemplaza por el servidor de tiempo de espera:Después de que el cliente establece una conexión con el servidor, el tiempo de espera de espera del servidor es el tiempo que tarda haproxy en conectarse al servidor web backend.

Nota:

haproxiHay ocho algoritmos de programación.

    1. Equilibrar lo mínimoNúmero mínimo de conexiones
    2. equilibrio de turnosvotación
    3. fuente de equilibrioSegún clientePropiedad intelectualCómo hacer hash
    4. estática-rrsegun el peso
    5. uria pedidoDirección URL
    6. parámetro de urla pedidoURLparámetro
    7. hdr(nombre)de acuerdo aHTTPencabezado de solicitud para bloquear cada vezHTTPpreguntar
    8. rdp-cookie(nombre)de acuerdo acookie(nombre)para bloquear y hash cada vezProtocolo de control de tráficopreguntar

enjambre /usr/share/haproxy\Esto es para cambiar la ubicación del directorio raíz a la que se hace referencia cuando se ejecuta el programa. Si tiene este código, debe crear este directorio.

Acerca de los niveles de registro

DEBUG de nivel estático

DEBUG Level señala que los eventos de información detallada son muy útiles para depurar aplicaciones.

Información sobre el nivel estático

El nivel INFO indica que el mensaje resalta el proceso en ejecución de la aplicación en un nivel aproximado.

Nivel estático ADVERTENCIA

El nivel WARN indica una posible situación de error.

ERROR de nivel estático

El nivel de ERROR indica que, aunque se produzca un evento de error, todavía no afecta el funcionamiento continuo del sistema.

Nivel estático FATAL

El nivel FATAL indica que cada evento de error grave provocará el cierre de la aplicación.

Además, hay dos niveles de registro especiales disponibles:

Nivel estático TODO

TODO Nivel es el nivel más bajo y se utiliza para activar todos los registros.

Nivel estático APAGADO

El nivel APAGADO es el nivel más alto y se utiliza para desactivar todos los registros.

4: inicio

[root@localhost haproxy-1.5.19]# /etc/init.d/haproxy start

5: Pruebe el clúster web

http://192.168.1.60/test.html

Actualiza la página para probar

o prueba usando script

[root@localhost ~]# para i en $(seq 10); hacer curl http://192.168.1.60/test.html ;hecho

6: registro de haproxy

Haproxy no registra registros de forma predeterminada. Además de especificar la salida del registro en la sección global en haproxy.conf, también debe configurar el archivo de configuración del registro del sistema.

método uno:

[root@localhost haproxy-1.4.24]# vi /etc/haproxy/haproxy.cfg

global

# registro 127.0.0.1 local0

# log 127.0.0.1 local1 aviso

#log loghost información local0

Maxconn 4096

chroot /usr/share/haproxy

fluido 99

día 99

demonio

#depurar

#tranquilo

registro /dev/log información local0

registro /dev/log local0 aviso

[root@localhost haproxy-1.4.24]# toque /etc/rsyslog.d/haproxy.conf

[root@localhost haproxy-1.4.24]# vi /etc/rsyslog.d/haproxy.conf

si ($programname == 'haproxy' y $syslogseverity-text == 'info') entonces -/var/log/haproxy/haproxy-info.log

& ~

si ($programname == 'haproxy' y $syslogseverity-text == 'notice') entonces -/var/log/haproxy/haproxy-notice.log

& ~

[root@localhost haproxy-1.4.24]# reinicio del servicio rsyslog

[root@localhost ~]#/etc/init.d/haproxy reiniciar

[root@localhost ~]# cat /var/log/haproxy/haproxy-info.log

Método dos:

(1) Editar /etc/haproxy/haproxy.conf

[raíz@localhost ~]# vi /etc/haproxy/haproxy.cfg

global

registro 127.0.0.1 local3

#local3 es el dispositivo, correspondiente a la configuración en /etc/rsyslog.conf, y el nivel de registro de información se recicla de forma predeterminada.

(2) Escribir archivo de registro haproxy

[raíz@localhost ~]# vim /etc/rsyslog.d/haproxy.conf

$ModLoad imudp

$UDPServerRun 514

local3.* /var/log/haproxy.log

&~

Nota:

$ModLoad imudpProtocolo UDP para recopilar registros

$UDPServerRun 514Especifique el número de puerto utilizado para la recopilación de registros

local3.* /var/log/haproxy.logEspecificar la ubicación de almacenamiento de registros

(3) Configure el archivo de configuración principal de rsyslog y habilite el registro remoto (opcional)

[root@localhost ~]# vim /etc/sysconfig/rsyslog

OPCIONES_SYSLOGD=”-c 2 -r -m 0″

#-c 2 Usa el modo de compatibilidad, el valor predeterminado es -c 5

#-r Habilitar el registro remoto

#-m 0 marca de tiempo.La unidad es minutos. Cuando es 0, significa que la función está deshabilitada.

(4) Reinicie los servicios haproxy y rsyslog

[root@localhost ~]# systemctl reiniciar rsyslog

[root@localhost ~]# systemctl reiniciar haproxy

(5) Verifique el registro después de visitar el sitio web

[raíz@localhost ~]# cat /var/log/registro haproxy

Extensión: proxy mysql

escucha mysql 0.0.0.0:3306

servidor mysql1 192.168.10.205:3306 comprobar puerto 3306 maxconn 300