Equilibrio de carga Haproxy + nginx para construir un clúster web --- organización personal

Uno, análisis de Haproxy

  • Haproxy es un software que proporciona alta disponibilidad, equilibrio de carga y proxy basado en aplicaciones TCP (capa 4) y HTTP (capa 7).
  • Adecuado para sitios web con cargas pesadas
  • La ejecución en hardware puede admitir decenas de miles de solicitudes de conexión simultáneas

En segundo lugar, el algoritmo de programación de Haproxy

Los tres más utilizados

  • RR (round robin) es
    el algoritmo más simple y más comúnmente utilizado, a saber, la programación de round robin; tiene el mismo significado que rr en LVS

(Personalmente, si hay dos servidores web, ¡hay dos turnos!)

  • LC (mínimo de conexiones)
    algoritmo de conexión mínima, asigna dinámicamente solicitudes de front-end de acuerdo con el número de conexiones de nodo back-end

(Comprensión personal, por ejemplo: en la ventana de procesamiento de alimentos en la cafetería de la universidad, cada tía es responsable de una ventana. Si hay más personas, no pienso en eso, y simplemente vuelvo a la ventana con poca gente para hacer comida. La ventana está menos llena, ¿a dónde voy? !!!)

  • SH (hash de origen) se
    basa en el algoritmo de programación de acceso a la fuente. Se utiliza 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 en función de la IP de origen, la cookie, etc.

(Comprensión personal, puede imaginarse que cuando vaya a una peluquería, se le asignará un maestro Tony, que es su estilista, y una clienta le asignará un maestro Tony; imagine que va a la peluquería la próxima vez, el salón aún organizará Tu maestra Tony; las clientas encontrarán a su maestra Tony;)

En tercer lugar, use haproxy para crear un clúster web

El firewall está apagado, la protección del núcleo está apagada

3.1 Configurar el servidor Haproxy 192.168.100.25

1. Compile e instale Haproxy

上传 haproxy-1.4.24.tar.gz 到/opt目录下
[root@localhost ~]# yum -y install pcre-devel bzip2-devel gcc gcc-c++
[root@localhost ~]# cd /opt
[root@localhost opt]# tar xzvf haproxy-1.4.24.tar.gz 
[root@localhost opt]# cd haproxy-1.4.24/
[root@localhost opt]#uname -r                    #查看linux内核版本信息,要注意操作系统版本信息
3.10.0-957.el7.x86_64
[root@localhost haproxy-1.4.24]# make TARGET=linux31      # 根据内核信息编译
[root@localhost haproxy-1.4.24]# make install

2. Configurar el servicio Haproxy

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

global
        log /dev/log   local0 info               
        log /dev/log   local1 notice
        #log loghost    local0 info
        maxconn 10240
        #chroot /usr/share/haproxy
        uid 99
        gid 99
        daemon
        #debug
        #quiet

defaults
        log     global
        mode    http
        option  httplog
        option  dontlognull
        retries 3
        #redispatch
        maxconn 2000
        contimeout      5000
        clitimeout      50000
        srvtimeout      50000

listen  webcluster 0.0.0.0:80
        option httpchk GET /index.html
        balance roundrobin
        server inst1 192.168.100.26:80 check inter 2000 fall 3
        server inst2 192.168.100.27:80 check inter 2000 fall 3 backup


## Explicación de la configuración ####

  • log / dev / log local0 info # Configurar registro, equipo de registro, información de información
  • aviso de log / dev / log local1
  • maxconn 4096 # Número máximo de conexiones
  • uid 99: usuario uid gid 99: grupo de usuarios gid # nobaby user
  • El elemento de configuración de escucha generalmente configura los parámetros del módulo de aplicación
  • listen appli4-backup 0.0.0.0:10004: defina una aplicación appli4-backup
  • opción httpchk /index.html: Verifique el archivo index.html del servidor
  • opción persistir: fuerza el envío de la solicitud al servidor que ha estado inactivo
  • balance roundrobin: el algoritmo de programación de balanceo de carga utiliza un algoritmo round robin
  • servidor inst1 192.168.100.26:80 comprobar entre 2000 otoño 3: definir nodos en línea
  • server inst2 192.168.100.27:80 check inter 2000 fall 3 backup: defina el nodo de respaldo

3.2 registro haproxy

1.编辑
[root@localhost haproxy-1.4.24]# vi /etc/rsyslog.d/haproxy.conf       #文件没有的,咱们直接vi创建的

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
& ~


systemctl restart rsyslog.service  



查看日志info信息,登录显示
[root@localhost log]# tail -f /var/log/haproxy/haproxy-info.log 
Sep 24 07:14:32 localhost haproxy[27869]: 192.168.100.2:57847 [24/Sep/2020:07:13:42.349] webcluster webcluster/inst2 2/0/3/1/50008 200 247 - - cD-- 0/0/0/0/0 0/0 "GET / HTTP/1.1"
Sep 24 07:16:08 localhost haproxy[27869]: 192.168.100.2:57866 [24/Sep/2020:07:15:26.955] webcluster webcluster/inst1 0/0/0/1/41874 200 781 - - CD-- 2/2/0/0/0 0/0 "GET / HTTP/1.1"
Sep 24 07:16:23 localhost haproxy[27869]: 192.168.100.2:57932 [24/Sep/2020:07:16:17.712] webcluster webcluster/inst1 0/0/0/1/5318 200 733 - - CD-- 2/2/1/0/0 0/0 "GET / HTTP/1.1"

3.3 web1 (nginx) 192.168.100.26

Compile e instale el servidor Nginx 2 192.168.100.25
1. Compile e instale Nginx Los
archivos de instalación de Nginx se pueden descargar del sitio web oficial http://www.nginx.org/.
Tomemos la versión estable de Nginx 1.12.2 como ejemplo y subamos a / opt

[root@localhost ~]#yum -y install  gcc-c++  make pcre-devel zlib-devel 
[root@localhost ~]# useradd -M -s /sbin/nologin nginx
[root@localhost ~]# cd /opt
[root@localhost opt]# tar zxvf nginx-1.12.2.tar.gz
[root@localhost opt]# cd nginx-1.12.2
[root@localhost nginx-1.12.2]# 
./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx

#测试,咱们编译环境简单的编译的

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

[root@localhost nginx-1.12.2]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/   #路径优化

2. Iniciar y detener Nginx


killall -1 nginx                                                     ####安全重启
killall -3 nginx                                                     ###停止服务

如果出现: -bash: killall: command not found

yum -y install psmisc  

[root@localhost ~]# nginx                                ####启动
[root@localhost ~]# netstat -anpt | grep nginx
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      66738/nginx: master 

3. Agregue el servicio del sistema Nginx

killall -3 nginx    #停止服务为了防止命令冲突,nginx开启的话,sys命令可能会不能用


vi    /lib/systemd/system/nginx
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking 
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/bin/kill -s HUP $MAINPID
ExecStop=/usr/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target

[root@localhost ~]# chmod 754 /lib/systemd/system/nginx.service
[root@localhost ~]# systemctl    start  nginx
[root@localhost ~]# systemctl    enable  nginx

3. Instale httpd para montar la página de prueba.

[root@localhost nginx-1.12.2]# yum  -y install nfs-utils  rpcbind
[root@localhost ~]# showmount -e 192.168.100.44     ####如果还没发布,请到存储服务器发布下,exportfs -rv
Export list for 192.168.100.44:
/opt/51xit  (everyone)
/opt/52xit  (everyone)

[root@localhost ~]# mount 192.168.100.44:/opt/51xit /usr/local/nginx/html/
[root@localhost ~]# vi /etc/fstab 
192.168.100.44:/opt/as1/  /usr/local/nginx/html/ nfs    delfaults,_netdev 0 0      ###开机自动挂载,注意格式对齐

[root@localhost ~]# systemctl    restart  nfs
[root@localhost ~]# systemctl    restart  rpcbind
[root@localhost ~]# systemctl    enable  nfs
[root@localhost ~]# systemctl    enable  rpcbind


3.4 web2 (nginx) 192.168.100.27

############ El proceso de instalación de nginx es el mismo que web1 ##########

1. Instale httpd para montar la página de prueba.

在这里插入代码片[root@localhost nginx-1.12.2]# yum  -y install nfs-utils  rpcbind
[root@localhost ~]# showmount -e 192.168.100.44     ####如果还没发布,请到存储服务器发布下,exportfs -rv
Export list for 192.168.100.44:
/opt/51xit  (everyone)
/opt/52xit  (everyone)

[root@localhost ~]# mount 192.168.100.44:/opt/51xit /usr/local/nginx/html/
[root@localhost ~]# vi /etc/fstab 
192.168.100.44:/opt/as2/  /usr/local/nginx/html/ nfs    delfaults,_netdev 0 0      ###开机自动挂载,注意格式对齐

[root@localhost ~]# systemctl    restart  nfs
[root@localhost ~]# systemctl    restart  rpcbind
[root@localhost ~]# systemctl    enable  nfs
[root@localhost ~]# systemctl    enable  rpcbind

3.5 servidor de almacenamiento NFS

1. Instale nfs-utils rpcbind


yum -y install nfs-utils               #nfs必须安装的,不然无法识别nfs格式,
yum -y install rpcbind

2. Cree un directorio de prueba compartido y archivos web

mkdir  /opt/as1   /opt/as2

echo 'this is as1' >/opt/as1/index.html         #写些数据定义web1
echo 'this is as2' >/opt/as2/index.html         #写些数据定义web2

3. Agregue un directorio compartido,

vi /etc/exports                  #将共享目录添加在配置内,相当于发布

/opt/as1 192.168.100.0/24(rw,sync)
/opt/as2 192.168.100.0/24(rw,sync)

                                         #重启服务,设置开机自启
systemctl restart nfs      
systemctl restart rpcbind
systemctl enable nfs
systemctl enable rpcbind





showmount -e                  #查看当前共享的目录
Export list for localhost.localdomain:
/opt/as2 192.168.100.0/24
/opt/as1 192.168.100.0/24

3.6 verificar haproxy

Ingrese la dirección del servidor Haproxy del programador 192.168.100.25;
Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/weixin_47320286/article/details/108784723
Recomendado
Clasificación