Haproxy de uso en clúster para construir

Haproxy construye un clúster

1. Programador de clústeres web común

 目前常见的 Web 集群调度器分为软件和硬件,软件通常使用开源的LVS、Haproxy、Nginx,硬件一般使用比较多的是 F5,也有很多人使用国内的一些产品,如梭子鱼、绿盟等。

2. Análisis de la aplicación de haproxy

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

LVS不支持正则处理,不能实现动静分离、
 对于大型网站,LVS的实施配置复杂,维护成本相对较高

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

特别适用于负载特别大的Web站点
运行在当前的硬件上可支持数以万计的并发连接的链接请求

Tres. Principio del algoritmo de programación haproxy

Haproxy admite una variedad de algoritmos de programación, los más utilizados son tres:

1.RR (Round Robin)

RR算法是最简单最常用的一-种算法,即轮询调度

理解举例
  有三个节点A、B、C,第一个用户访问会被指派到节点A,第二个用户访问会被指派到节点B,第三个用户访问会被指派到节点
  第四个用户访问继续指派到节点A,轮询分配访问请求实现负载均衡效果

2.LC (conexiones mínimas)

LC算法即最小连接数算法,根据后端的节点连接数大小动态分配前端请求

理解举例
   有三个节点A、B、C,各节点的连接数分别为A:4、B:5、 C:6, 此时如果有第一个用户连接请求,会被指派到A上,连接数变为A:5、B:5、 C:6
   第二个用户请求会继续分配到A上,连接数变为A:6、B:5、 C:6; 再有新的请求会分配给B,每次将新的请求指派给连接数最小的客户端
   由于实际情况下A、B、C的连接数会动态释放,很难会出现-样连接数的情况,因此此算法相比较rr算法有很大改进,是目前用到比较多的-种算法

3.SH (Hash de fuente)

SH即基于来源访问调度算法,此算法用于一些有Session会话记录在服务器端的场景,可以基于来源的IP、Cookie等做集群调度

理解举例
  有三个节点A、B、C,第一个用户第一次访问被指派到了A,第二个用户第一次访问被指派到了B
  当第一个用户第二次访问时会被继续指派到A,第二个用户第二次访问时依旧会被指派到B,只要负载均衡调度器不重启,第一个用户访问都会被指派到A,第二个用户访向都会被指派到B,实现集群的调度
  此调度算法好处是实现会话保持,但某些IP访问量非常大时会引起负载不均衡,部分节点访问量超大,影响业务使用

Archivo de configuración de Four. Haproxy detallado

1. El archivo de configuración de Haproxy generalmente se divide en tres partes

global:为全局配置
defaults:为默认配置
listen:为应用组件配置

2.Parámetros de configuración global

log 127.0.0.1 local0:配置日志记录,配置日志记录,ocal0为日志设备,默认存放到系统日志
log 127.0.0.1 local0 notice: notice为 日志级别通常有24个级别
maxconn4096:最大连接数
uid 99:用户uid
gid 99:用户gid

3. El elemento de configuración predeterminada configura los parámetros predeterminados, que generalmente son heredados por el componente de la aplicación. Si no hay una declaración especial en el componente de la aplicación, se instalarán los parámetros de configuración predeterminados.

log global:定义日志为global配置中的日志定义
mode http:模式为http
option httplog:采用http日志格式记录日志
retries 3:检查节点服务器失败连续达到三次则认为节点不可用
maxconn 2000:最大连接数
contimeout 5000:连接超时时间
clitimeout 50000:客户端超时时间
srtimeout 50000:服务器超时时间

4.Los elementos de configuración de escucha son generalmente parámetros del módulo de aplicación de configuración

listen appli4-backup 0.0.0.0:10004: 定义一-个appli4-backup的应用
option httpchk /index.html: 检查服务器的index.html文件, option persist :强制将请求发送到已经down掉的服务器) Balance roundrobin: 负载均衡调度算法使用轮询算法
server inst1 192.168.114 .56:80 check inter 2000 fall3: 定义在线节点
 server inst2 192. 168.114.56:81 check inter 2000 fall 3 backup:定义备份节点

5. Gestión de registros haproxy

Haproxy的日志默认是输出到系统的syslog中,在生产环境中一般单独定义出来

修改Haproxy配置文件中关于日志配置的选项,加入配置:
vi /etc/haproxy/haproxy.cfg
 log 127.0.0.1 local0和log 127.0.0.1 local0 notice  //需要注释掉
 log /dev/log local0 info
 log /dev/log local0 notice
 修改rsyslog配置,将Haproxy相关的配置独立定义到 haproxy.conf,并放到etclrsyslog.d下,保存配置文件并重启rsyslog服务,完成rsyslog配置

6.Parámetros optimizados por Haproxy

随着企业网站负载增加,haproxy参数优化相当重要

maxconn:最大连接数,根据应用实际情况进行调整,推荐使用10 240
daemon:守护进程模式, Haproxy可以使用非守护进程模式启动,建议使用守护进程模式启动
nbproc:负载均衡的并发进程数,建议与当前服务器CPU核数相等或为其2倍
oretries:重试次数,主要用于对集群节点的检查,如果节点多,且并发量大,设置为2次或3次
option http-server-close:主动关闭http请求选项,建议在生产环境中使用此选项
timeout http-keep-alive:长连接超时时间,设置长连接超时时间可以设置为10s
timeout http-request: http请求超时时间,建议将此时间设置为5~ 10s,增加http连接释放速度
timeout client:客户端超时时间,如果访问量过大,节点响应慢可以将此时间设置短一些,建议设置为1min左右就可以了

Five. Demo

1. Requisitos ambientales
1. Un servidor de programación Haproxy, dos servidores Nginx, un cliente;
2. Tres servidores son sistemas CentOS 7.3 de 64 bits;
3. Todas las tarjetas de red del host están configuradas en modo de solo host, con dirección de enlace estático;
4 El cliente puede acceder a los dos servidores de nodo accediendo al servidor de despacho, sin acceder a la dirección real del servidor.
2. Planificación de
direcciones Servidor Haproxy: 192.168.100.210
Servidor Nginx 1: 192.168.100.201
Servidor Nginx 2: 192.168.100.202
Servidor nfs: 192.168.100.200
Cliente: 192.168.100.50

1. Construya el servidor de programación Haproxy

Usa yum para instalar herramientas de compilación

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

Descomprima el paquete fuente haproxy y compile

 yum -y install gcc gcc-c++ make pcre-devel bzip2-devel
 cd /opt/
 tar zxf haproxy-1.4.24.tar.gz
 cd haproxy-1.4.24/
 make TARGET=linux26
 make install

Modifique el archivo de configuración haproxy.cfg e inicie el servicio

mkdir /etc/haproxy
cp examples/haproxy.cfg /etc/haproxy/
vi /etc/haproxy/haproxy.cfg
注释下面,防止启动失败
#chroot /usr/share/haproxy
#redispatch

删除所有listen条目,添加一下条目
listen webcluster 0.0.0.0:80
    option httpchk GET /index.html
    balance roundrobin
    server web1 192.168.100.201:80 check inter 2000 fall 3
    server web2 192.168.100.202:80 check inter 2000 fall 3

Copie el script de inicio de haproxy en el proceso de inicio del sistema

cp examples/haproxy.init /etc/init.d/haproxy       #复制haproxy启动脚本到系统启动进程中
vi /etc/init.d/haproxy
# chkconfig:35 80 83(将-换成35)

chmod 755 /etc/init.d/haproxy
chkconfig --add /etc/init.d/haproxy
ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy     #建立脚本命令软链接
$syslogseverity-text
systemctl start haproxy

2. Configuración del servidor NFS

yum -y install nfs-utils rpcbind
mkdir /opt/web1
mkdir /opt/web2
echo "this is kgc web" > /opt/web1/index.html
echo "this is accp web" > /opt/web2/index.html

vi /etc/exports
/opt/web1 192.168.100.201/32(ro)
/opt/web2 192.168.100.202/32(ro)
systemctl start nfs
systemctl start rpcbind
showmount -e	#查看本机共享存储发布情况

3. Cree el servidor Nginx

Ambos servidores Nginx deben usar yum para instalar herramientas de compilación

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

Descomprima el paquete de código fuente y cree un usuario administrativo

#解压Nginx源码包到/opt目录
root@nginx1 mnt]# tar zxvf nginx-1.12.2.tar.gz -C /opt

#创建Nginx管理用户
 root@nginx1 mnt]# cd /opt
[root@nginx1 opt]# useradd -M -s /sbin/nologin nginx

Configurar Nginx1

cd nginx-1.12.2/
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx
.编译安装
 make && make install
 ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
 nginx
 nginx -t
 mount 192.168.100.200:/opt/web1 /usr/local/nginx/html/index.html

Configurar Nginx2

cd nginx-1.12.2/
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx
.编译安装
 make && make install
 ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
 nginx
 nginx -t
 mount 192.168.100.200:/opt/web2 /usr/local/nginx/html/index.html

4. Prueba

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

5. Registro de configuración

#重启haproxy 服务
 service haproxy restart 
Restarting haproxy (via systemctl):                        [  确定  ]

#创建
 touch /etc/rsyslog.d/haproxy.conf
 vim /etc/rsyslog.d/haproxy.conf

#定义haproxy信息日志
if ($programname  =='haproxy' and $syslogseverity-text'== 'info')
then -/var/log/haproxy/haproxy-info.log
&~

#定义haproxy通知日志
if ($programname == 'haproxy' and $syslogseverity-text == 'notice')
 then -/var/log/haproxy/haproxy-notice.log
&~

#重启日志服务
systemctl restart rsyslog.service

#切换到日志目录下查看haproxy日志文件
 cd /var/log/haproxy/
 ls
 haproxy-info.log

#查看日志文件
 cat haproxy-info.log

Supongo que te gusta

Origin blog.csdn.net/weixin_45647891/article/details/111027376
Recomendado
Clasificación