haprox七层代理

发布于:2025-07-23 ⋅ 阅读:(16) ⋅ 点赞:(0)

一、负载均衡概念

什么是负载均衡

负载均衡:Load Balance,简称LB,是一种服务或基于硬件设备等实现的高可用反向代理技术,负载均衡将特定的业务(web服务、网络流量等)分担给指定的一个或多个后端特定的服务器或设备,从而提高了公司业务的并发处理能力、保证了业务的高可用性、方便了业务后期的水平动态扩展

为什么要用负载均衡

  1. web服务器的动态水平扩展
  2. 增强业务并发访问能力及处理能力---解决单服务器瓶颈问题
  3. 节约公网IP,降低IT支出成本
  4. 隐藏内部服务器---提高内部服务器安全性
  5. 配置简单---固定格式的配置文件
  6. 功能丰富---支持四层和七层,支持动态下线主机
  7. 性能较强---支持十万或者数十万并发

二、haproxy概念

HAProxy(High Availability Proxy)是一款开源的高性能 TCP/HTTP 负载均衡器和 反向代理软件,广泛应用于分发网络流量、提升系统可用性和扩展性。它支持:

  • 四层(L4,传输层)和 七层(L7,应用层)负载均衡。
  • 多种负载均衡算法(如轮询、最小连接、哈希等)。
  • SSL/TLS 终止、健康检查、会话保持等高阶功能。
  • 高并发、低延迟,适合大规模分布式系统。

haproxy基本配置

global全局配置段:

log 127.0.0.1 local2 #定义全局的syslog服务器;日志服务器需要开启UDP协议,最多可以定义两个

chroot /var/lib/haproxy #锁定运行目录

pidfile /var/run/haproxy.pid #指定pid文件

maxconn 100000 #指定最大连接数

user haproxy #指定haproxy的运行用户

group haproxy #指定haproxy的运行组

daemon #指定haproxy以守护进程方式运行

# turn on stats unix socket

stats socket /var/lib/haproxy/stats #指定haproxy的套接字文件

nbproc 2 #指定haproxy的work进程数量,默认是1个

cpu-map 1 0 #指定第一个work绑定第一个cpu核心

cpu-map 2 1 #指定第二个work绑定第二个cpu核心

nbthread 2 #指定haproxy的线程数量,默认每个进程一个线程,此参数与nbproc互斥

maxsslconn 100000 #每个haproxy进程ssl最大连接数,用于haproxy配置了证书的场景下

maxconnrate 100 #指定每个客户端每秒建立连接的最大数量

多进程和多线程配置信息

nbproc 2 #启用多进程

cpu-map 1 0 #进程和cpu核心绑定防止cpu抖动从而减少系统资源消耗

cpu-map 2 1 #2 表示第二个进程,1表示第二个cpu核心

多进程启用后,能看见haproxy启用了多个进程

开启多线程模式(多进程和多线程模式两者不能同时开启)

proxies配置  

参数说明:

default配置

defaults

mode http #HAProxy实例使用的连接协议

log global #指定日志地址和记录日志条目的syslog/rsyslog日志设备

#此处的 global表示使用 global配置段中设定的log值。

option httplog #日志记录选项,httplog表示记录与 HTTP会话相关的各种属性值

#包括 HTTP请求、会话状态、连接数、源地址以及连接时间等

option dontlognull #dontlognull表示不记录空会话连接日志

option http-server-close #等待客户端完整HTTP请求的时间,此处为等 待10s。

option forwardfor except 127.0.0.0/8 #透传客户端真实IP至后端web服务器

#后在webserver中看日志即可看到地址透传信息

option redispatch #当server Id对应的服务器挂掉后,强制定 向到其他健康的服务器,重发

option http-keep-alive #开启与客户端的会话保持

retries 3 #连接后端服务器失败次数

timeout http-request 10s #等待客户端请求完全被接收和处理的最长时 间

timeout queue 1m #设置删除连接和客户端收到503或服务不可用等提示信息前的等待时间

timeout connect 120s #设置等待服务器连接成功的时间

timeout client 600s #设置允许客户端处于非活动状态,即既不发送数据也不接收数据的时间

timeout server 600s #设置服务器超时时间,即允许服务器处于既不接收也不发送数据的非动时间

timeout http-keep-alive 60s #session 会话保持超时时间,此时间段内会转发到相同的后端服务器

timeout check 10s #指定后端服务器健康检查的超时时间

maxconn 3000

default-server inter 1000 weight 3

三、haproxy实验环境搭建

haproxy服务器:172.25.254.100

[root@haproxy ~]# systemctl disable --now firewalld.service

安装haproxy:[root@haproxy ~]# dnf install haproxy -y

[root@haproxy ~]# systemctl start haproxy.service
 

RS1:172.25.254.10

下载nginx,关闭防火墙

[root@RS1 ~]# dnf install nginx -y

[root@RS1 ~]# systemctl disable --now firewalld.service

[root@RS1 ~]# echo RS1 - 172.25.254.10 > /usr/share/nginx/html/index.html

重启nginx服务:systemctl restart nginx.service

RS2:172.25.254.20

下载nginx,关闭防火墙

同上

测试:

四、haproxy负载均衡简单示例

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

测试:

haproxy的状态页面配置

重启服务后浏览器访问:


网站公告

今日签到

点亮在社区的每一天
去签到