林菲菲-知识库
将内网服务映射到公网域名-教程
林菲菲-待办事项
工作日志
服务器
内网服务器规范
内网服务器
基础设施搭建
虚拟机模版-初始化脚本
Chatwoot v4.6.0 部署文档
1Panel
一键部署脚本
Gitea部署
更新日志 2025-11-18
内网服务器 172.16.72.252
测试用例
外网服务器 202.79.167.21/25/31
多Agents
多Agent
外网服务器 202.79.167.19/22/23
迁移至PVE服务器的K8s
迁移202.61.130.102服务器至202.79.167.25
刷单台子
需求迭代1
VIP等级功能 - 修改文件清单(最终版)
文件迁移脚本
Lazadanet应用K8s架构
天天vip新客户
工作日志
外网服务器 202.61.130.102/130/233
wifi
矿池Bugs
Kt-后台系统
工单记录
Kt001 -内网配置
KT-后台业务流程
Kt前台业务流程
KT基建
kon_tian 数据库设计文档
现有资源整理
一、KT立项会议-议题
OpenRouter 联调结果与限制说明(2025-11-11)
Mrdoc的重要目录
mind-map脑图
一键部署指南
部署指南
多 AI Agent 协作终端(KeaTerm)
vvvv
本文档使用 MrDoc 发布
-
+
首页
Lazadanet应用K8s架构
# K8s集群与业务部署完整分析报告 --- ## 第一部分:K8s集群基础设施 ### 一、集群基本信息 | 项目 | 值 | | ---------- | ------------------- | | K8s版本 | v1.28.15 | | 容器运行时 | containerd://1.7.28 | | 操作系统 | Ubuntu 24.04.3 LTS | | 内核版本 | 6.8.0-88-generic | | CNI网络 | Flannel | | 集群年龄 | ~2天15小时 | ### 二、节点状态 (全部Ready) | 节点 | 角色 | IP | 所在PVE | | ---------------- | ------------- | ------------ | ------- | | k8s-master-node1 | control-plane | 10.25.72.101 | PVE1 | | k8s-master-node2 | control-plane | 10.26.72.101 | PVE2 | | k8s-master-node3 | control-plane | 10.27.72.101 | PVE3 | | k8s-worker-node1 | worker | 10.25.72.111 | PVE1 | | k8s-worker-node2 | worker | 10.25.72.112 | PVE1 | | k8s-worker-node3 | worker | 10.26.72.111 | PVE2 | | k8s-worker-node4 | worker | 10.26.72.112 | PVE2 | | k8s-worker-node5 | worker | 10.27.72.111 | PVE3 | | k8s-worker-node6 | worker | 10.27.72.112 | PVE3 | ### 三、已安装组件 | 组件 | Namespace | Pod数量 | 用途 | | ------------- | --------------- | ------- | ------------------- | | CoreDNS | kube-system | 3 | DNS服务 | | Flannel | kube-flannel | 9 | 网络CNI | | MetalLB | metallb-system | 10 | 负载均衡器 | | Ingress-NGINX | ingress-nginx | 9 | 入口控制器 (双实例) | | Longhorn | longhorn-system | 30+ | 分布式存储 | | Cert-Manager | cert-manager | 5 | 证书管理 | | Velero | velero | 2 | 备份恢复 | ### 四、网络配置 #### MetalLB IP池 | 池名称 | IP范围 | 用途 | | ------------- | ----------------- | -------- | | internal-pool | 10.25.72.200-220 | 内网服务 | | public-pool | 172.93.107.95-110 | 公网服务 | #### Ingress控制器 | 控制器 | External-IP | 副本数 | | ---------------------- | ------------- | ------ | | ingress-nginx-internal | 10.25.72.200 | 3 | | ingress-nginx-public | 172.93.107.95 | 6 | ### 五、存储配置 | StorageClass | Provisioner | 默认 | 功能 | | --------------- | ------------------ | ---- | -------- | | longhorn | driver.longhorn.io | ✅ | 生产环境 | | longhorn-dev | driver.longhorn.io | - | 开发环境 | | longhorn-static | driver.longhorn.io | - | 静态卷 | | longhorn-test | driver.longhorn.io | - | 测试环境 | ### 六、集群架构拓扑图 ``` ┌─────────────────────────────────────────┐ │ WireGuard 组网 │ └─────────────────────────────────────────┘ │ ┌─────────────────┬───────────────┼───────────────┬─────────────────┐ │ │ │ │ │ ┌────▼────┐ ┌─────▼────┐ ┌─────▼────┐ ┌─────▼────┐ ┌──────▼─────┐ │ PVE0 │ │ PVE1 │ │ PVE2 │ │ PVE3 │ │ PVE4 │ │ 8600G │ │ 7700 │ │ 7700 │ │ 7700 │ │ 边缘 │ │ 12C/124G│ │ 16C/124G │ │ 16C/124G │ │ 16C/124G │ │ │ └────┬────┘ └────┬─────┘ └────┬─────┘ └────┬─────┘ └────────────┘ │ │ │ │ ┌────▼────┐ ┌────▼─────┐ ┌────▼─────┐ ┌────▼─────┐ │ MinIO │ │ Master-1 │ │ Master-2 │ │ Master-3 │ ← 3 Master HA └─────────┘ │ Worker-1 │ │ Worker-3 │ │ Worker-5 │ │ Worker-2 │ │ Worker-4 │ │ Worker-6 │ ← 6 Worker └──────────┘ └──────────┘ └──────────┘ ``` ### 七、资源统计 | 类别 | 数量 | | ---------- | ---------- | | PVE物理机 | 5台 | | K8s Master | 3节点 (HA) | | K8s Worker | 6节点 | | 运行中Pods | 101个 | | Namespaces | 7个 | | 集群总内存 | ~234GB | | 集群总CPU | ~50核 | ### 八、集群健康状态 - ✅ 所有9个节点状态: Ready - ✅ 所有101个Pods状态: Running - ✅ 3个Master节点etcd: 正常 - ✅ 存储Longhorn: 已就绪 - ✅ 网络Flannel: 正常 - ⚠️ Metrics-Server: 未安装 --- ## 第二部分:Lazadanet 业务应用部署 ### 一、系统架构概览 ``` ┌─────────────────────────────────────────────┐ │ Ingress (nginx-public) │ │ TLS: Let's Encrypt (cert-manager) │ └─────────────────┬───────────────────────────┘ │ ┌────────────────────────────────────┼────────────────────────────────────┐ │ │ │ ▼ ▼ ▼ ┌───────────────┐ ┌───────────────┐ ┌───────────────┐ │www.lazadanet.me│ │platform/agent │ │api/task/res │ │ (前端静态) │ │ (管理后台) │ │ (API接口) │ └───────┬───────┘ └───────┬───────┘ └───────┬───────┘ │ │ │ └────────────────────────────────────┼────────────────────────────────────┘ ▼ ┌──────────────────────────────┐ │ lazadanet-app Pod │ │ ┌────────┐ ┌──────────┐ │ │ │ Nginx │───▶│ PHP-FPM │ │ │ │ :80 │ │ :9000 │ │ │ └────────┘ └────┬─────┘ │ │ │ │ │ │ ▼ ▼ │ │ /var/www (PVC 15Gi) │ └──────────────────────────────┘ │ ┌───────────────────────┼───────────────────────┐ ▼ ▼ ▼ ┌────────────┐ ┌────────────┐ ┌────────────┐ │ MySQL │ │ Redis │ │ PostgreSQL │ │ Cluster │ │ Sentinel │ │ (未使用) │ │ (3节点+3R) │ │ (2节点) │ │ (3节点) │ └────────────┘ └────────────┘ └────────────┘ ``` ### 二、K8s部署资源 #### 2.1 命名空间 - `lazadanet` - 应用部署 - `databases` - 数据库服务 #### 2.2 应用组件 | 组件 | 类型 | 镜像 | 副本 | 状态 | | --------------- | ---------- | ---------------------------------------------------- | ---- | ------- | | lazadanet-app | Deployment | harbor.ktnet.cc/base/php-lazadanet:v1 + nginx:alpine | 1 | Running | #### 2.3 资源使用 | 资源 | 当前值 | | --------- | ---------------- | | CPU | 108m (毫核) | | Memory | 188Mi | | 存储(PVC) | 15Gi (已用12.8G) | ### 三、域名和路由配置 #### 3.1 域名列表 | 域名 | 用途 | 后端路径 | | ----------------------- | ---------- | --------------------- | | www.lazadanet.me | 前端官网 | /var/www/frontend | | platform.lazadanet.me | 平台管理后台 | /var/www/index/public | | agent.lazadanet.me | 代理管理后台 | /var/www/index/public | | api.lazadanet.me | API接口 | /var/www/index/public | | task.lazadanet.me | 任务系统 | /var/www/index/public | | res.lazadanet.me | 资源服务 | /var/www/index/public | #### 3.2 Ingress配置 - TLS: Let's Encrypt (通过cert-manager自动管理) - 代理body大小: 100m - SSL强制跳转: 开启 ### 四、技术栈 #### 4.1 后端 - 框架: ThinkPHP (PHP框架) - PHP版本: 7.4-fpm-alpine - 特殊扩展: shop.so (自定义加密扩展) - Web服务器: Nginx Alpine #### 4.2 前端 - 类型: 静态SPA应用 - 框架: uni-app (基于Vue) - 存储占用: 5.3M #### 4.3 数据库 **MySQL InnoDB Cluster (databases命名空间)** ``` ├── mysql-0, mysql-1, mysql-2 (3个数据节点) ├── mysql-router x3 (路由代理) └── 存储: 3 x 50Gi PVC ``` **Redis Sentinel (databases命名空间)** ``` ├── redis-node-0, redis-node-1 └── 存储: 2 x 8Gi PVC ``` #### 4.4 连接信息 | 服务 | 地址 | 端口 | 数据库名 | | ----- | --------------------------------- | ---- | ----------- | | MySQL | mysql.databases.svc.cluster.local | 3306 | lazadanetdb | | Redis | redis.databases.svc.cluster.local | 6379 | - | ### 五、数据库表结构 #### 5.1 核心业务表 (共24张表) | 表名 | 用途 | | ------------------- | --------------- | | sq_member | 会员/用户表 | | sq_agent | 代理商表 | | sq_platform | 平台配置 | | sq_task_order | 任务订单 | | sq_task_plan | 任务计划 | | sq_product | 商品/产品 | | sq_wallet | 钱包账户 | | sq_recharge | 充值记录 | | sq_withdraw | 提现记录 | | sq_finance | 财务流水 | | sq_bounty | 佣金记录 | | sq_loan | 贷款记录 | | sq_config | 系统配置 | | sq_domain | 域名配置 | | sq_article | 文章内容 | | sq_notice | 通知公告 | | sq_alarm | 告警信息 | | sq_role | 角色权限 | | sq_rule | 权限规则 | | sq_login_log | 登录日志 | | sq_record | 操作记录 | | sq_telegram_bot | Telegram机器人 | | sq_telegram_message | Telegram消息 | | sq_train_plan | 培训计划 | #### 5.2 关键字段说明 **会员表 (sq_member):** - 支持3级分销 (parent_1, parent_2, parent_3) - 双钱包体系 (balance余额, block_balance锁定金额) - 支持USDT提现 (TRC20 + ERC20) - VIP会员体系 **任务订单表 (sq_task_order):** - 4种订单类型 (普通单、派单、预约派单、打针订单) - 3级佣金分成 (bounty_parent_1/2/3) ### 六、应用模块结构 ``` /var/www/index/app/ ├── agent/ # 代理商模块 ├── apiv1/ # API接口 v1 ├── common/ # 公共模块 ├── index/ # 首页/前台 ├── platform/ # 平台管理 └── task/ # 任务系统 ``` ### 七、存储架构 | 类型 | 名称 | 容量 | StorageClass | 用途 | | --------- | -------------------- | ---- | ------------ | ---------------- | | PVC | lazadanet-storage | 15Gi | longhorn | 应用代码和上传文件 | | EmptyDir | extensions | - | - | PHP扩展临时目录 | | EmptyDir | php-conf | - | - | PHP配置临时目录 | | ConfigMap | lazadanet-nginx-conf | - | - | Nginx配置 | | ConfigMap | php-fpm-conf | - | - | PHP-FPM配置 | | Secret | lazadanet-env | - | - | 数据库连接等敏感信息 | | Secret | lazadanet-tls | - | - | TLS证书 | ### 八、高可用设计 | 组件 | 副本数 | 高可用方案 | | ------------- | ------ | --------------------------- | | lazadanet-app | 1 | 单副本 (建议扩展) | | MySQL | 3+3 | InnoDB Cluster + Router | | Redis | 2 | Sentinel 哨兵模式 | | PostgreSQL | 3 | 主从复制 (未被lazadanet使用) | --- ## 第三部分:详细架构图 ### 一、物理架构 - PVE与VM分布 ``` ┌─────────────────────────────────────────────────────────────────────────────────────────────────────┐ │ 物理服务器分布 │ ├─────────────────────────────────┬─────────────────────────────┬─────────────────────────────────────┤ │ PVE1 (美国) │ PVE2 (美国) │ PVE3 (美国) │ │ 185.150.190.216 │ 104.194.9.56 │ 199.127.62.90 │ │ 网段: 10.25.72.0/21 │ 网段: 10.26.72.0/21 │ 网段: 10.27.72.0/21 │ ├─────────────────────────────────┼─────────────────────────────┼─────────────────────────────────────┤ │ ┌─────────────────────────┐ │ ┌─────────────────────────┐ │ ┌─────────────────────────┐ │ │ │ k8s-master-node1 │ │ │ k8s-master-node2 │ │ │ k8s-master-node3 │ │ │ │ 10.25.72.101 │ │ │ 10.26.72.101 │ │ │ 10.27.72.101 │ │ │ │ [control-plane] │ │ │ [control-plane] │ │ │ [control-plane] │ │ │ └─────────────────────────┘ │ └─────────────────────────┘ │ └─────────────────────────┘ │ │ ┌─────────────────────────┐ │ ┌─────────────────────────┐ │ ┌─────────────────────────┐ │ │ │ k8s-worker-node1 │ │ │ k8s-worker-node3 │ │ │ k8s-worker-node5 │ │ │ │ 10.25.72.111 │ │ │ 10.26.72.111 │ │ │ 10.27.72.111 │ │ │ │ ● lazadanet-app │ │ │ ● mysql-1 │ │ │ ● postgresql-1 │ │ │ │ ● postgresql-3 │ │ │ ● postgresql-2 │ │ │ │ │ │ └─────────────────────────┘ │ └─────────────────────────┘ │ └─────────────────────────┘ │ │ ┌─────────────────────────┐ │ ┌─────────────────────────┐ │ ┌─────────────────────────┐ │ │ │ k8s-worker-node2 │ │ │ k8s-worker-node4 │ │ │ k8s-worker-node6 │ │ │ │ 10.25.72.112 │ │ │ 10.26.72.112 │ │ │ 10.27.72.112 │ │ │ │ ● mysql-0 │ │ │ ● redis-node-1 (Slave) │ │ │ ● mysql-2 │ │ │ │ ● mysql-router │ │ │ ● mysql-router │ │ │ ● mysql-router │ │ │ │ │ │ │ │ │ │ ● redis-node-0 (Master) │ │ │ └─────────────────────────┘ │ └─────────────────────────┘ │ └─────────────────────────┘ │ └─────────────────────────────────┴─────────────────────────────┴─────────────────────────────────────┘ ``` ### 二、MySQL InnoDB Cluster 架构(多主模式) ``` ┌──────────────────────────────────────────┐ │ MySQL InnoDB Cluster │ │ (Group Replication - 多主模式) │ │ 所有节点都可读写,自动同步 │ └──────────────────────────────────────────┘ │ ┌────────────────────────────┼────────────────────────────┐ │ │ │ ▼ ▼ ▼ ┌────────────────────────────┐ ┌────────────────────────────┐ ┌────────────────────────────┐ │ mysql-0 │ │ mysql-1 │ │ mysql-2 │ │ ┌──────────────────────┐ │ │ ┌──────────────────────┐ │ │ ┌──────────────────────┐ │ │ │ PRIMARY/ │ │ │ │ PRIMARY/ │ │ │ │ PRIMARY/ │ │ │ │ SECONDARY │ │ │ │ SECONDARY │ │ │ │ SECONDARY │ │ │ │ (可读写) │ │ │ │ (可读写) │ │ │ │ (可读写) │ │ │ └──────────────────────┘ │ │ └──────────────────────┘ │ │ └──────────────────────┘ │ │ IP: 10.244.2.13 │ │ IP: 10.244.7.18 │ │ IP: 10.244.6.10 │ │ Node: k8s-worker-node2 │ │ Node: k8s-worker-node3 │ │ Node: k8s-worker-node6 │ │ PVE: PVE1 (10.25.72.112) │ │ PVE: PVE2 (10.26.72.111) │ │ PVE: PVE3 (10.27.72.112) │ │ Storage: 50Gi Longhorn │ │ Storage: 50Gi Longhorn │ │ Storage: 50Gi Longhorn │ └────────────────────────────┘ └────────────────────────────┘ └────────────────────────────┘ │ │ │ └────────────────────────────┼────────────────────────────┘ │ ▼ ┌──────────────────────────────────────────┐ │ MySQL Router (3副本) │ │ 负载均衡 + 自动故障转移 │ └──────────────────────────────────────────┘ │ ┌───────────────────────────────────┼───────────────────────────────────┐ │ │ │ ▼ ▼ ▼ ┌──────────────────────────┐ ┌──────────────────────────┐ ┌──────────────────────────┐ │ mysql-router │ │ mysql-router │ │ mysql-router │ │ (k8s-worker-node2) │ │ (k8s-worker-node4) │ │ (k8s-worker-node6) │ │ PVE1 │ │ PVE2 │ │ PVE3 │ └──────────────────────────┘ └──────────────────────────┘ └──────────────────────────┘ │ │ │ └───────────────────────────────────┼───────────────────────────────────┘ │ ▼ ┌──────────────────────────────────────────┐ │ Service: mysql.databases.svc:3306 │ │ (ClusterIP: 10.108.165.208) │ │ │ │ 端口说明: │ │ - 3306: MySQL协议 │ │ - 6446: R/W端口 (读写分离) │ │ - 6447: RO端口 (只读) │ └──────────────────────────────────────────┘ ``` **MySQL InnoDB Cluster 读写模式:** | 特性 | 说明 | | ---------- | ---------------------------------------------- | | 模式 | Multi-Primary (多主模式) | | 读写能力 | 所有3个节点都可以接受读写请求 | | 同步协议 | Group Replication 协议自动同步数据 | | 故障处理 | 任意节点故障,其他节点自动接管,无需手动切换 | | 路由能力 | MySQL Router 自动检测存活节点并路由请求 | | 数据一致性 | 强一致性 (基于Paxos协议的组复制) | | 故障恢复 | 自动 (需要多数节点存活,即至少2个) | ### 三、Redis Sentinel 架构(主从+哨兵模式) ``` ┌──────────────────────────────────────────┐ │ Redis Sentinel 架构 │ │ 1主1从 + Sentinel哨兵 │ └──────────────────────────────────────────┘ │ ┌────────────────────────────┴────────────────────────────┐ │ │ ▼ ▼ ┌────────────────────────────────────┐ ┌────────────────────────────────────┐ │ redis-node-0 │ │ redis-node-1 │ │ ┌──────────────────────────────┐ │ │ ┌──────────────────────────────┐ │ │ │ MASTER │ │ 同步 │ │ SLAVE │ │ │ │ (主节点-可读写) │ │ ────────▶ │ │ (从节点-只读) │ │ │ │ │ │ │ │ │ │ │ │ • 接受所有写操作 │ │ │ │ • 只接受读操作 │ │ │ │ • 异步复制到Slave │ │ │ │ • 从Master同步数据 │ │ │ └──────────────────────────────┘ │ │ └──────────────────────────────┘ │ │ ┌──────────────────────────────┐ │ │ ┌──────────────────────────────┐ │ │ │ SENTINEL │ │◀────────▶ │ │ SENTINEL │ │ │ │ (哨兵进程) │ │ 心跳检测 │ │ (哨兵进程) │ │ │ │ • 监控Master状态 │ │ │ │ • 参与故障转移投票 │ │ │ │ • 主节点故障时自动切换 │ │ │ │ • 可提升为Master │ │ │ └──────────────────────────────┘ │ │ └──────────────────────────────┘ │ │ │ │ │ │ Pod IP: 10.244.6.9 │ │ Pod IP: 10.244.8.10 │ │ Node: k8s-worker-node6 │ │ Node: k8s-worker-node4 │ │ PVE: PVE3 (10.27.72.112) │ │ PVE: PVE2 (10.26.72.112) │ │ Storage: 8Gi Longhorn │ │ Storage: 8Gi Longhorn │ │ 重启次数: 44次 ⚠️ │ │ 重启次数: 4次 │ └────────────────────────────────────┘ └────────────────────────────────────┘ │ │ └─────────────────────────┬───────────────────────────────┘ │ ▼ ┌──────────────────────────────────────────┐ │ Service: redis.databases.svc:6379 │ │ (ClusterIP: 10.106.13.94) │ │ │ │ 端口说明: │ │ - 6379: Redis数据端口 │ │ - 26379: Sentinel端口 │ └──────────────────────────────────────────┘ ``` **Redis 读写模式:** | 特性 | 说明 | | ------------ | ------------------------------------------ | | 模式 | Master-Slave + Sentinel (主从+哨兵) | | 写请求 | 只能发送到 Master (redis-node-0) | | 读请求 | 可以发送到 Master 或 Slave | | 数据同步 | 异步复制 (Master → Slave) | | 故障转移流程 | Sentinel检测 → 投票选举 → Slave提升为Master | ### 四、Lazadanet 应用数据流架构 ``` 用户访问 │ ▼ ┌──────────────────────────────────────────────────────────────────────────────────────────┐ │ Internet (公网) │ └──────────────────────────────────────────────────────────────────────────────────────────┘ │ ▼ ┌──────────────────────────────────────────────────────────────────────────────────────────┐ │ Ingress Controller (nginx-public) │ │ TLS终止 (Let's Encrypt证书) │ │ External IP: 172.93.107.95 │ ├──────────────────────────────────────────────────────────────────────────────────────────┤ │ www.lazadanet.me → 前端静态文件 │ │ platform.lazadanet.me → 平台管理后台 │ │ agent.lazadanet.me → 代理商后台 │ │ api.lazadanet.me → API接口 │ │ task.lazadanet.me → 任务系统 │ │ res.lazadanet.me → 资源服务 │ └──────────────────────────────────────────────────────────────────────────────────────────┘ │ ▼ ┌──────────────────────────────────────────────────────────────────────────────────────────┐ │ Service: lazadanet-app (ClusterIP) │ │ 10.97.55.40:80 │ └──────────────────────────────────────────────────────────────────────────────────────────┘ │ ▼ ┌──────────────────────────────────────────────────────────────────────────────────────────┐ │ lazadanet-app Pod │ │ Node: k8s-worker-node1 (PVE1) │ │ Pod IP: 10.244.1.92 │ │ ┌─────────────────────────────────────────────────────────────────────────────────────┐ │ │ │ │ │ │ │ ┌─────────────────────┐ ┌─────────────────────────────────────────────┐ │ │ │ │ │ Nginx │ │ PHP-FPM 7.4 │ │ │ │ │ │ (Container) │ │ (Container) │ │ │ │ │ │ │ :9000 │ │ │ │ │ │ │ • 静态文件服务 │ ──────▶ │ • ThinkPHP框架 │ │ │ │ │ │ • 反向代理PHP │ │ • shop.so 加密扩展 │ │ │ │ │ │ • 请求路由 │ │ • 业务逻辑处理 │ │ │ │ │ │ │ │ │ │ │ │ │ └──────────┬──────────┘ └──────────────────┬──────────────────────────┘ │ │ │ │ │ │ │ │ │ │ │ 共享存储卷 │ │ │ │ │ │ ┌─────────────────────────┐ │ │ │ │ │ └────▶│ /var/www (PVC 15Gi) │◀──────┘ │ │ │ │ │ Longhorn Storage │ │ │ │ │ │ │ │ │ │ │ │ /frontend (5.3M) │ ← 前端静态文件 │ │ │ │ │ /index (12.8G) │ ← 后端PHP代码+上传文件 │ │ │ │ └─────────────────────────┘ │ │ │ │ │ │ │ └─────────────────────────────────────────────────────────────────────────────────────┘ │ └──────────────────────────────────────────────────────────────────────────────────────────┘ │ │ │ 数据库连接 │ 缓存连接 ▼ ▼ ┌──────────────────────────────────────┐ ┌──────────────────────────────────────┐ │ MySQL InnoDB Cluster │ │ Redis Sentinel │ │ mysql.databases.svc:3306 │ │ redis.databases.svc:6379 │ │ │ │ │ │ 数据库: lazadanetdb │ │ 用途: │ │ 用途: │ │ • Session缓存 │ │ • 用户数据 │ │ • 数据缓存 │ │ • 订单数据 │ │ • 队列任务 │ │ • 财务数据 │ │ │ │ • 配置数据 │ │ │ └──────────────────────────────────────┘ └──────────────────────────────────────┘ ``` ### 五、跨PVE数据库分布总览 ``` ┌─────────────────────────────────────────────────────────────────────────────────────────────┐ │ 数据库跨PVE分布图 │ ├─────────────────────────────────┬─────────────────────────────┬─────────────────────────────┤ │ PVE1 │ PVE2 │ PVE3 │ │ 185.150.190.216 │ 104.194.9.56 │ 199.127.62.90 │ ├─────────────────────────────────┼─────────────────────────────┼─────────────────────────────┤ │ │ │ │ │ ┌───────────────────────────┐ │ ┌───────────────────────┐ │ ┌───────────────────────┐ │ │ │ MySQL (mysql-0) │ │ │ MySQL (mysql-1) │ │ │ MySQL (mysql-2) │ │ │ │ ✓ PRIMARY (可读写) │ │ │ ✓ PRIMARY (可读写) │ │ │ ✓ PRIMARY (可读写) │ │ │ │ k8s-worker-node2 │ │ │ k8s-worker-node3 │ │ │ k8s-worker-node6 │ │ │ │ 50Gi Longhorn │ │ │ 50Gi Longhorn │ │ │ 50Gi Longhorn │ │ │ └───────────────────────────┘ │ └───────────────────────┘ │ └───────────────────────┘ │ │ │ │ │ │ ┌───────────────────────────┐ │ ┌───────────────────────┐ │ ┌───────────────────────┐ │ │ │ MySQL Router │ │ │ MySQL Router │ │ │ MySQL Router │ │ │ │ k8s-worker-node2 │ │ │ k8s-worker-node4 │ │ │ k8s-worker-node6 │ │ │ └───────────────────────────┘ │ └───────────────────────┘ │ └───────────────────────┘ │ │ │ │ │ │ │ ┌───────────────────────┐ │ ┌───────────────────────┐ │ │ │ │ Redis (redis-node-1) │ │ │ Redis (redis-node-0) │ │ │ │ │ ✗ SLAVE (只读) │ │ │ ✓ MASTER (可读写) │ │ │ │ │ k8s-worker-node4 │ │ │ k8s-worker-node6 │ │ │ │ │ 8Gi Longhorn │ │ │ 8Gi Longhorn │ │ │ │ └───────────────────────┘ │ └───────────────────────┘ │ │ │ │ │ │ ┌───────────────────────────┐ │ ┌───────────────────────┐ │ ┌───────────────────────┐ │ │ │ PostgreSQL (postgresql-3) │ │ │ PostgreSQL │ │ │ PostgreSQL │ │ │ │ (未被Lazadanet使用) │ │ │ (postgresql-2) │ │ │ (postgresql-1) │ │ │ │ k8s-worker-node1 │ │ │ k8s-worker-node3 │ │ │ k8s-worker-node5 │ │ │ └───────────────────────────┘ │ └───────────────────────┘ │ └───────────────────────┘ │ │ │ │ │ │ ┌───────────────────────────┐ │ │ │ │ │ lazadanet-app │ │ │ │ │ │ k8s-worker-node1 │ │ │ │ │ │ 15Gi Longhorn │ │ │ │ │ └───────────────────────────┘ │ │ │ │ │ │ │ └─────────────────────────────────┴─────────────────────────────┴─────────────────────────────┘ 图例说明: ✓ PRIMARY = 主节点 (可读写) ✗ SLAVE = 从节点 (只读) ``` ### 六、数据库读写模式对比 | 特性 | MySQL InnoDB Cluster | Redis Sentinel | | ------------ | --------------------------- | ----------------------- | | 架构模式 | Multi-Primary (多主) | Master-Slave (主从) | | 节点数 | 3个数据节点 + 3个Router | 2个节点 (1主1从) | | 写操作 | 任意节点均可写 | 只能写Master | | 读操作 | 任意节点均可读 | 主从均可读 | | 数据同步 | 同步复制 (强一致性) | 异步复制 (最终一致性) | | 故障转移 | 自动 (Router感知) | 自动 (Sentinel选举) | | 最少存活节点 | 2个 (多数原则) | 1个 (主或新选主) | | 存储 | 3 × 50Gi | 2 × 8Gi | | 跨PVE分布 | PVE1 + PVE2 + PVE3 | PVE2 + PVE3 | ### 七、Lazadanet 连接数据库流程 ``` lazadanet-app (PHP应用) │ ┌─────────────────┴─────────────────┐ │ │ ▼ ▼ ┌─────────────────────────┐ ┌─────────────────────────┐ │ MySQL 连接 │ │ Redis 连接 │ │ ───────────── │ │ ───────────── │ │ │ │ │ │ Host: mysql.databases │ │ Host: redis.databases │ │ .svc.cluster │ │ .svc.cluster │ │ .local │ │ .local │ │ Port: 3306 │ │ Port: 6379 │ │ DB: lazadanetdb │ │ │ │ │ │ │ └───────────┬─────────────┘ └───────────┬─────────────┘ │ │ ▼ ▼ ┌─────────────────────────┐ ┌─────────────────────────┐ │ MySQL Router │ │ Redis Sentinel │ │ (负载均衡) │ │ (自动发现Master) │ │ │ │ │ │ 自动选择可用节点: │ │ 当前Master: │ │ • mysql-0 (PVE1) │ │ • redis-node-0 (PVE3) │ │ • mysql-1 (PVE2) │ │ │ │ • mysql-2 (PVE3) │ │ │ └─────────────────────────┘ └─────────────────────────┘ ``` **连接特点:** | 服务 | 连接方式 | | ----- | --------------------------------------------------- | | MySQL | 应用连接mysql.databases.svc:3306,Router自动分发请求 | | Redis | 应用连接redis.databases.svc:6379,Sentinel自动返回Master | --- ## 第四部分:风险评估与建议 ### 一、当前风险 | 风险项 | 描述 | 等级 | | ------------------ | ----------------------------------------- | ---- | | 单点风险 | lazadanet-app只有1个副本 | 高 | | 存储使用率高 | 15Gi PVC已使用12.8G (85%) | 中 | | Redis重启频繁 | redis-node-0有44次重启,需排查原因 | 高 | | Metrics-Server缺失 | 无法收集资源指标数据 | 低 | ### 二、优化建议 1. **应用高可用**: 将lazadanet-app副本数扩展到2-3个 2. **存储扩容**: 将lazadanet-storage PVC从15Gi扩展到30Gi 3. **Redis排查**: 检查redis-node-0频繁重启的原因 4. **监控完善**: 安装Metrics-Server以支持HPA和资源监控 --- *报告生成时间: 2025年* *本报告为只读分析,未对系统进行任何修改操作*
arise
2025年12月6日 00:43
转发文档
收藏文档
‹‹
‹
47
/ 47
›
››
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
PDF文档(打印)
分享
链接
类型
密码
更新密码