13.HAProxy负载均衡

主流负载均衡:lvs、nginx、haproxy介绍

lvs:四层,优点:抗负载能力强、性能较高,软件可以做到F5硬件的60%,对内存和CPU占用比较低,工作在OSI的第四层(传输层),是vrrp协议转发,流量由Linux内核处理;缺点是配置难度较大

nginx:七层,优点:用来处理http,对于http分流、目录结构等比较好用,对网络依赖较低(理论上只要能ping通自己网站就能用nginx做负载均衡),安装很容易,理论上10000并发没有问题;缺点:支持协议较少,只支持http、https、email等,很多不支持,如session和cookie的保持等

haproxy:四层、七层、虚拟主机,性能比nginx稍微高一点,安装起来特别容易,免费,理论上可以支持10Gbps,可以做数据库、邮件等非web负载均衡,有的企业会将它作为mysql读操作的负载均衡

基本信息

安装

yum -y install haproxy

配置文件

/etc/haproxy/haproxy.cfg

守护进程的服务

/usr/lib/systemd/system/haproxy.service

配置文件信息解读

log      127.0.0.1 local2  # 指定使用全局日志的配置
chroot   /var/lib/haproxy   # 改变当前工作的目录和pid文件
maxconn   4000   # 最大连接数
user      haproxy   # 运行haproxy的用户
group     haproxy   # 运行haproxy的组
daemon    # 以守护进程运行haproxy

defaults  # 默认工作状态
    mode                    http     # 使用的协议
    log                     global   # 使用全局日志配置
    option                  httplog  # 使用日志记录http请求,默认情况下haproxy日志不记录http请求
    option                  dontlognull  # 日志不记录空链接
    option http-server-close   # 每次请求后会主动将http通道关闭
    option forwardfor       except 127.0.0.0/8   # 服务器上的应用程序相对本地发起请求的话,haproxy会将客户端的IP发送给服务器,会在http请求中添加X-Forwarded-For字段
    option                  redispatch   # 如果使用cookie或session重新访问cookie不会刷新,将客户的请求强制定位到后端服务器上保持服务的正常
    retries                 3   # 如果连接后端服务器连接失败重试3次,如果重试3次都失败会将该服务器标记不可用
    timeout http-request    10s  # http超时时间10s
    timeout queue           1m   # 队列超时时间
    timeout connect         10s  # 连接超时
    timeout client          1m   # 客户端超时
    timeout server          1m   # 服务端超时
    timeout http-keep-alive 10s  # http保持连接时间
    timeout check           10s  # 检测超时
    maxconn                 3000  # 每个进程最大连接数

fronted main *:5000   # 前端监听地址
	acl url_static       path_beg       -i /static /images /javascript /stylesheets  # 静态文件目录做过滤
  acl url_static       path_end       -i .jpg .gif .png .css .js   # 
后缀名做过滤

backend static  # 动静分离
    balance     roundrobin   # 负载均衡算法
    server      static 127.0.0.1:4331 check   # 静态文件主机

backend app     # 后端部分
    balance     roundrobin   # 负载均衡算法
    server  app1 127.0.0.1:5001 check   # 负载分担服务器
    server  app2 127.0.0.1:5002 check inter 2000 fall 3 weight 3 
    server  app3 127.0.0.1:5003 check
    server  app4 127.0.0.1:5004 check

inter  2000   # 心跳检测间隔时间;
rise 3        # 三次连接成功,判定为“健康”状态;
fall  3       # 三次连接失败,判定为“不健康”状态;
weight 3      # 权重设置为3

正式使用需要手动打开,默认关闭

systemctl start haproxy

根据配置文件,用户访问5000端口即可,假如我们在5001设置网站内容为AAA,5002设置网站内容为BBB,此时用户访问5000端口内容会在AAA和BBB之间,这样每台服务器压力就会减少

posted @ 2022-08-11 17:51  icui4cu  阅读(74)  评论(0编辑  收藏  举报