4. 基础设施准备:服务器选型与网络规划

基础设施是事件溯源系统的运行底座。选型错误会导致后期扩展困难、运维成本飙升。本章从服务器形态、操作系统、网络规划与安全组四个维度给出可落地的选型建议。

4.1 服务器选型:云服务器 vs 物理机

供应链控制塔通常采用混合部署模式:核心事件存储与计算节点使用物理机或高性能云裸金属,边缘节点与开发测试环境使用云服务器。下表从关键维度对比两种方案:

对比维度 云服务器 (ECS/VM) 物理机 (Bare Metal)
弹性扩缩 分钟级扩缩容,支持自动伸缩组 需采购、上架、布线,周期 1~3 天
性能隔离 共享宿主机,存在邻居噪声 独占硬件,性能稳定可预测
存储吞吐 依赖云盘 IOPS 上限(通常 3k~100k) NVMe 本地盘可达 1M+ IOPS
运维成本 云平台负责硬件,运维轻 需自备 IDC、带外管理、硬件巡检
适用场景 API 网关、事件消费端、开发/测试 EventStore 主节点、高吞吐 Kafka 集群
推荐策略:生产环境 EventStore 与 Kafka 使用物理机或云裸金属;Kubernetes 工作节点、Redis、Nginx 使用高配云服务器。开发与预发布环境全部使用云服务器,降低初始成本。

4.2 操作系统选型:CentOS vs Ubuntu

事件溯源项目依赖 Docker、Kubernetes、Java 17+、PostgreSQL 14+ 等组件。操作系统选型直接影响包管理、内核参数调优与长期维护。

对比项 CentOS 7/Stream Ubuntu 22.04 LTS / 24.04 LTS
内核版本 3.10 (7) / 5.14 (Stream 9) 5.15 / 6.8 (24.04)
包管理器 yum / dnf apt
Docker 支持 需手动安装 docker-ce apt install docker.io 即可
Kubernetes 官方支持 CentOS 7 已弃用,Stream 9 支持 官方推荐 Ubuntu 作为节点 OS
长期维护 CentOS 7 2024-06 EOL;Stream 滚动更新 LTS 版本 5 年 + 10 年扩展安全维护
社区活跃度 下降中,迁移至 Rocky/Alma 活跃,文档与镜像丰富
注意:CentOS 7 已停止维护,不建议新项目使用。如果团队熟悉 RHEL 系,推荐 Rocky Linux 9 或 AlmaLinux 9;否则直接选择 Ubuntu 22.04 LTS 或 24.04 LTS,兼容性最好。

4.3 网络规划与拓扑

事件溯源系统涉及多个子系统之间的高频通信,网络规划需满足低延迟、高吞吐、安全隔离三个目标。以下是一个典型的三层网络拓扑:

供应链控制塔网络拓扑 供应链控制塔网络拓扑(三层隔离) 公网入口层 DMZ 安全区 Nginx 反向代理 API 网关 WAF 防护 应用与数据层(私有网络) K8s 工作节点 EventStore Kafka 集群 PostgreSQL 说明:DMZ 区仅暴露 443/80 端口;应用与数据层之间通过内网 VPC 通信,不经过公网

4.4 安全组与防火墙规则

安全组是云环境中的虚拟防火墙,用于控制实例级别的入站与出站流量。以下是一组经过生产验证的安全组规则模板:

规则名称 协议 端口 源/目标 说明
HTTP-HTTPS TCP 80, 443 0.0.0.0/0 公网访问入口,仅限 DMZ 实例
SSH 管理 TCP 22 堡垒机 IP 段 禁止直接暴露 22 端口到公网
K8s API TCP 6443 管理节点 / 运维 IP Kubernetes API Server
EventStore TCP TCP 2113 应用层子网 EventStore 客户端通信
Kafka 内网 TCP 9092 应用层子网 Kafka 生产者/消费者
PostgreSQL TCP 5432 应用层子网 数据库只对应用服务开放
ICMP ICMP - 堡垒机 IP 段 仅运维 ping 探测
最小权限原则:每个安全组只放行业务必需的端口,源 IP 范围精确到子网或 IP 段。定期使用云平台的安全组审计工具检查是否存在 0.0.0.0/0 的敏感端口(如 22、3306、6379)。

4.5 网络延迟与带宽规划

事件溯源系统对网络延迟敏感,尤其是 EventStore 与 Kafka 之间的数据复制。以下是一组实测参考值:

  • 同可用区延迟: < 0.5ms,推荐 EventStore 主节点与 Kafka 部署在同一可用区。
  • 跨可用区延迟: 1~3ms,用于跨 AZ 高可用部署,需开启云平台内网互联。
  • 跨地域延迟: 30~100ms,仅用于灾备同步,不建议承载实时事件流。
  • 带宽建议: 每 10 万事件/秒 预留 1Gbps 内网带宽;Kafka 副本同步额外占用 20%~30% 带宽。
带宽监控:在云监控中设置内网带宽使用率告警阈值 70%,避免突发流量导致网络丢包。EventStore 的 gossip 协议对网络抖动敏感,建议开启 TCP keepalive(net.ipv4.tcp_keepalive_time=120)。

4.6 基础设施清单速查表

以下清单可作为采购或云资源创建的核对依据:

角色 推荐规格 数量 OS 备注
EventStore 主节点 16C / 64G / NVMe 1TB 3 Ubuntu 22.04 物理机或云裸金属
Kafka 集群 8C / 32G / SSD 500G × 3 3 Ubuntu 22.04 云服务器,高 IOPS 云盘
K8s 工作节点 8C / 32G / SSD 200G 5~10 Ubuntu 22.04 云服务器,开启自动伸缩
PostgreSQL 8C / 32G / SSD 500G 2 Ubuntu 22.04 主从架构,云服务器
Nginx / API 网关 4C / 8G / SSD 50G 2 Ubuntu 22.04 云服务器,绑定弹性公网 IP
堡垒机 2C / 4G / SSD 50G 1 Ubuntu 22.04 云服务器,仅允许运维 IP 登录

完成服务器选型与网络规划后,下一阶段将进入操作系统初始化与基础组件安装。确保所有节点已开通内网互通,并记录好各实例的私有 IP 地址,后续配置文件中会频繁使用。