3. 云化部署环境规划

Redis 云化部署的第一道工程门槛,不是“能不能装起来”,而是“多个环境能不能互不干扰地长期共存”。开发、测试、预发、生产四类环境如果共用同一套集群、同一网段、同一命名空间,任何一次误操作、压测流量或配置漂移都可能穿透到生产。环境规划的本质,是把隔离边界、网络可达性、资源上限和命名可读性四件事在部署前一次性定义清楚。

一、四类环境的定位与隔离强度

四类环境不是简单的“复制四份”,它们承担的任务不同,隔离强度也应逐级递增。

环境主要用途数据特征隔离强度
开发 dev本地联调、功能验证可随时清空、造数逻辑隔离即可
测试 test集成测试、自动化回归可重置、允许脏数据命名空间 + 独立实例
预发 staging生产同构验证、发布前演练脱敏后的准生产数据独立集群 + 网络分区
生产 prod承载真实业务流量真实数据、不可丢失物理/账号级强隔离

隔离维度通常分三层:计算隔离(独立实例或独立集群)、网络隔离(VPC/子网/安全组)、权限隔离(账号、ACL、密钥)。开发与测试可以共享一套 Kubernetes 集群但使用不同 Namespace;预发与生产必须使用独立集群或至少独立 VPC,避免节点故障、网络抖动和资源争抢互相传导。

二、网络分区设计

网络分区的目标是:同环境内互通,跨环境默认不通,仅保留受控的放行通道。以一套典型的三层分区为例:

  • 接入区:放置网关、代理,仅暴露必要端口,如 Redis 的 6379/16379。
  • 应用区:业务服务所在子网,通过安全组仅允许访问本环境 Redis 的端口。
  • 数据区:Redis 实例、Sentinel/Cluster 节点所在子网,禁止公网入站,仅接受应用区与运维跳板机的连接。

跨环境访问必须显式放行。例如测试环境需要读取预发脱敏数据时,只开放预发到测试的单向只读通道,而不是把两个网段直接打通。生产环境应关闭公网访问,运维通过跳板机或专线进入。若使用云托管 Redis,则通过白名单和安全组控制来源 IP,避免使用 0.0.0.0/0。

三、资源配额与容量基线

资源配额要回答两个问题:每个环境最多能用多少,以及单实例的容量基线是多少。配额过松会导致测试环境压测拖垮共享节点,过紧则会让预发无法模拟生产负载。

建议按环境设定 CPU、内存、连接数和带宽上限。例如开发环境单实例上限 1 核 2GB、最大连接 200;测试环境 2 核 4GB、最大连接 1000;预发与生产按实际业务量规划,通常预留 30% 以上内存余量,并设置 maxmemory-policy 与告警阈值。Redis 内存规划可参考:

可用内存 = 实例内存 × 0.7
数据内存 = 可用内存 - 复制缓冲区 - 客户端缓冲区 - 碎片开销

例如 8GB 实例,按 0.7 计算可用约 5.6GB,扣除复制缓冲与客户端缓冲约 0.6GB,实际可承载数据约 5GB。若业务数据预计 4GB,则余量约 20%,属于偏紧,应扩容或优化键设计。配额还应包括连接数、QPS 和慢查询阈值,避免单环境异常影响整体。

四、命名规范

命名规范是环境隔离的“可读契约”。推荐采用环境-业务-角色-序号的结构,例如:

redis-prod-order-master-01
redis-prod-order-replica-01
redis-staging-order-master-01
redis-test-order-master-01
redis-dev-order-master-01

Kubernetes 资源可对应为:

Namespace: redis-prod / redis-staging / redis-test / redis-dev
StatefulSet: order-redis
Service: order-redis-svc
ConfigMap: order-redis-config
Secret: order-redis-secret

命名中必须包含环境标识,禁止出现 redis-01 这类无法判断归属的名称。键名同样建议带业务前缀,如 order:detail:{id},避免不同业务键冲突。命名一旦确定,应写入部署模板和 CI 校验,防止人工创建时绕过规范。

五、环境隔离的整体关系

下图展示四类环境在命名空间、网络分区、资源配额和命名规范上的对应关系,可作为部署前的规划检查视图。

Redis 多环境隔离规划视图 开发 dev Namespace: redis-dev 1核2G / 200连接 可清空、可造数 redis-dev-order -master-01 逻辑隔离 共享集群 测试 test Namespace: redis-test 2核4G / 1000连接 可重置、允许脏数据 redis-test-order -master-01 命名空间隔离 独立实例 预发 staging Namespace: redis-staging 按生产 50% 规划 脱敏准生产数据 redis-staging-order -master-01 独立集群 网络分区 生产 prod Namespace: redis-prod 按业务量 + 30% 余量 真实数据、不可丢失 redis-prod-order -master-01 独立 VPC 账号级强隔离 网络分区: 接入区 → 应用区 → 数据区;跨环境默认不通,仅按需放行单向只读通道 命名规范: 环境-业务-角色-序号,如 redis-prod-order-master-01

六、落地检查要点

规划完成后,建议在部署前逐项确认:环境标识是否进入所有资源名;跨环境网络是否默认拒绝;生产是否关闭公网;每个环境的内存、连接数、QPS 配额是否明确;预发是否与生产同构;密钥是否按环境独立。把这些检查项写入 CI 或部署流水线,才能让隔离策略从文档变成可执行的约束。

环境隔离不是一次性工作。随着业务增长,预发可能被临时用于压测,测试可能被开发直接连接,这些“临时通道”最容易破坏隔离。建议每季度复核一次网络放行规则和资源配额,及时回收不再需要的跨环境访问。