Haproxy crea un clúster web de equilibrio de carga

Un programador de clúster web común

Los programadores de clústeres web comunes actuales se dividen en software y hardware. El
software generalmente usa LVS, Haproxy y Nginx de código abierto. El
hardware que se usa generalmente es F5 y muchas personas usan algunos productos domésticos, como Barracuda, NSFOCUS, etc.

Dos, análisis de la aplicación Haproxy

(1) LVS tiene una gran capacidad anti-carga en aplicaciones empresariales, pero existen deficiencias

LVS no admite el procesamiento regular y no puede lograr una separación dinámica y estática.
Para sitios web grandes, la implementación y configuración de LVS son complicadas y el costo de mantenimiento es relativamente alto.

(2) Haproxy es un software que puede proporcionar alta disponibilidad, equilibrio de carga y proxy basado en aplicaciones TCP y HTTP.

Es adecuado para sitios web con mucha carga
y puede admitir decenas de miles de solicitudes de conexión simultáneas en hardware.

(3) Principio del algoritmo de programación Haproxy

Haproxy admite múltiples algoritmos de programación, los más utilizados son tres

1 、 RR (Round Robin)
El algoritmo RR es el algoritmo más simple y más comúnmente utilizado, a saber, la programación por turnos.
Ejemplos de comprensión
Hay tres nodos A, B y C. La
primera visita del usuario se asignará al nodo A, la
segunda visita del usuario se asignará a nodo B, y el
acceso del tercer usuario A se asignará al nodo C. El
acceso del cuarto usuario seguirá siendo asignado al nodo A, sondeo para asignar solicitudes de acceso para lograr efectos de equilibrio de carga

2 、 LC (Conexiones mínimas)

El algoritmo del número mínimo de conexiones asigna dinámicamente solicitudes de front-end de acuerdo con el número de conexiones de los nodos de back-end.
Ejemplos de comprensión
Hay tres nodos A, B y C, y el número de conexiones de cada nodo es A : 4, B: 5, C: 6 Las
primeras solicitudes de conexión de usuario se asignarán a A y el número de conexiones pasará a ser A: 5, B: 5, C: 6. La
segunda solicitud de usuario seguirá siendo asignada a A, y el número de conexiones pasará a ser A: 6, B: 5, C: 6; Se asignará una nueva solicitud a B, y cada vez se asignará una nueva solicitud al cliente con el menor número de conexiones.
Porque el número de conexiones de A, B y C se liberará dinámicamente en condiciones reales, es difícil tener el mismo número de conexiones Situación
Este algoritmo ha mejorado mucho en comparación con el algoritmo rr, y es un algoritmo que se utiliza actualmente más.

3 、 SH (Hash de fuente)
Según el algoritmo de programación de acceso a la fuente, utilizado en algunos escenarios donde las sesiones de sesión se registran en el lado del servidor, la programación del clúster se puede realizar según la IP de origen, la cookie, etc.
Comprenda que
hay tres nodos A, B y C, y el primer usuario es asignado para la primera visita Cuando se alcanza A, el segundo usuario
será asignado a B para la primera visita. Cuando el primer usuario visite por segunda vez, seguirá siendo asignado a A. El segundo usuario seguirá siendo asignado a B para la segunda visita, siempre que la carga El planificador equilibrado no se reinicie, el primer acceso de usuario se asignará a A, y el segundo acceso de usuario se asignará a B. Para lograr la programación de clúster,
el La ventaja de este algoritmo de programación es lograr la retención de la sesión, pero cuando algunos accesos IP son muy pesados ​​causará una carga desequilibrada y visitas excesivas a algunos nodos, afectando el uso comercial.

Tres, configuración experimental

servidor IP
Haproxy 192.168.90.10
Nginx1 192.168.90.20
Nginx2 192.168.90.30

| texto centrado en el centro | texto alineado a la derecha en la derecha |

(1) Implementación del servidor Haproxy

1. Apague el firewall y cargue los paquetes de software necesarios para instalar Haproxy en el directorio / opt

systemctl stop firewalld
setenforce 

2. Compile e instale Haproxy

yum install -y pcre-devel bzip2-devel gcc gcc-c++ make

tar zxvf haproxy-1.5.19.tar.gz
cd haproxy-1.5.19/
make TARGET=linux2628 ARCH=x86_64
make install

3. Configuración del servidor Haproxy

mkdir /etc/haproxy
cp examples/haproxy.cfg /etc/haproxy/

cd /etc/haproxy/
vim haproxy.cfg

global
--4~5行--修改,配置日志记录,local0为日志设备,默认存放到系统日志
		log /dev/log   local0 info		
        log /dev/log   local0 notice
        #log loghost    local0 info
        maxconn 4096					#最大连接数,需考虑ulimit-n限制
--8行--注释,chroot运行路径,为该服务自设置的根目录,一般需将此行注释掉
        #chroot /usr/share/haproxy
        uid 99							#用户UID
        gid 99							#用户GID
        daemon							#守护进程模式

defaults        
		log     global					#定义日志为global配置中的日志定义
        mode    http					#模式为http
        option  httplog					#采用http日志格式记录日志
        option  dontlognull				#不记录健康检查日志信息
        retries 3						#检查节点服务器失败次数,连续达到三次失败,则认为节点不可用
        redispatch						#当服务器负载很高时,自动结束当前队列处理比较久的连接
        maxconn 2000					#最大连接数
        contimeout      5000			#连接超时时间
        clitimeout      50000			#客户端超时时间
        srvtimeout      50000			#服务器超时时间

--删除下面所有listen项--,添加
listen  webcluster 0.0.0.0:80			#定义一个名为appli4-backup的应用
        option httpchk GET /test.html	#检查服务器的test.html文件
        balance roundrobin				#负载均衡调度算法使用轮询算法roundrobin
        server inst1 192.168.90.100:80 check inter 2000 fall 3		#定义在线节点
        server inst2 192.168.90.101:80 check inter 2000 fall 3

4. Agregue el servicio del sistema haproxy

cp /opt/haproxy-1.5.19/examples/haproxy.init /etc/init.d/haproxy
chmod +x haproxy
chkconfig --add /etc/init.d/haproxy
ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy

service haproxy start	或	/etc/init.d/haproxy start
(2) Despliegue del servidor de nodo
systemctl stop firewalld
setenforce 0

yum install -y pcre-devel zlib-devel gcc gcc-c++ make 

useradd -M -s /sbin/nologin nginx

cd /opt
tar zxvf nginx-1.12.0.tar.gz -C /opt/

make && make install

--192.168.90.20---
echo "this is test111111" > /usr/local/nginx/html/test.html

--192.168.90.30---
echo "this is test222222" > /usr/local/nginx/html/test.html

ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/

nginx      #启动nginx 服务
(Tres), pruebe el clúster web

Abra http://192.168.90.10/test.html con un navegador en el cliente y actualice constantemente el navegador para probar el efecto de equilibrio de carga

Cuatro, definición de registro

El registro haproxy predeterminado se envía al syslog del sistema, que no es muy conveniente de ver. Para administrar mejor el registro haproxy, generalmente lo definimos por separado en el entorno de producción. Es necesario registrar la información y los registros de avisos de haproxy en diferentes archivos de registro.

vim /etc/haproxy/haproxy.cfg
global
	log /dev/log local0 info
	log /dev/log local0 notice

service haproxy restart

Necesita modificar la configuración de rsyslog, para facilitar la gestión. Defina la configuración relacionada con haproxy de forma independiente en haproxy.conf y colóquela en /etc/rsyslog.d/. Cuando se inicie rsyslog, cargará automáticamente todos los archivos de configuración en este directorio.

vim /etc/rsyslog.d/haproxy.conf

if ($programname == 'haproxy' and $syslogseverity-text == 'info')
then -/var/log/haproxy/haproxy-info.log
&~
if ($programname == 'haproxy' and $syslogseverity-text == 'notice')
then -/var/log/haproxy/haproxy-notice.log
&~

Nota:
Esta parte de la configuración es para registrar el registro de información de haproxy en /var/log/haproxy/haproxy-info.log, y para registrar el registro de avisos en /var/log/haproxy/haproxy-notice.log. "& ~" significa que cuando el registro se escribe en el archivo de registro, rsyslog deja de procesar esta información.

systemctl restart rsyslog.service

tail -f/var/log/haproxy/haproxy-info.log		#查看haproxy的访问请求日志信息

Supongo que te gusta

Origin blog.csdn.net/weixin_51468875/article/details/114025843
Recomendado
Clasificación