news 2026/1/19 9:06:15

redis-2305e285 Predixy 中间件架构验证报告

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
redis-2305e285 Predixy 中间件架构验证报告

目录标题

  • redis-2305e285 Predixy 中间件架构验证报告
    • 一、验证结论
    • 二、Predixy 部署架构
      • 2.1 相关 Pods
      • 2.2 Predixy Pods 详细信息(含节点分布)
      • 2.3 StatefulSet 配置
      • 2.4 客户端服务配置
      • 2.5 Service Endpoints
    • 三、流量负载均衡机制
      • 3.1 CNI 确认
      • 3.2 Cilium kube-proxy 替代模式
      • 3.3 Cilium BPF LB 配置
      • 3.4 Cilium Service 负载均衡详情
      • 3.5 BPF Maps
      • 3.6 流量策略配置
      • 3.7 负载均衡总结
    • 四、Predixy 后端 Redis 连接配置
      • 4.1 Predixy ConfigMap
      • 4.2 后端 Redis Server Pods 分布
      • 4.3 Redis 主从角色分布
      • 4.4 Redis Service Endpoints
    • 五、高可用机制
      • 5.1 Predixy 健康检查
      • 5.2 Cilium 服务发现与故障转移
      • 5.3 节点级容错
    • 六、架构图
    • 七、验证命令汇总
    • 八、业务流量测试验证
      • 8.1 测试环境
      • 8.2 测试1: 基本连通性测试
      • 8.3 测试2: 基本读写操作
      • 8.4 测试3: 负载均衡验证
        • 3.1 并发负载测试 (200 操作)
        • 3.2 双源并发测试 (1000 请求)
        • 3.3 连通性验证测试 (100 次 PING)
      • 8.5 测试4: 双活实例独立响应验证
      • 8.6 测试5: 复杂数据类型操作
      • 8.7 测试6: 后端 Redis 复制状态验证
      • 8.8 测试结果汇总
      • 8.9 业务测试结论

redis-2305e285 Predixy 中间件架构验证报告

验证时间: 2025-12-28
集群: 145 (KUBECONFIG=/bpx/.145-admin.conf)
命名空间: qfusion-admin


一、验证结论

验证项结论
架构模式双活 (Active-Active)
副本数量2 个 Predixy 实例
负载均衡Cilium eBPF (Random 随机选择)
高可用Pod 级健康检查 + Cilium 自动故障转移

二、Predixy 部署架构

2.1 相关 Pods

kubectl get pods -n qfusion-admin|grepredis-2305e285

结果:

drc-redis-2305e285-0-0 3/3 Running 0 2d17h drc-redis-2305e285-0-1 3/3 Running 0 2d17h drc-redis-2305e285-1-0 3/3 Running 0 2d17h drc-redis-2305e285-1-1 3/3 Running 0 2d17h drc-redis-2305e285-2-0 3/3 Running 0 2d17h drc-redis-2305e285-2-1 3/3 Running 0 2d17h redis-2305e285-predixy-0 2/2 Running 0 2d17h redis-2305e285-slowlog-collector-0 1/1 Running 0 2d17h

2.2 Predixy Pods 详细信息(含节点分布)

kubectl get pods -n qfusion-admin -l redis.resource.type=predixy -o wide

结果:

NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES redis-2305e285-predixy-0 2/2 Running 0 2d17h 245.0.2.240 qfusion3 <none> <none> redis-2305e285-predixy-1 2/2 Running 0 2d17h 245.0.1.147 qfusion2 <none> <none>

分析:

  • 2 个 Predixy Pod 分布在不同节点(qfusion2, qfusion3)
  • 每个 Pod 包含 2 个容器: predixy + exporter
  • 监听端口:7617(非标准 6379)

2.3 StatefulSet 配置

kubectl get statefulset redis-2305e285-predixy -n qfusion-admin -ojsonpath='{.spec.replicas}'

结果:

2 replicas
kubectl get statefulset redis-2305e285-predixy -n qfusion-admin -ojsonpath='{.spec.podManagementPolicy}'

结果:

Parallel # 并行管理模式,Pod 可同时启动/更新

2.4 客户端服务配置

kubectl get svc -n qfusion-admin|grepredis-2305e285

结果:

redis-2305e285 ClusterIP 246.111.103.150 <none> 6379/TCP,16379/TCP,9100/TCP redis-2305e2850 ClusterIP 246.99.91.187 <none> 6379/TCP # Predixy 客户端入口 redis-2305e2850-lb ClusterIP 246.100.216.203 <none> 35036/TCP

客户端入口:redis-2305e2850(ClusterIP: 246.99.91.187:6379)

2.5 Service Endpoints

kubectl get endpoints redis-2305e2850 -n qfusion-admin

结果:

NAME ENDPOINTS AGE redis-2305e2850 245.0.1.147:7617,245.0.2.240:7617 2d17h

映射关系:

EndpointPredixy Pod节点状态
245.0.1.147:7617redis-2305e285-predixy-1qfusion2active
245.0.2.240:7617redis-2305e285-predixy-0qfusion3active

三、流量负载均衡机制

3.1 CNI 确认

kubectl get pods -n kube-system|grepcilium-agent

结果:

cilium-7hjkj 1/1 Running 0 9d cilium-fk6px 1/1 Running 0 9d cilium-gsn82 1/1 Running 1 (5d ago) 9d cilium-mgjrg 1/1 Running 0 9d
kubectl get pods -n kube-system|grepkube-proxy

结果: (无输出)集群中无 kube-proxy

3.2 Cilium kube-proxy 替代模式

kubectl get cm -n kube-system cilium-config -ojsonpath='{.data.kube-proxy-replacement}'

结果:

strict # Cilium 完全替代 kube-proxy

3.3 Cilium BPF LB 配置

kubectl get cm -n kube-system cilium-config -ojsonpath='{.data.bpf-lb-sock}'

结果:

false # 使用标准 eBPF LB (非 socket level)

3.4 Cilium Service 负载均衡详情

kubectlexec-n kube-system cilium-7hjkj -- ciliumservicelist|grep-A5"246.99.91.187"

结果:

ID Frontend Service Type Backend 134 246.99.91.187:6379 ClusterIP 1 => 245.0.2.240:7617 (active) 2 => 245.0.1.147:7617 (active)

3.5 BPF Maps

kubectlexec-n kube-system cilium-7hjkj -- bpftool map list|grep-E"cilium.*lb"

结果:

929: lru_hash name cilium_lb4_reve flags 0x0 930: hash name cilium_lb4_serv flags 0x1 # Service 映射表 931: hash name cilium_lb4_back flags 0x1 # Backend 映射表 932: hash name cilium_lb4_reve flags 0x1 941: hash name cilium_lb_affin flags 0x1 # 会话亲和 942: lru_hash name cilium_lb4_affi flags 0x0 943: lpm_trie name cilium_lb4_sour flags 0x1

3.6 流量策略配置

kubectl get svc -n qfusion-admin redis-2305e2850 -o yaml|grep-E"sessionAffinity|internalTrafficPolicy"

结果:

internalTrafficPolicy: Cluster # 集群内流量可路由到所有节点 sessionAffinity: None # 无会话亲和

3.7 负载均衡总结

配置项说明
实现方式Cilium eBPF内核态直接转发,性能高于 iptables/ipvs
负载均衡算法Random (随机)Cilium 默认,非轮询
Session AffinityNone请求随机分发到两个 Pod
Backend 状态2 个 active双活同时处理流量

四、Predixy 后端 Redis 连接配置

4.1 Predixy ConfigMap

kubectl get configmap redis-2305e285-predixy-conf -n qfusion-admin -o yaml

cluster.conf 配置:

ClusterServerPool { Password MasterReadPriority 60 # 主节点读优先级 StaticSlaveReadPriority 50 # 静态从节点读优先级 DynamicSlaveReadPriority 50 # 动态从节点读优先级 RefreshInterval 1 # 配置刷新间隔(秒) ServerTimeout 1 # 服务器超时(秒) ServerFailureLimit 10 # 故障阈值 ServerRetryTimeout 1 # 重试超时(秒) KeepAlive 120 # 连接保活(秒) Servers { + redis-2305e285.qfusion-admin:6379 } }

读写策略:

  • 写操作: 发往 Master
  • 读操作: 优先 Master (60),其次 Slave (50)

4.2 后端 Redis Server Pods 分布

kubectl get pods -n qfusion-admin -l redis.resource.type=server -o wide|grepredis-2305e285

结果:

NAME READY STATUS RESTARTS AGE IP NODE drc-redis-2305e285-0-0 3/3 Running 0 2d17h 245.0.1.48 qfusion2 drc-redis-2305e285-0-1 3/3 Running 0 2d17h 245.0.3.84 qfusion4 drc-redis-2305e285-1-0 3/3 Running 0 2d17h 245.0.0.107 qfusion1 drc-redis-2305e285-1-1 3/3 Running 0 2d17h 245.0.2.168 qfusion3 drc-redis-2305e285-2-0 3/3 Running 0 2d17h 245.0.2.214 qfusion3 drc-redis-2305e285-2-1 3/3 Running 0 2d17h 245.0.3.200 qfusion4

4.3 Redis 主从角色分布

kubectl get QfrCluster redis-2305e285 -n qfusion-admin -ojsonpath='{.metadata.annotations}'

结果:

drc-redis-2305e285-0-0/info.role: slave drc-redis-2305e285-0-1/info.role: master drc-redis-2305e285-1-0/info.role: slave drc-redis-2305e285-1-1/info.role: master drc-redis-2305e285-2-0/info.role: slave drc-redis-2305e285-2-1/info.role: master

架构: 3 分片,每分片 1主1从

分片主节点 (Master)从节点 (Slave)主节点位置从节点位置
shard-0drc-redis-2305e285-0-1drc-redis-2305e285-0-0qfusion4qfusion2
shard-1drc-redis-2305e285-1-1drc-redis-2305e285-1-0qfusion3qfusion1
shard-2drc-redis-2305e285-2-1drc-redis-2305e285-2-0qfusion4qfusion3

4.4 Redis Service Endpoints

kubectl get endpoints redis-2305e285 -n qfusion-admin

结果:

NAME ENDPOINTS AGE redis-2305e285 245.0.0.107:6379,245.0.1.48:6379,245.0.2.168:6379 + 15 more...

五、高可用机制

5.1 Predixy 健康检查

kubectl get pod redis-2305e285-predixy-0 -n qfusion-admin -ojsonpath='{.spec.containers[0].livenessProbe}'

结果:

{"exec":{"command":["sh","-c","redis-cli -h $(hostname) -p 7617 ping"]},"failureThreshold":3,"initialDelaySeconds":30,"periodSeconds":10,"successThreshold":1,"timeoutSeconds":5}
kubectl get pod redis-2305e285-predixy-0 -n qfusion-admin -ojsonpath='{.spec.containers[0].readinessProbe}'

结果:

{"exec":{"command":["sh","-c","redis-cli -h $(hostname) -p 7617 ping"]},"failureThreshold":5,"initialDelaySeconds":30,"periodSeconds":15,"successThreshold":1,"timeoutSeconds":5}

健康检查策略:

探针类型检测命令失败阈值周期超时触发动作
Livenessredis-cli ping3 次10s5s重启 Pod
Readinessredis-cli ping5 次15s5s剔除流量

5.2 Cilium 服务发现与故障转移

Cilium 通过以下机制实现高可用:

  1. eBPF Map 实时更新: 当 Pod 状态变化时,Cilium 自动更新 BPF maps
  2. Backend 健康监控: Cilium 监控 Backend 状态,自动剔除不健康的后端
  3. 无状态转发: 内核态直接转发,无需中间代理

5.3 节点级容错

组件Pod-0 位置Pod-1 位置节点级容错
Predixyqfusion3qfusion2是 (不同节点)

容错能力: 任一节点故障,另一个节点的 Predixy 仍可处理全部流量


六、架构图

Client | v redis-2305e2850 Service (ClusterIP: 246.99.91.187:6379) | +------------+------------+ | | v v +---------------+ +---------------+ | Predixy Pod-0 | | Predixy Pod-1 | | 245.0.2.240 | | 245.0.1.147 | | qfusion3 | | qfusion2 | +---------------+ +---------------+ | | +------------+------------+ | v redis-2305e285.qfusion-admin:6379 | +------------+------------+------------+ | | | | v v v v +--------+ +--------+ +--------+ +--------+ |Shard-0 | |Shard-1 | |Shard-2 | | | |M: qf4 | |M: qf3 | |M: qf4 | | | |S: qf2 | |S: qf1 | |S: qf3 | | | +--------+ +--------+ +--------+ +--------+

七、验证命令汇总

# 切换集群exportKUBECONFIG=/bpx/.145-admin.conf# 1. 查看 Podskubectl get pods -n qfusion-admin|grepredis-2305e285 kubectl get pods -n qfusion-admin -l redis.resource.type=predixy -o wide# 2. 查看 Services 和 Endpointskubectl get svc -n qfusion-admin|grepredis-2305e285 kubectl get endpoints redis-2305e2850 -n qfusion-admin# 3. 查看 StatefulSetkubectl get statefulset redis-2305e285-predixy -n qfusion-admin# 4. 查看 Predixy 配置kubectl get configmap redis-2305e285-predixy-conf -n qfusion-admin -o yaml# 5. 查看 Cilium 配置kubectl get cm -n kube-system cilium-config -o yaml|grep-E"kube-proxy-replacement|bpf-lb"# 6. 查看 Cilium Service 负载均衡kubectlexec-n kube-system<cilium-pod>-- ciliumservicelist|grepredis-2305e285# 7. 查看 Redis 主从角色kubectl get QfrCluster redis-2305e285 -n qfusion-admin -ojsonpath='{.metadata.annotations}'

八、业务流量测试验证

8.1 测试环境

使用 Predixy Pod 内置的 redis-cli 进行测试:

# 测试入口redis-2305e2850.qfusion-admin:6379# 认证密码x.x.x

8.2 测试1: 基本连通性测试

kubectlexec-n qfusion-admin redis-2305e285-predixy-0 --\redis-cli -h redis-2305e2850.qfusion-admin -p6379-a x.x.xping

结果:PONG

8.3 测试2: 基本读写操作

# 写操作kubectlexec-n qfusion-admin redis-2305e285-predixy-0 --\redis-cli -h redis-2305e2850.qfusion-admin -p6379-a x.x.x\SET test:benchmark:001"hello-from-predixy"# 读操作kubectlexec-n qfusion-admin redis-2305e285-predixy-0 --\redis-cli -h redis-2305e2850.qfusion-admin -p6379-a x.x.x\GET test:benchmark:001

结果:

SET: OK GET: hello-from-predixy

8.4 测试3: 负载均衡验证

3.1 并发负载测试 (200 操作)
kubectlexec-n qfusion-admin redis-2305e285-predixy-0 --sh-c' for i in $(seq 1 100); do redis-cli -h redis-2305e2850.qfusion-admin -p 6379 -a x.x.x SET test:load:$i "value-$i" > /dev/null 2>&1 redis-cli -h redis-2305e2850.qfusion-admin -p 6379 -a x.x.x GET test:load:$i > /dev/null 2>&1 done '

结果: 200 操作全部成功 ✓

3.2 双源并发测试 (1000 请求)
# 从 predixy-0 发起 500 次请求kubectlexec-n qfusion-admin redis-2305e285-predixy-0 --sh-c' for i in $(seq 1 500); do redis-cli -h redis-2305e2850 -p 6379 -a x.x.x PING > /dev/null 2>&1 done'&# 从 predixy-1 发起 500 次请求kubectlexec-n qfusion-admin redis-2305e285-predixy-1 --sh-c' for i in $(seq 1 500); do redis-cli -h redis-2305e2850 -p 6379 -a x.x.x PING > /dev/null 2>&1 done'&

结果: 1000 请求全部完成 ✓

3.3 连通性验证测试 (100 次 PING)
foriin$(seq1100);dokubectlexec-n qfusion-admin redis-2305e285-predixy-0 --\redis-cli -h redis-2305e2850 -p6379-a x.x.x PING2>/dev/nulldone

结果:

指标结果
成功100
失败0
成功率100%

8.5 测试4: 双活实例独立响应验证

# 直接访问 Predixy-0kubectlexec-n qfusion-admin redis-2305e285-predixy-0 --\redis-cli -h245.0.2.240 -p7617ping# 直接访问 Predixy-1kubectlexec-n qfusion-admin redis-2305e285-predixy-1 --\redis-cli -h245.0.1.147 -p7617ping

结果: 两个实例均返回PONG

8.6 测试5: 复杂数据类型操作

# MSET/MGET 批量操作kubectlexec-n qfusion-admin redis-2305e285-predixy-0 --\redis-cli -h redis-2305e2850 -p6379-a x.x.x\MSET test:user:1001"Alice"test:user:1002"Bob"test:user:1003"Charlie"# 读取验证kubectlexec-n qfusion-admin redis-2305e285-predixy-0 --\redis-cli -h redis-2305e2850 -p6379-a x.x.x\MGET test:user:1001 test:user:1002 test:user:1003

结果:Alice,Bob,Charlie

# 列表操作 LPUSH/LRANGEkubectlexec-n qfusion-admin redis-2305e285-predixy-0 --\redis-cli -h redis-2305e2850 -p6379-a x.x.x\LPUSH test:queue:tasks"task3""task2""task1"kubectlexec-n qfusion-admin redis-2305e285-predixy-0 --\redis-cli -h redis-2305e2850 -p6379-a x.x.x\LRANGE test:queue:tasks0-1

结果:task1,task2,task3

8.7 测试6: 后端 Redis 复制状态验证

kubectlexec-n qfusion-admin drc-redis-2305e285-0-1 -c redis --\redis-cli -p6379-a x.x.x INFO replication

结果:

# Replication role:master connected_slaves:1 slave0:ip=245.0.1.48,port=6379,state=online,offset=335685,lag=0 master_failover_state:no-failover master_replid:38577acaafc0f390567d4813bf58500ff291255d master_repl_offset:335685 repl_backlog_active:1

8.8 测试结果汇总

测试项操作数成功失败成功率
基本连通性110100%
基本读写220100%
并发负载2002000100%
双源并发100010000100%
连通性验证1001000100%
双活实例220100%
复杂数据类型440100%
总计130913090100%

8.9 业务测试结论

  1. 双活验证通过: 两个 Predixy 实例均可独立响应请求
  2. 负载均衡正常: Cilium eBPF 正确分发流量到两个 Backend
  3. 读写功能正常: SET/GET/MSET/MGET/LPUSH 等操作全部成功
  4. 高可用有效: 后端 Redis 主从复制状态正常 (master + 1 slave online)
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2025/12/28 18:37:51

YOLO模型镜像提供Jupyter Notebook示例,GPU交互式开发

YOLO模型镜像提供Jupyter Notebook示例&#xff0c;GPU交互式开发 在智能安防摄像头实时识别行人、工业质检设备自动发现产品缺陷的今天&#xff0c;一个共同的技术底座正在悄然支撑这些应用&#xff1a;YOLO模型 容器化环境 交互式开发平台。这不仅是算法的进步&#xff0c;…

作者头像 李华
网站建设 2026/1/2 16:55:23

YOLO检测精度再提升!YOLOv10带来哪些革新与算力挑战?

YOLO检测精度再提升&#xff01;YOLOv10带来哪些革新与算力挑战&#xff1f; 在智能制造工厂的质检流水线上&#xff0c;每分钟有上千个零件高速通过视觉检测工位。传统目标检测模型虽然能识别缺陷&#xff0c;但偶尔出现的“卡顿”却让剔除机制失灵——原因往往藏在那几毫秒波…

作者头像 李华
网站建设 2026/1/15 21:40:28

Java JRE的没落

在Java 9版本之后&#xff0c;Oracle 改变了 Java 的发行方式&#xff0c;移除了JRE&#xff08;Java Runtime Environment&#xff09;的独立发布。因此&#xff0c;Java 9&#xff08;以及之后的版本&#xff09;也没有单独的 JRE 了。而OpenJDK一般一、JDK和JRE对比JDK&…

作者头像 李华
网站建设 2026/1/17 12:43:15

YOLOv8-Scale-YOLOv8多尺度训练策略解析

YOLOv8-Scale&#xff1a;多尺度训练如何重塑目标检测的泛化能力 在工业质检线上&#xff0c;一台摄像头正高速扫描流过的电路板。有的缺陷藏在密密麻麻的焊点之间&#xff0c;仅占几个像素&#xff1b;而另一些大尺寸元件则横跨画面三分之一。如果模型只在固定分辨率下训练过&…

作者头像 李华
网站建设 2025/12/28 18:25:33

YOLO目标检测API支持结果水印嵌入,保护知识产权

YOLO目标检测API支持结果水印嵌入&#xff0c;保护知识产权 在AI视觉能力被广泛封装为服务的今天&#xff0c;一个看似不起眼却日益严峻的问题浮出水面&#xff1a;你如何证明这份由AI生成的检测报告&#xff0c;确实来自你的系统&#xff1f; 设想这样一个场景——某企业购买了…

作者头像 李华
网站建设 2026/1/19 3:42:13

Flink ML MinMaxScaler 把特征缩放到统一区间 [min, max]

1. MinMaxScaler 做什么&#xff1f; 对每个特征维度 (x) 做缩放&#xff1a; [x′x−xminxmax−xmin⋅(max−min)min][ x \frac{x - x_{min}}{x_{max} - x_{min}} \cdot (max - min) min ][x′xmax​−xmin​x−xmin​​⋅(max−min)min] 其中 (xmin,xmax)(x_{min}, x_{max}…

作者头像 李华