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

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.xdnf.cn/news/16610.html

相关文章:

  • 【深度学习优化算法】10:Adam算法
  • DDD领域驱动中瘦模型与富态模型的核心区别
  • SpringCloude快速入门
  • 2025最新Mybatis-plus教程(三)
  • java的break能加标签,return可以加标签吗
  • Java#包管理器来时的路
  • 常见认证机制详解
  • Python爬虫入门:从零开始抓取网页数据
  • LeetCode|Day27|70. 爬楼梯|Python刷题笔记
  • print(“\033[31m红\033[32m绿\033[34m蓝\033[0m默认色“)
  • Java学习-------外观模式
  • [spring6: Mvc-异步请求]-源码分析
  • LINUX727 磁盘管理回顾1;配置文件回顾
  • 机械学习初识--什么是机械学习--机械学习有什么重要算法
  • 习题综合练习
  • 数据结构基础内容(第二篇:线性结构)
  • Qt 分裂布局:QSplitter 使用指南
  • 07.4-使用 use 关键字引入路径
  • python中的容器与自定义容器
  • SpringBoot多容器化实例实战
  • FFmpeg——参数详解
  • 墨者:通过手工解决SQL手工注入漏洞测试(MongoDB数据库)
  • C++学习(线程相关)
  • 负载均衡Haproxy
  • SABR-Net
  • uniapp input 聚焦时键盘弹起滚动到对应的部分
  • iOS安全和逆向系列教程 第21篇:iOS应用加密与混淆技术深度剖析
  • Java面试宝典:MySQL性能优化
  • 用 ESP32 和 LCD 轻松显示植物湿度
  • 第十八章:AI的“通感”:揭秘图、文、音的共同语言——CLIP模型