etcd 节点通信与 2380 端口
2380 是 etcd 集群节点之间的通信端口,Raft 日志复制、领导者选举与成员变更都通过它完成;2379 则用于客户端与 kv 接口访问。两个端口的分工很重要:只放行 2379 而挡掉 2380,集群节点之间无法同步,会表现为客户端偶发超时、写入失败甚至失去仲裁。节点数建议为奇数,两节点集群不具备容错能力,宕一台就会丧失写可用性。
基本信息
| 服务 | etcd 节点间通信(peer 接口) |
|---|---|
| 协议 | TCP,建议启用对等证书认证 |
| 配套端口 | 2379 客户端访问 |
| 集群规模 | 推荐 3 或 5 节点,即奇数个 |
| 关键参数 | 选举超时、心跳间隔、快照与配额设置 |
| 安全等级 | 仅集群内网可达 |
典型使用场景
- Kubernetes 控制面:多节点之间同步集群状态数据
- 配置中心:多节点保持一致的数据视图供业务读取
- 故障切换:领导者节点异常后由其余节点重新选举
- 扩容与缩容:通过成员变更接口在集群中增删节点
- 巡检:核对各节点数据版本与数据库大小是否同步
从客户端侧查看集群状态
从客户端侧查看集群状态
etcdctl --endpoints=https://10.0.0.11:2379,https://10.0.0.12:2379,https://10.0.0.13:2379 endpoint status --write-out=table # 各节点大小与版本
etcdctl --endpoints=https://10.0.0.11:2379 endpoint health --write-out=table # 健康检查
etcdctl --endpoints=https://10.0.0.11:2379 member list -w table # 成员与领导者
ss -lntp | grep -E ':2379|:2380' # 本机监听范围集群排障方向
| 现象 | 常见原因 | 处置方向 |
|---|---|---|
| 客户端偶发超时 | 2380 被防火墙拦截,节点间同步不畅 | 确认节点之间的对等端口互通 |
| 无法选举出领导者 | 网络分区或节点数不足多数 | 检查网络连通性与各节点运行状态 |
| 写入失败 | 失去多数仲裁或磁盘写入过慢 | 查看节点日志与磁盘延迟指标 |
| 成员列表异常 | 曾手工变更成员未彻底完成 | 核对成员列表与实际运行的节点 |
对等通信的证书与参数核对
对等通信的证书与参数核对
# 启动参数中应同时出现客户端与对等通信的证书配置
# --cert-file 与 --key-file 用于客户端访问,--peer-cert-file 与 --peer-key-file 用于节点间通信
# --peer-client-cert-auth 开启后,只有持有可信证书的节点才能加入通信
ps -ef | grep etcd | tr ' ' '\n' | grep -E 'peer|listen' # 核对实际生效的监听与证书参数把 2379 与 2380 整段放行到办公网会显著扩大攻击面:节点间通信往往带互信关系,拿下任一节点即可影响整个集群。
集群规模的选择:三节点可容忍单节点故障,五节点可容忍两节点故障;节点越多写入延迟越高,因此不要为了容错盲目扩容,按业务可用性目标选择即可。
磁盘是一大风险源:etcd 对写入延迟敏感,节点使用慢盘或与高负载服务混布时,会先出现选举抖动,随后表现为整个控制面请求超时,巡检时把磁盘延迟与日志中的选举事件一起看。