2. 环境规划与架构设计:物理/虚拟化环境规划、网络拓扑设计、高可用架构选型

服务目录平台作为企业 IT 服务管理的核心入口,其底层环境的稳定性与扩展性直接决定了平台可用性。本章从物理/虚拟化资源规划、网络拓扑设计、高可用架构选型三个维度展开,为后续自动化部署与故障排查奠定基础。

2.1 物理与虚拟化环境规划

根据平台规模与业务连续性要求,推荐采用 混合部署 策略:控制平面(数据库、消息队列、配置中心)部署在物理机或高性能虚拟化实例上,业务平面(Web 服务、API 网关、Worker 节点)采用容器化或虚拟化弹性伸缩组。

组件角色 推荐部署方式 最低配置(生产) 说明
数据库(PostgreSQL/MySQL) 物理机 / 裸金属虚拟化 8 vCPU, 32 GB RAM, SSD RAID10 高 IOPS 要求,避免资源争抢
消息队列(Kafka/RabbitMQ) 物理机 / 专用 VM 4 vCPU, 16 GB RAM, 高吞吐磁盘 磁盘吞吐与网络延迟敏感
配置中心 / 注册中心 虚拟机(3 节点集群) 2 vCPU, 4 GB RAM 低资源消耗,但需跨可用区部署
Web 服务 / API 网关 容器化(K8s / Docker Swarm) 2 vCPU, 4 GB RAM / 实例 水平扩展,无状态设计
Worker / 异步任务节点 容器化 / 虚拟化弹性伸缩组 2 vCPU, 8 GB RAM / 实例 根据队列深度自动扩缩容
规划要点: 生产环境务必为数据库与消息队列预留独立的物理 NUMA 节点或 vCPU 绑定,避免因 CPU 争抢导致延迟抖动。虚拟化层建议使用 VMware vSphere 或 KVM + oVirt,并开启 CPU 预留与内存大页。

2.2 网络拓扑设计

网络拓扑采用 三层隔离 + 东西向流量优化 模型:接入层(公网/内网负载均衡)→ 业务层(服务集群)→ 数据层(有状态中间件)。各层之间通过防火墙策略与安全组实现最小权限通信。

服务目录平台网络拓扑(三层隔离模型) 接入层(Load Balancer) 公网 SLB / 内网 Nginx+Keepalived SSL 卸载 | WAF 防护 | 健康检查 VIP: 10.0.1.100 (内网) / 203.0.113.10 (公网) 业务层(无状态服务集群) Web 服务 (Pod/VM) × N | API 网关 | Worker 节点 K8s Service / 虚拟化弹性伸缩组 Pod CIDR: 10.244.0.0/16 | 节点网络: 10.0.2.0/24 东西向流量通过 Calico / Flannel 隧道转发 数据层(有状态中间件) PostgreSQL 主从 | Kafka 集群 | Redis Sentinel 数据层 VLAN: 10.0.3.0/24 | 仅业务层可访问 存储网络: 10.0.10.0/24 (iSCSI / NFS)
网络隔离策略:
  • 接入层 → 业务层: 仅开放 443 (HTTPS) 与 80 (HTTP 重定向),源 IP 为 SLB 地址池。
  • 业务层 → 数据层: 仅开放数据库端口 (5432)、Kafka 端口 (9092)、Redis 端口 (6379),源 IP 为业务层 Pod/VM 网段。
  • 数据层内部: 复制流量走独立存储网络,禁止跨 VLAN 广播。

2.3 高可用架构选型

高可用设计遵循 消除单点 + 自动故障转移 原则。根据组件特性,分别采用不同的 HA 策略:

组件 HA 模式 故障切换时间 关键依赖
负载均衡器 主备 (Keepalived + Nginx) / 云 SLB < 5 秒 VIP 漂移、健康检查脚本
Web 服务 / API 水平扩展 + 无状态 + 滚动更新 < 30 秒(K8s 自动恢复) 就绪探针、资源配额
PostgreSQL 流复制同步 + Patroni 自动故障转移 < 10 秒 etcd / Consul 作为 DCS
Kafka 多副本 (replication-factor ≥ 3) + ISR < 2 秒(Leader 选举) ZooKeeper / KRaft 仲裁
Redis Sentinel 哨兵 / Redis Cluster < 3 秒(Sentinel 选举) quorum 设置、网络分区容忍
配置中心 3 节点集群 (Raft 共识) < 5 秒(Leader 切换) 持久化存储、节点间低延迟
服务目录平台高可用架构组件关系 用户 / 客户端 SLB 主备 (Keepalived + Nginx) VIP: 10.0.1.100 | 健康检查间隔 2s Web 服务集群 (K8s Deployment × 3+) 滚动更新 | 就绪探针 | HPA 自动伸缩 PostgreSQL HA Patroni + etcd Kafka HA 副本数 3 | ISR Redis HA Sentinel 哨兵 配置中心 / 注册中心 (Raft 3 节点)
关键避坑:
  • 数据库 HA 务必使用 同步复制 或 半同步复制,异步复制在主机宕机时可能丢失最后一批事务。
  • Kafka 副本因子设置为 3,min.insync.replicas 设置为 2,防止单副本故障导致数据不可用。
  • Redis Sentinel 的 quorum 设置为 2(3 节点哨兵),避免网络分区时出现双主。
  • 所有 HA 组件必须部署在 不同物理机 / 不同可用区,否则无法抵御物理级故障。

2.4 架构选型决策矩阵

根据团队运维能力与预算,提供三种典型架构选型方案:

方案 适用场景 优势 劣势
全虚拟化 + 传统 HA 中小规模,运维团队 2-3 人 技术栈成熟,故障排查直观 弹性伸缩慢,资源利用率低
容器化 + K8s 编排 中大规模,DevOps 团队 弹性好,滚动更新,声明式管理 学习曲线陡,网络排查复杂
混合架构(推荐) 生产环境,追求稳定性与弹性 有状态组件物理隔离,无状态弹性伸缩 运维复杂度中等,需统一监控