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 网络规划与拓扑
事件溯源系统涉及多个子系统之间的高频通信,网络规划需满足低延迟、高吞吐、安全隔离三个目标。以下是一个典型的三层网络拓扑:
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 地址,后续配置文件中会频繁使用。