Appearance
标准版(并发 600+)
标准版集群部署方案,适用于多数私有化生产场景,并发能力 600+。本方案在微服务、缓存、数据库与中间件层面提供基础冗余与容错能力,并给出关键组件的高可用部署文档索引,便于按组件实施与验收。
部署前必读
请先下载部署规范文档并按要求执行。(文档由管理员在明道云中维护,部署前联系获取)
一、方案概览
优势
- 具备基本的高可用能力:节点冗余、自动容错,资源利用率相对均衡
- 可满足大多数业务场景,组件扩展路径清晰
- 存储与中间件具备集群化能力,降低单点风险
劣势
- 不同存储组件间存在资源竞争与干扰,需合理分配与管理资源
参考资料
二、服务器配置
推荐配置
| 用途 | 配置 | 操作系统 | 部署服务 | 数量 |
|---|---|---|---|---|
| 负载与转发 | 4C/8G/100G 系统盘/200G 数据盘 | Debian 12 | Nginx | 2 |
| 微服务应用 | 16C/64G/100G 系统盘/200G 数据盘 | Debian 12 | 微服务 | 3 |
| 缓存服务 | 4C/16G/100G 系统盘/200G 数据盘 | Debian 12 | Redis | 3 |
| 中间件 | 8C/32G/100G 系统盘/500G 数据盘 | Debian 12 | Kafka、Elasticsearch、MinIO、文件服务 | 4 |
| 数据库 | 8C/32G/100G 系统盘/300G 数据盘 | Debian 12 | MySQL、MongoDB | 3 |
| HDP(可选) | 8C/32G/100G 系统盘/200G 数据盘 | Debian 12 | 超级数据平台服务 | 2 |
磁盘与数据目录
如需将现有 /data 迁移到新数据盘,参考:数据盘挂载与 /data 数据迁移(安全版)
网络与 IP 分配
以下为示例拓扑,实际部署时请按环境规划 IP / VIP,并结合防火墙策略开放端口。
| 服务器角色 | 内网IP(示例) | 主要组件 | 主要端口 |
|---|---|---|---|
| 负载均衡01 | 192.168.0.10 | Nginx | 80, 443 |
| 负载均衡02 | 192.168.0.11 | Nginx | 80, 443 |
| 微服务01 | 192.168.0.20 | Kubernetes Master, Istio, HAP | 8880, 38880 |
| 微服务02 | 192.168.0.21 | Kubernetes Master/Worker, Istio, HAP | 8880, 38880 |
| 微服务03 | 192.168.0.22 | Kubernetes Master/Worker, Istio, HAP | 8880, 38880 |
| Redis01 | 192.168.0.30 | Redis | 6379 |
| Redis02 | 192.168.0.31 | Redis | 6379 |
| Redis03 | 192.168.0.32 | Redis | 6379 |
| 中间件01 | 192.168.0.40 | Kafka/ES/MinIO/文件服务(按角色拆分) | 9092, 9200, 9000 |
| 中间件02 | 192.168.0.41 | Kafka/ES/MinIO/文件服务(按角色拆分) | 9092, 9200, 9000 |
| 中间件03 | 192.168.0.42 | Kafka/ES/MinIO/文件服务(按角色拆分) | 9092, 9200, 9000 |
| 中间件04 | 192.168.0.43 | Kafka/ES/MinIO/文件服务(按角色拆分) | 9092, 9200, 9000 |
| MySQL01 | 192.168.0.50 | MySQL | 3306 |
| MySQL02 | 192.168.0.51 | MySQL | 3306 |
| MySQL03 | 192.168.0.52 | MySQL | 3306 |
| MongoDB01 | 192.168.0.60 | MongoDB | 27017 |
| MongoDB02 | 192.168.0.61 | MongoDB | 27017 |
| MongoDB03 | 192.168.0.62 | MongoDB | 27017 |
三、架构说明
各层功能与数据流
| 层级 | 功能 | 数据流 |
|---|---|---|
| 负载均衡 | 接收外网流量,转发到微服务入口 | 用户请求 → Nginx → 微服务 |
| 微服务 | 运行 HAP 业务,K8s + Istio 编排与治理 | 请求处理 → 调用中间件/数据库 |
| 缓存 | Redis 缓存与队列(按业务使用) | 微服务 → Redis |
| 中间件 | Kafka 消息、ES 搜索、MinIO 存储、文件服务 | 微服务 → Kafka/ES/文件服务/MinIO |
| 数据库 | MySQL / MongoDB 数据持久化 | 微服务 → MySQL/MongoDB |
本次实际节点拓扑(按当前服务器清单)
mermaid
flowchart TB
U[用户/客户端] --> N1[nginx1\n入口反向代理/负载均衡]
subgraph MS[微服务层]
M1[微服务1\n业务服务/K8s 节点]
M2[微服务2\n业务服务/K8s 节点]
M3[微服务3\n业务服务/K8s 节点]
end
N1 --> MS
subgraph CACHE[缓存层]
R1[Redis1\n缓存/会话/队列]
R2[Redis2\n缓存副本/高可用]
end
subgraph MQ[消息队列]
K1[kafka1\n消息队列 Broker]
K2[kafka2\n消息队列 Broker]
K3[kafka3\n消息队列 Broker]
end
subgraph SEARCH[搜索与索引]
E1[elasticsearch1\n索引/查询节点]
E2[elasticsearch2\n索引/查询节点]
E3[elasticsearch3\n索引/查询节点]
end
subgraph DB[数据库层]
MY1[MySQL1\n主库/读写入口]
MY2[MySQL2\n从库/只读/容灾]
MG1[mongodb1\nReplicaSet 成员]
MG2[mongodb2\nReplicaSet 成员]
MG3[mongodb3\nReplicaSet 成员]
end
subgraph FILE[文件服务]
F1[File1\n文件/对象存储节点]
F2[File2\n文件/对象存储节点]
F3[File3\n文件/对象存储节点]
F4[File4\n文件/对象存储节点]
end
MS --> CACHE
MS --> MQ
MS --> SEARCH
MS --> DB
MS --> FILE每个节点的作用(简表)
| 服务器 | 作用 | 说明 |
|---|---|---|
| nginx1 | 统一入口与转发 | 承接外网访问(80/443),反向代理到微服务入口;可叠加 Keepalived/VIP 或上游 LB 提升入口高可用 |
| 微服务1 | 业务服务运行节点 | 承载 HAP/业务微服务与相关网关能力;通常作为 K8s Master/Worker 的其中一台(以实际部署为准) |
| 微服务2 | 业务服务运行节点 | 与微服务1/3 共同承载业务负载,实现水平扩展与故障迁移 |
| 微服务3 | 业务服务运行节点 | 与微服务1/2 共同承载业务负载,实现水平扩展与故障迁移 |
| mongodb1 | MongoDB 副本集成员 | 存储业务文档数据;副本集用于高可用与容灾 |
| mongodb2 | MongoDB 副本集成员 | 与 mongodb1/3 共同组成 ReplicaSet,参与选主与数据复制 |
| mongodb3 | MongoDB 副本集成员 | 与 mongodb1/2 共同组成 ReplicaSet,参与选主与数据复制 |
| MySQL1 | 关系型主库(读写) | 存储核心业务关系数据;建议配 VIP/代理作为访问入口(按 MySQL 高可用方案) |
| MySQL2 | 关系型从库(只读/容灾) | 用于读扩展、备份与故障切换;复制链路健康是关键 |
| Redis1 | Redis 主节点(按方案) | 缓存、会话、轻量队列;建议配哨兵/Keepalived 或代理实现自动切换 |
| Redis2 | Redis 副本节点(按方案) | Redis 主从复制,承担高可用与读分担;避免单点 |
| kafka1 | Kafka Broker | 消息队列集群节点,承载主题分区与副本,解耦异步任务 |
| kafka2 | Kafka Broker | 与 kafka1/3 共同组成 Kafka 集群,提高吞吐与容灾 |
| kafka3 | Kafka Broker | 与 kafka1/2 共同组成 Kafka 集群,提高吞吐与容灾 |
| elasticsearch1 | ES 集群节点 | 承载索引与查询;节点角色(master/data/ingest)按实际规划拆分 |
| elasticsearch2 | ES 集群节点 | 与 elasticsearch1/3 共同提供搜索与分析能力 |
| elasticsearch3 | ES 集群节点 | 与 elasticsearch1/2 共同提供搜索与分析能力 |
| File1 | 文件服务/对象存储节点 | 存储附件与文件;可按“文件服务多节点/对象存储集群”方式部署(以实际组件为准) |
| File2 | 文件服务/对象存储节点 | 与 File1/3/4 共同组成文件存储层,实现容量与吞吐扩展 |
| File3 | 文件服务/对象存储节点 | 与 File1/2/4 共同组成文件存储层,实现容量与吞吐扩展 |
| File4 | 文件服务/对象存储节点 | 与 File1/2/3 共同组成文件存储层,实现容量与吞吐扩展 |
部署文档索引(标准版)
| 层级 | 文档链接 |
|---|---|
| 数据库 | MongoDB 4.4 副本集 · MySQL + Keepalived 高可用服务配置 |
| 缓存 | Redis 主从 + Keepalived 高可用服务配置 |
| 中间件 | Kafka 集群 · Elasticsearch 集群 · MinIO 集群部署 · 文件服务多节点 |
| 微服务 | k8s 多 Master 集群部署 · Istio 安装与配置 · HAP 微服务 |
| 负载均衡 | Nginx |
四、部署顺序
按以下顺序部署,每阶段完成后再进入下一阶段。
| 阶段 | 部署范围 | 部署顺序 | 说明 |
|---|---|---|---|
| 1 | 数据库层 | MySQL 高可用 → MongoDB 副本集 | 先保证基础数据层稳定 |
| 2 | 缓存层 | Redis 高可用 | 缓存与会话依赖优先就绪 |
| 3 | 中间件层 | Kafka 集群 → Elasticsearch 集群 → MinIO 集群 → 文件服务多节点 | 消息/搜索/存储就绪 |
| 4 | 微服务层 | Kubernetes 多 Master → Istio → HAP 微服务 | 完成业务服务编排与治理 |
| 5 | 入口层 | Nginx 双节点 | 对外统一入口与转发 |
| 6 | 可选 | 监控与可视化 | Prometheus + Grafana |
五、关键配置
入口与访问
- 外网仅暴露 Nginx:
https://<域名或公网IP>/(按实际环境配置) - Captain:
http://<任一微服务节点IP>:38880(按实际环境配置)
微服务连接
- MySQL:优先使用 VIP 或代理入口(按 MySQL 高可用方案配置)
- MongoDB:使用副本集连接串(按 MongoDB 副本集方案配置)
- Redis:优先使用 VIP 或代理入口(按 Redis 高可用方案配置)
- Kafka:使用集群地址(按 Kafka 集群方案配置)
- Elasticsearch:
http://<ES入口>:9200(按实际环境配置) - 文件服务:
http://<文件服务入口>:9000(按实际环境配置)
六、高可用与安全
高可用
- 负载:Nginx 双节点(可结合 Keepalived/上游 LB 实现入口 VIP)
- 微服务:Kubernetes 多 Master + 节点冗余 + 自动恢复 + Istio 服务治理
- 缓存:Redis 主从 + Keepalived(VIP 作为访问入口)
- 数据库:MySQL 主从 + Keepalived(VIP 作为访问入口),MongoDB 副本集
- 中间件与存储:Kafka/Elasticsearch/MinIO 集群化,文件服务多节点
安全
- 生产环境务必修改 MySQL、MongoDB、Redis、MinIO、文件服务默认口令并使用强口令
- 对外仅开放 Nginx 必要端口,内网按最小权限开放组件端口
- 使用 Kubernetes Namespace 与 Istio 做服务隔离与访问控制
七、与精简版的差异(用于选型)
对照 [simplified-cluster.md](file:///c:/Users/34563/Desktop/com/wiki/docs/mingdao/ops/private-deploy/simplified-cluster.md):
- 精简版以少节点完成部署,默认存储与中间件偏单机,适合资源有限与中小规模场景
- 标准版在缓存、数据库与中间件层增加节点冗余与集群能力,更适合生产与更高可用诉求