子网划分不直接优化分布式数据库集群通信,但能提升网络可控性、隔离性与效率,间接增强集群稳定性与性能;通过按角色划分子网、地理分区、控制广播域及配合网络策略,实现流量净化、延迟降低与安全加固。

子网划分本身不直接优化分布式数据库集群通信,但它能显著改善网络层的可控性、隔离性和效率,从而间接提升集群稳定性与性能。关键在于让数据节点通信更“干净”——减少广播干扰、缩短路径、规避跨网段延迟,并为后续策略(如亲和调度、流量限速、安全策略)打下基础。
按角色/功能划分专用子网
将不同职责的节点部署在独立子网中,避免混合流量干扰:
- 数据节点子网:仅承载分片数据存储与节点间复制流量(如Raft心跳、WAL同步),禁用外部访问,关闭不必要的服务端口
- 协调节点子网:运行PD(Placement Driver)、Gossip服务或元数据管理器,与数据节点高频交互但不存数据,可配置更高带宽和更低MTU
- 接入层子网:部署Proxy、Sharding中间件或SQL网关,面向应用提供统一入口,做连接池管理、SQL路由和熔断,与协调节点子网直连,避免绕行
- 备份/日志子网(可选):专用于异步备份、CDC拉取或审计日志导出,与主业务网络物理或逻辑隔离,防止IO抖动影响在线事务
跨机房部署时按地理区域划分子网
当集群横跨多个可用区或数据中心时,子网应映射真实地理位置:
- 每个机房分配独立CIDR(如10.10.1.0/24、10.10.2.0/24、10.10.3.0/24),并在路由表中配置静态或BGP宣告,确保同机房节点优先走本地二层转发
- 设置跨子网通信策略:例如强制主中心写入必须同步到本子网内至少两个副本,跨子网仅做异步日志复制,降低Paxos投票延迟
- 利用子网标签(如AWS Subnet Tags、K8s NetworkPolicy)配合服务发现工具(Consul、Etcd),使协调节点能识别“就近节点”,优先路由查询请求到同子网分片
控制广播域与ARP规模
过大子网会加剧ARP风暴和交换机MAC表压力,尤其在使用VXLAN或Underlay网络的场景下:
- 单个子网内数据节点建议不超过64台,避免ARP请求泛洪导致控制面卡顿(实测TiDB集群在/22子网中超过128节点时,PD心跳超时率上升3倍)
- 对高吞吐链路(如CockroachDB的Range复制流),可启用Jumbo Frame并限定子网MTU一致(如9000),减少分片重装开销
- 禁用子网内不必要的IPv6邻居发现(NDP),除非明确需要,否则默认关闭以降低内核网络栈负担
配合网络策略精细化管控
子网是实施网络策略的最小可靠单元:
- 在防火墙或云安全组中,只允许数据节点子网之间开放5000–6000端口(TiDB)、28000端口(CockroachDB)等必需端口,拒绝所有其他入向连接
- 为协调节点子网设置出口限速(如500Mbps),防止单点元数据变更引发全网带宽打满
- 在Kubernetes环境中,通过Calico或Cilium基于子网CIDR定义NetworkPolicy,实现“只允许tikv-pd-subnet → tikv-data-subnet”的定向流量,杜绝横向越权探测

















