当前位置: 首页 > news >正文

haprox七层代理

一、负载均衡概念

什么是负载均衡

负载均衡: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的状态页面配置

重启服务后浏览器访问:

http://www.dtcms.com/a/292890.html

相关文章:

  • 医院如何实现节能降耗?
  • <另一种思维:语言模型如何展现人类的时间认知>读后总结
  • 【上市公司变量测量】Python+FactSet Revere全球供应链数据库,测度供应链断裂与重构变量——丁浩员等(2024)《经济研究》复现
  • Day28| 122.买卖股票的最佳时机 II、55. 跳跃游戏、45.跳跃游戏 II、1005.K次取反后最大化的数组和
  • Spring AI Alibaba + JManus:从架构原理到生产落地的全栈实践——一篇面向 Java 架构师的 20 分钟深度阅读
  • MSTP实验
  • 深入理解 Qt 中的 QImage 与 QPixmap:底层机制、差异、优化策略全解析
  • 集训Demo5
  • 代码检测SonarQube+Git安装和规范
  • 从FDTD仿真到光学神经网络:机器学习在光子器件设计中的前沿应用工坊
  • Matlab学习笔记:界面使用
  • 【数据结构初阶】--栈和队列(二)
  • CanOpen--SDO 数据帧分析
  • vscode不识别vsix结尾的插件怎么解决?
  • sysbench对linux服务器上mysql8.0版本性能压测
  • Thinkphp8使用Jwt生成与验证Token
  • 问题记录:地图数据状态没有实时更新问题
  • 前端--bom、JQuery
  • 滴滴0722 总结与优化方向
  • Spring Boot+Redis Zset:三步构建高可靠延迟队列系统
  • 博物馆智慧导览系统AR交互与自动感应技术:从虚实融合到智能讲解的技术实践
  • Kubernetes调度器
  • 数据结构 堆(2)---堆的实现
  • 第三章 Freertos物联网实战esp8266模块
  • MySQL 学习一 存储结构和log
  • JDBC编程
  • 刀客doc:Netflix与YouTube开始在广告战场正面交锋
  • 数组——初识数据结构
  • 算法第26天|贪心算法:用最少数量的箭引爆气球、无重叠区间、划分字母区间
  • 35.安卓逆向2-frida hook技术-过root检测