2.2. etcd 的集群延迟要求
应解决两个重要限制,以便为 etcd 提供低延迟高可用性网络:
- network I/O latency
- 磁盘 I/O 延迟
etcd 使用 Raft 共识算法,每次更改都应该在提交前复制到大多数群集成员。这个过程对网络和磁盘性能高度敏感。etcd 请求的最小时间是成员之间的 Round-Trip Time (RTT),以及写入持久性存储的数据所需的时间。
为了获得高可用性,etcd 应该快速从领导故障中检测和恢复。这依赖于两个关键调优参数:
- heartbeat Interval
- 领导向后续者发送心跳的频率。这个值应该接近成员之间的平均 RTT。
- 选择超时
- 后续者在尝试成为新领导前不会听到心跳的时间。这应该至少为 RTT 值考虑网络差异的 10 倍。
在健康的集群中,成员之间的往返时间应小于 50 ms,以确保稳定性和避免频繁领导选举。正因如此,etcd 集群通常部署在单个数据中心或可用区中,以最大程度降低物理距离和网络延迟。
要支持低延迟、高可用性网络,特别是在领导选举过程中,一个仲裁站点应位于其提供小于 10 ms 的 RTT 延迟的位置。网络的仲裁程序组件在分布式系统中保持一致性和可用性。