Haproxy + Nginx para construir una esencia de clúster web

Uno: Introducción al equilibrio de carga

Load
Balance (LB) es una tecnología de proxy inverso de alta disponibilidad basada en servicios o dispositivos de hardware. El balanceo de carga comparte servicios específicos (servicios web, tráfico de red, etc.) a uno o más Servidores o equipos específicos de la terminal, mejorando así las capacidades de procesamiento concurrente del negocio de la empresa, asegurando la alta disponibilidad del negocio y facilitando la expansión dinámica del nivel posterior del negocio.

marca

1.1: Por qué utilizar el equilibrio de carga:

Web服务器的动态水平扩展–>对用户无感知
增加业务并发访问及处理能力–>解决单服务器瓶颈问题
节约公网IP地址–>降低IT支出成本
隐藏内部服务器IP–>提高内部服务器安全性
配置简单–>固定格式的配置文件
功能丰富–>支持四层和七层,支持动态下线主机
性能较强–>并发数万甚至数十万

1.2: Tipo de equilibrio de carga:

Cuatro capas:

LVS(Linux Virtual Server)
HAProxy(High Availability Proxy)
Nginx(1.9)

Septimo piso:

HAProxy
Nginx

hardware:

F5 #https://f5.com/zh
Netscaler #https://www.citrix.com.cn/products/citrix-adc/
Array #https://www.arraynetworks.com.cn/
深信服 #http://www.sangfor.com.cn/
北京灵州 #http://www.lingzhou.com.cn/cpzx/llfzjh/

Dos: programador de clústeres web común

  • El programador de clúster web común actual se divide en software y hardware

  • El software generalmente utiliza LVS, Haprxy, Nginx de código abierto

  • El hardware generalmente utilizado es F5, y muchos de ellos utilizan algunos productos domésticos, como Barracuda, NSFOCUS, etc.

marca

2.1: Análisis de la aplicación Haprox

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

Haproxy es un software que proporciona disponibilidad, equilibrio de carga y proxy basado en aplicaciones TCP y HTTP.

  • Adecuado para sitios web con cargas pesadas

  • La ejecución en hardware puede admitir decenas de miles de solicitudes de conexión simultáneas

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

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.

LC(Least Connections)

Algoritmo de conexión mínimo, asigna dinámicamente las solicitudes de front-end de acuerdo con el tamaño de la conexión del nodo de back-end

SH(Source Hasging)

Basado 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 servicio. La programación del clúster se puede realizar en función de la IP de origen, Cookie, etc.

2.3: función haproxy

HAProxy是TCP / HTTP反向代理服务器,尤其适合于高可用性高并发环境:      
可以针对HTTP请求添加cookie,进行路由后端服务器      
可平衡负载至后端服务器,并支持持久连接     
支持基于cookie进行调度      
支持所有主服务器故障切换至备用服务器      
支持专用端口实现监控服务      
支持不影响现有连接情况下停止接受新连接请求      
可以在双向添加,修改或删除HTTP报文首部      
支持基于pattern实现连接请求的访问控制      
通过特定的URI为授权用户提供详细的状态信息  历史版本更新功能:    
1.4  1.5  1.6  1.7  1.8 1.9  2.0 2.1 2.2-dev

2.4: composición haproxi

程序环境:
 	主程序:/usr/sbin/haproxy
	配置文件:/etc/haproxy/haproxy.cfg
	Unit file:/usr/lib/systemd/system/haproxy.service
配置段:
    global:全局配置段
	进程及安全配置相关的参数
	性能调整相关参数
	Debug参数
    proxies:代理配置段
	defaults:为frontend, backend, listen提供默认配置
	frontend:前端,相当于nginx中的server {
    
    }
	backend:后端,相当于nginx中的upstream {
    
    }
	listen:同时拥有前端和后端,适用于一对一环境

Tres: use Haproxy para construir un clúster web

marca

Requisitos de host

  • Utilice un cliente y tres servidores virtuales para simular un conjunto de clústeres web

  • Sistema con Centos 7.6 instalado en la máquina virtual

Anfitrión sistema operativo dirección IP Software principal
Servidor haproxy Centos 7.6 20.0.0.41 haproxy-1.5.19.tar
Servidor Nginx 1 Centos 7.6 20.0.0.42 nginx-1.12.0.tar
Servidor Nginx 2 Centos 7.6 20.0.0.43 nginx-1.12.0.tar
Cliente ganar 10 20.0.0.50 Navegador Edge

3.1: Instalación y puesta en marcha de Nginx

Instale Nginx en los dos servidores web e inicie el servicio

  • Instalar usando codificación

  • Apague el firewall de Firewalld

  • Instale el paquete base

  • Aumentar nginx de usuario del sistema

  • Compile e instale Nginx y comience

#关闭防火墙
setenforce 0
iptables -F

#安装环境包
yum install -y pcre-devel zlib-devel gcc gcc-c++ make
#解压Nginx软件包
tar zxvf nginx-1.12.2.tar.gz -C /opt

#切换到nginx目录
[root@web1 ~]# cd /opt
[root@web1 opt]# cd nginx-1.12.2/

#配置
[root@web1 nginx-1.12.2]# ./configure \
> --prefix=/usr/local/nginx \       //安装目录
> --user=nginx \                    //用户
> --group=nginx                     //用户组

编译及安装
make && make install

#创建web站点首页index.html
[root@web1 nginx-1.12.2]# cd html/
[root@web1 html]# vim test.html
//编写以下信息
<h1>this is web1</h1>

#切换web2节点服务器
<h1>this is web2</h1>

#建立软链接,便于管理nginx
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/

#两台节点服务器都启动
nginx    //启动
nginx -t   //检查配置文件
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

#查看端口
netstat -ntap | grep nginx
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      22361/ngin: master 

3.11: Prueba accediendo a etc. en el cliente

marca

marca

marca

3.2: Instalación y puesta en marcha de la configuración de Haproxy

3.21: Instale Haproxy en el balanceador de carga

//下载依赖环境
[root@haproxy ~]# yum install -y \

> pcre-devel \
> bzip2-devel \
> gcc \
> gcc-c++ \
> make

[root@haproxy ~]# ls
anaconda-ks.cfg        initial-setup-ks.cfg  模板  图片  下载  桌面
haproxy-1.5.19.tar.gz  公共                  视频  文档  音乐
//解压到当前目录
[root@haproxy ~]# tar zxvf haproxy-1.5.19.tar.gz 
#编译安装
[root@haproxy ~]# cd haproxy-1.5.19/
[root@haproxy haproxy-1.5.19]# make TARGET=linux26
[root@haproxy haproxy-1.5.19]# make install

#创建haproxy配置文件目录
[root@haproxy haproxy-1.5.19]# mkdir /etc/haproxy

#复制模板配置文件到haproxy目录下
[root@haproxy haproxy-1.5.19]# cp examples/haproxy.cfg /etc/haproxy/

3.22: Configurar archivo Haproxy

vim /etc/haproxy/haproxy.cfg 

删除:#chroot /usr/share/haproxy
          #redispatch


this config needs haproxy-1.1.28 or haproxy-1.2.1

global
        log 127.0.0.1   local0
        log 127.0.0.1   local1 notice
        #log loghost    local0 info
        maxconn 4096
        #chroot /usr/share/haproxy     //这边注释
        uid 99      //使用系统为99的ID号
        gid 99
        daemon
        #debug
        #quiet

default
        log     global             //定义日志为global配置
        mode    http               //http模式
        option  httplog            //采用http日志格式记录日志
        option  dontlognull
        retries 3                  //检查节点服务器的失败连续达到三次认为节点不可用
        #iredispatch               //这边注释  不然服务启动不了
        maxconn 2000               //最大连接数
        contimeout      5000       //连接超时时间
        clitimeout      50000      //客户端超时时间
        srvtimeout      50000       //服务器超时时间
 
listen  webcluster 0.0.0.0:80
        option httpchk GET /test.html  检查节点服务器的test.html文件【首页文件】
        balance roundrobin
        server inst1 20.0.0.42:80 check inter 2000 fall 3 //定义备份点
        server inst2 20.0.0:43:80 check inter 2000 fall 3 //定义备份点

3.23: Cree un script de inicio automático e inicie Haproxy

#关闭防火墙
[root@localhost haproxy-1.5.19]# iptables -F
[root@localhost haproxy-1.5.19]# setenforce 0
[root@localhost haproxy-1.5.19]# cp examples/haproxy.init /etc/init.d/haproxy

#为haproxy赋予可执行权限
[root@localhost haproxy-1.5.19]# chmod +x /etc/init.d/haproxy

#加入系统服务
[root@localhost haproxy-1.5.19]# chkconfig --add /etc/init.d/haproxy
[root@localhost haproxy-1.5.19]# ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy

#启动haproxy
[root@localhost haproxy-1.5.19]# service haproxy start
[root@localhost haproxy-1.5.19]# netstat -ntap | grep haproxy
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      87939/haproxy       

3.24: Configuración y prueba

  • Prueba de clúster Haproxy
    • Prueba de alto rendimiento
      • Se puede acceder a dos sitios web de prueba en dos navegadores diferentes, y las páginas de prueba de los dos sitios web deberían aparecer en circunstancias normales.

marca

marca

  • Alta disponibilidad

  • Deshabilite uno de los servidores Nginx y acceda a Haproxy en el navegador del cliente. En circunstancias normales, debería aparecer la página de prueba del sitio web del otro servidor Nginx

Cuatro: gestión de registros haproxy

  • El registro de Haproxy se envía al syslog del sistema de forma predeterminada, que generalmente se define por separado en el entorno de producción.
  • Pasos definidos del método
    • Modifique las opciones de configuración del registro en el archivo de configuración de Haproxy y agregue la configuración:
      • log / dev / log local0 info
      • aviso de log / dev / log local0
    • Modifique la configuración de rsyslog para definir de forma independiente la configuración relacionada con Haproxy para
      • haproxy.conf y colóquelo en /etc/rsyslog.d/
    • Guarde el archivo de configuración y reinicie el servicio rsyslog para completar la configuración de rsyslog

4.1: Editar archivo de configuración haproxy


[root@localhost haproxy]# vim /etc/haproxy/haproxy.cfg 
//在global下面两行日志文件位置重新定义分离

global
        log /dev/log    local0 info
        log /dev/log    local1 notice
...省略信息........

#修改配置文件需要重启服务
[root@localhost haproxy-1.5.19]# service haproxy restart
Restarting haproxy (via systemctl):  

#创建配置文件目录
[root@localhost haproxy-1.5.19]# touch /etc/rsyslog.d/haproxy.conf
[root@localhost haproxy-1.5.19]# 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
&~

#重启日志文件
[root@localhost haproxy-1.5.19]# systemctl restart rsyslog.service 
  • La actualización de la revisión generará dos archivos de registro
[root@localhost log]# cd haproxy/
[root@localhost haproxy]# ls
haproxy-info.log  haproxy-notice.log

gracias por ver

Supongo que te gusta

Origin blog.csdn.net/weixin_47151643/article/details/108372243
Recomendado
Clasificación