haproxy的安装和服务信息

发布于:2024-08-08 ⋅ 阅读:(114) ⋅ 点赞:(0)

为什么要使用haproxy?

因为LSV无后端检测,当webserver有一台状态异常,则运作异常;所以用haproxy来解决。

haproxy是一款具备高并发(万级以上)、高性能的TCP和HTTP负载均衡器,它支持基于cookie的持久性,自动故障切换,支持正则表达式及web状态统计。

目录

一、实验环境

二、haproxy基本部署

1、下载安装

2、部署

3、测试

(1)nginx服务皆开启时

(2)断开其中一个nginx服务,开启后端检测

三、基本配置信息

(1)global        全局配置段

(2)proxies        代理配置段

        1、defaults

        2、frontend

        3、backend

        4、listen


一、实验环境

功能 IP
本地 172.25.254.1
haproxy eth0   172.25.254.100     
RS1 eth0   172.25.254.10
RS2 eth0   172.25.254..20

二、haproxy基本部署

1、下载安装

[root@haproxy ~]# dnf install haproxy -y
[root@webserver1 ~]# dnf install nginx -y
[root@webserver2 ~]# dnf install nginx -y

2、部署

[root@webserver1 ~]# echo webserver1 -- 172.25.254.10 > /usr/share/nginx/html/index.html
[root@webserver1 ~]# systemctl enable --now nginx

[root@webserver2 ~]# echo webserver2 -- 172.25.254.20 > /usr/share/nginx/html/index.html
[root@webserver2 ~]# systemctl enable --now nginx

在 haproxy.cfg中编辑,添加图片中所示内容,其中框出的两种方式皆可用

[root@haproxy ~]# vim /etc/haproxy/haproxy.cfg
[root@haproxy ~]# systemctl enable haproxy
[root@haproxy ~]# systemctl restart haproxy.service

tip小技巧

3、测试

(1)nginx服务皆开启时

(2)断开其中一个nginx服务,开启后端检测

[root@webserver1 ~]# systemctl stop nginx.service

三、基本配置信息

HAProxy配置文件——haproxy.cfg(两部分组成:global、proxies)

(1)global        全局配置段

        进程及安全配置相关的参数、性能调整相关参数、Debug参数

参数 类型 作用
chroot 全局 锁定运行目录
deamon 全局 以守护进程运行
user, group, uid, gid 全局 运行haproxy的用户身份
stats socket 全局 套接字文件
nbproc N 全局 开启的haproxy worker进程数,默认进程数1
nbthread 1
(与nbproc互斥)
全局 指定每个人haproxy进程开启的线程数,默认为每个进程一个线程
cpu-map 1 0 全局 绑定haproxy worker进程至指定CPU,将第1个work进程绑定至0号CPU
cpu-map 2 1 全局 绑定haproxy worker进程至指定CPU,将第2个work进程绑定至1号CPU
maxconn N 全局 每个haproxy进程的最大并发连接数
maxsslconn N 全局 每个haproxy进程ssl最大连接数,用于haproxy配置了证书的场景下
maxconnrate N 全局 每个进程每秒创建的最大连接数量
spread-checks N 全局 后端server状态check随机提前或延迟百分比时间,建议2-5(20%-50%)之间,默认值0
pidfile 全局 指定pid文件路径
log 127.0.0.1 local2 info 全局 定义全局的syslog服务器;日志服务器需要开启UDP协议,最多可以定义两个

示例:

nbproc 2    #开启两个进程

# 当启用多进程时,需绑定进程至指定CPU,避免CPU漂移
cpu-map 1 0    #进程和cpu核心绑定防止cpu抖动从而减少系统资源消耗
cpu-map 2 1    #2 表示第二个进程,1表示第二个cpu核心

# 日志文件——定向haproxy的日志
[root@haproxy ~]# vim /etc/haproxy/haproxy.cfg    # 查看定义标准
[root@haproxy ~]# vim /etc/rsyslog.conf    # 开启UDP服务,定义haproxy日志文件位置

[root@haproxy ~]# systemctl restart rsyslog.service
[root@haproxy ~]# systemctl restart haproxy.service

(2)proxies        代理配置段

        defaults:为frontend, backend, listen 提供默认配置

        frontend:前端,相当于nginx中的server{}

        backend:后端,相当于nginx中的upstream{}

        listen:同时拥有前端和后端配置,配置简单,生产推荐使用

参数 类型 作用
defaults [] proxies 默认配置项,针对以下的frontend、backend和listen生效,可以多个name也可以没有name
frontend proxies 前端servername,类似于Nginx的一个虚拟主机server和LVS服务集群。
backend proxies 后端服务器组,等于nginx的upstream和LVS中的RS服务器
listen proxies 将frontend和backend合并在一起配置,相对于frontend和backenc配置更简洁,生产常用

        1、defaults

参数 功能
option abortonclose 当服务器负载很高时,自动结束掉当前队列处理比较久的连接,针对业务当情况选择开启
option redispatch 当server ld对应的服务器挂掉后,强制定向到其他健康的服务器,重新派发
option http-keep-alive 开启与客户端的会话保持
option forwardfor 透传客户端真实IP至后端web服务器(在apache配置文件中加入:%{X-Forwarded-For}i后在webserer中看日志即可看到地址透传信息)
mode http | tcp 设置默认工作类型,使用TCP服务器性能更好,减少压力
timeout http-keep-alive 120s session 会话保持超时时间,此时间段内会转发到相同的后端服务器
timeout connect 120s 客户端请求从haproxy到后端server最长连接等待时间(TCP连接之前)默认单位ms
timeout server 600s 客户端请求从haproxy到后端服务端的请求处理超时时长(TCP连接之后),默认单位ms,如果超时,会出现502错误,此值建议设置较大些,访止502错误
timeout client 600s 设置haproxy与客户端的最长非活动时间,默认单位ms,建议和timeout server相同
timeout check 5s 对后端服务器的默认检测超时时间
default-server inter 1000 weight 3 指定后端服务器的默认设置

        2、frontend

        bind:指定HAProxy的监听地址,可以是IPV4或IPV6,可以同时监听多个IP或端口,可同时用于listen字段中        

        格式:bind [<address>]:<port_range>[,...][param*]

[root@haproxy ~]# vim /etc/haproxy/haproxy.cfg

注意:如果需要绑定在非本机的IP,需要开启内核参数:net.ipv4.ip_nonlocal_bind=1
backlog <backlog>#针对所有server配置,当前端服务器的连接数达到上限后的后援队列长度,注意:不支持backend

        3、backend

        定义一组后端服务器,backend服务器将被frontend进行调用。

        mode http | tcp        # 指定负载协议类型,和对应的frontend必须一致

        option                      #配置选项

        sever                       #定义后端realserver,必须指定IP和端口

注意:backend 的名称必须唯一,并且必须在listen或frontend中事先定义才可以使用,否则服务无法启动

option后面加 httpchk,smtpchk,mysql-check,pgsql-check,ssl-hello-chk方法,可用于实现更多应用层检测功能。

        4、listen

        使用listen替换 frontend和backend的配置方式,可以简化设置,通常只用于TCP协议的应用