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

haproxy实列

热更新工具(socat)

1.安装

dnf install socat-1.7.4.1-5.el9.x86_64 -y

2.haproxy

vim /etc/haproxy/haproxy.cfg
#写入
stats socket /var/lib/haproxy/stats mode 600 level admin
#stats socket:声明一个统计套接字,用于进程间通信(IPC)。
​

3.看haproxy状态

3.查看集群状态

命令

字段名含义
be_id后端(Backend)的唯一数字标识符
be_name后端的名称
srv_id服务器在后端中的唯一数字标识符
srv_name服务器的名称
srv_addr服务器的 IP 地址或主机名
srv_op_state服务器的运行状态(数字编码)
srv_admin_state服务器的管理状态
srv_uweight用户配置的服务器权重
srv_iweight服务器的初始权重(基于健康检查动态调整前的权重)
srv_time_since_last_change自上次状态变更以来的时间(毫秒)
srv_check_status最近一次健康检查的状态
srv_check_result健康检查的详细结果
srv_check_health健康状态(成功 / 失败次数)
srv_check_state健康检查的当前阶段
srv_agent_state代理检查状态(如果启用了 agent 检查)
bk_f_forced_id后端强制状态的 ID(用于故障转移)
srv_f_forced_id服务器强制状态的 ID
srv_fqdn服务器的完全限定域名
srv_port服务器端口号
srvrecord服务器记录(内部使用)
srv_use_ssl是否使用 SSL 连接到服务器
srv_check_port健康检查使用的端口
srv_check_addr健康检查使用的 IP 地址
srv_agent_addr代理检查的地址
srv_agent_port代理检查的端口

集群权重

设置web1权重为1

关闭后端服务器

打开后端服务器

haproxy状态

配置

测试

haproxy的算法

静态算法

static-rr

配置

测试

first算法

配置

测试

动态算法

roundroubin

配置

测试

leastconn

配置

测试

source

配置

测试

hash

配置

uri

配置

一致性hash

配置

RS1配置文件

RS2

测试

url_param

配置

一致性hash

测试

har

配置

测试

cookie的会话保持

配置

测试

IP透传

四层

haproxy配置

nginx配置

日志

七层透传

haproxy

nginx

日志

ACL

hdr:用于完全匹配 HTTP 请求报文首部的指定字符串,格式为hdr(<name> (,<occ>))<name>是 header 的指定信息,<occ>表示在多值中使用的值的出现次数。

acl is_google hdr(host) -i www  # 匹配Host头为"www"的请求 -i忽略大小写

hdr_beg:前缀匹配,即匹配 header 中指定内容的开头,格式为hdr_beg(<name> (,<occ>))

acl is_api hdr_beg(path) /api  # 匹配路径以/api开头的内容

hdr_end:后缀匹配,匹配 header 中指定内容的结尾,格式为hdr_end(<name> (,<occ>))

acl is_js hdr_end(path) .img  # 匹配路径以.img结尾的请求

hdr_dom:域匹配,用于匹配 header 中的域名,格式为hdr_dom(<name> (,<occ>))

acl pc_web_page hdr_dom(host) -i www.badidu.com # 匹配所有请求域名为www.badidu.com的请求

hdr_dir:路径匹配,匹配 header 的 uri 路径,格式为hdr_dir(<name> (,<occ>))

acl in_images hdr_dir(path) /images  # 匹配路径包含"/images"目录的请求

hdr_len:长度匹配,匹配 header 的长度,格式为hdr_len(<name> (,<occ>))

acl long_cookie hdr_len(cookie) gt 500  # 匹配Cookie长度超过500的请求

hdr_reg:正则表达式匹配,使用自定义表达式 (regex) 进行模糊匹配,格式为hdr_reg(<name> (,<occ>))

acl ie6 hdr_reg(User-Agent) -i MSIE\ [1-6]\. #匹配IE1-6

hdr_sub:子串匹配,在 header 中的 uri 进行模糊匹配,格式为hdr_sub(<name> (,<occ>))

acl has_token hdr_sub(authorization) Bearer  # 匹配Authorization头包含"Bearer"的请求

2.base:string

返回第一个主机头和请求的路径部分的连接,该请求从主机名host开始,并在问号之前结束,对虚拟主机有用 <scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<frag>

匹配类型描述
base精确字符串匹配
base_beg前缀匹配
base_dir子目录匹配
base_dom域名匹配
base_end后缀匹配
base_len长度匹配
base_reg正则表达式匹配
base_sub子字符串匹配

3.path : string

提取请求的URL路径,该路径从/<path>开始,并在问号之前结束(无主机部分) <scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<frag>

匹配类型描述
path精确字符串匹配
path_beg前缀匹配(请求的 URL 开头,如 /static、/images、/img、/css)
path_end后缀匹配(请求的 URL 中资源的结尾,如 .gif、.png、.css、.js、.jpg、.jpeg)
path_dom域名匹配
path_dir子目录匹配
path_len长度匹配
path_reg正则表达式匹配
path_sub子字符串匹配

4.src | dst

匹配类型描述
src匹配源 IP 地址或网段。
src_port匹配源端口。
dst匹配目标 IP 地址(通常是负载均衡器的 IP)。
dst_port匹配目标端口。

ACL-flags 匹配模式

ACL匹配模式

-i 不区分大小写

-m 指定正则的匹配方法

-n 不做DNS解析

-u 禁止acl重名,否则多个同名ACL匹配或关

ACL-operator 具体操作符

整数操作符

操作符 含义  
eq  等于  
ne  不等于 
gt  大于  
ge  大于等于    
lt  小于  
le  小于等于    

字串匹配

-m str 完全匹配字符串      字符串必须完全匹配模式
-m sub 包含子串           在提取的字符串中查找模式,如果其中任何一个被发现,ACL将匹配
-m beg 前缀匹配           在提取的字符串首部中查找模式,如果其中任何一个被发现,ACL将匹配
-m end 后缀匹配           将模式与提取字符串的尾部进行比较,如果其中任何一个匹配,则ACL进行匹配
-m dir 路径目录匹配        查看提取出来的用斜线分隔(“/”)的字符串,如其中任一个匹配,则ACL进行匹配
-m dom 域名或子域名匹配     查找提取的用点(“.”)分隔字符串,如果其中任何一个匹配,则ACL进行匹配

组合使用

与:隐式(默认)使用

或:使用“or" 或 “||"表示

否定:使用 "!" 表示

示例

if valid_src valid_port         #与关系,ACL中A和B都要满足为true,默认为与
if invalid_src || invalid_port   #或,ACL中A或者B满足一个为true
if ! invalid_src                #非,取反,不满足ACL才为true

示例

配置

地址解析

测试

ip控制

配置

测试

匹配浏览器类型

配置

测试

基于后缀动静分离

配置

测试

基于路径实现动静分离

配置

rs1 rs2

测试

haproxy默认使用的错误错误页面

自定义错误页面

#打开配置文件写入 vim /etc/haproxy/haproxy.cfg errorfile 503 /haproxy/errorpages/503page.http

#创建目录 mkdir /haproxy/errorpages/ -p #复制文件 cp /usr/share/haproxy/503.http /haproxy/errorpages/503page.http #修改 vim /haproxy/errorpages/503page.http HTTP/1.0 503 Service Unavailable^M Cache-Control: no-cache^M Connection: close^M Content-Type: text/html^M ^M <html><body><h1>2222</h1> sorry </body></html> #重启haproxy服务 systemctl restart haproxy.service

测试

四层负载案列

haproxy配置

RS1 RS2

dnf install mariadb-server -y 安装数据库 #启动 systemctl start mariadb

添加用户

测试

https实现

制作证书

mkdir /etc/haproxy/certs/ #制作证书 openssl req -newkey rsa:2048 -nodes -sha256 -keyout /etc/haproxy/certs/jxe.key -x509 -days 365 -out /etc/haproxy/certs/jxe.crt #制作.pem文件 cat jxe.key jxe.crt >jxe.pem

haproxy配置

测试

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

相关文章:

  • 开源AI智能体-JoyAgent集成Deepseek
  • AI论文阅读方法+arixiv
  • 元宇宙工厂前端新形态:Three.js与WebGL实现3D产线交互的轻量化之路
  • 使用std::transform实现并发计算
  • Java 开发新人,入职后的环境搭建和配置
  • 安宝特方案丨AI算法能力开放平台:适用于人工装配质检、点检、实操培训
  • Netty中trySuccess和setSuccess的区别
  • python-内存管理
  • 【FAQ】MS Dynamics 365 Sales配置方法汇总
  • Linux中应用程序的安装于管理
  • Java面试宝典:Spring Boot
  • 基于BEKK-GARCH模型的参数估计、最大似然估计以及参数标准误估计的MATLAB实现
  • 【Linux学习】(12)环境变量
  • 自定义spring-boot-starter
  • STM32F4—电源管理器
  • 网络安全笔记
  • 图像处理第三篇:初级篇(续)—— 照明的理论知识
  • Springboot社区养老保险系统小程序
  • 基础算法思想——分治
  • 服务器防护教程 - 宝塔篇
  • 大模型应用开发1-认识大模型
  • 【Linux】编辑器vim和编译器gcc/g++
  • go‑cdc‑chunkers:用 CDC 实现智能分块 强力去重
  • mp快速入门
  • AI在编程、测试、数据分析等领域的前沿应用(技术报告)
  • 深度思考和搜索研究 最新的GSPO强化学习算法
  • 第六届金头脑杯夏季巅峰挑战:以智慧之名,点亮幼儿成长之路
  • RV1126B-P机器视觉应用AIoT及边缘计算算力达2.0支持 HDR 、 3DNR
  • Java设计模式之<建造者模式>
  • Go 语言面试题