Equilibrio de carga de Haproxy para construir la implementación real del clúster web
Directorio de artículos
1. Entorno experimental
Prepare cuatro máquinas virtuales
Haproxy服务器:192.168.126.10
Nginx 服务器1:192.168.126.20 (nginx服务器可以使用之前的lnmp一键部署脚本部署)
Nginx 服务器2:192.168.126.30
客户端:192.168.80.40
2. Pasos de la operación experimental
(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
0
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
Descripción de parámetros:
TARGET = linux26 #Kernel version, #Use
uname -r para ver el kernel, como: 2.6.18-371.el5, luego use TARGET = linux26 para este parámetro; use TARGET = linux2628 si el kernel es mayor que 2.6.28
ARCH = x86_64 # dígitos del sistema, sistema de 64 bits
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.80.100:80 check inter 2000 fall 3 #定义在线节点
server inst2 192.168.80.101:80 check inter 2000 fall 3
---------------------Descripción de parámetros--------------------------- ------------------------------------------------
equilibrio roundrobin
# Algoritmo de programación de balance de carga # Algoritmo de sondeo: roundrobin; algoritmo de conexión mínima: menos conexión; algoritmo de programación de acceso a la fuente: fuente, similar a ip_hash de nginx
check inter 2000 # indica una frecuencia de latido entre el servidor haproxy y el nodo
fall 3 # indica que la frecuencia de latido no se detecta tres veces consecutivas, y el nodo se considera no válido.
Si el nodo está configurado con "respaldo", significa que el nodo es solo un nodo de respaldo, solo el principal El nodo solo subirá cuando el nodo falle. No lleve "respaldo", lo que significa que el nodo principal proporciona servicios junto con otros nodos principales.
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
Puede consultar la publicación anterior del blog: Implementación de la arquitectura LNMP con un solo clic del script Shell, compilación e instalación del código fuente
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/
cd nginx-1.12.0/
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx
make && make install
--192.168.126.20---
echo "this is test111111" > /usr/local/nginx/html/test.html
--192.168.126.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.126.10/test.html con un navegador en el cliente y actualice constantemente el navegador para probar el efecto de equilibrio de carga
Tres, 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 aviso
reinicio del servicio haproxy
# Necesidad de 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' y error de análisis de KaTeX: Se esperaba 'EOF', obtuvo '&' en la posición 72:… proxy-info.log & ̲ ~ if ( programname = = 'haproxy' y $ syslogseverity-text == 'notice')
luego - / 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 reiniciar rsyslog.service
tail -f / var / log / haproxy / haproxy-info.log #Ver información de registro de solicitud de acceso haproxy