etcd 使用说明
启动模式与配置文件
|
模式/选项 |
功能描述 |
示例 |
|---|---|---|
|
|
以指定命令行参数启动 etcd 服务器 |
|
|
|
显示 etcd 版本信息 |
|
|
|
显示帮助信息 |
|
|
|
从配置文件启动(使用配置文件时,其他命令行参数和环境变量将被忽略) |
|
|
|
启动无状态 TCP 连接转发网关(用于 v2 API 的 TCP 代理) |
|
|
|
启动无状态 gRPC L7 反向代理(用于 v3 API 的负载均衡和故障转移) |
|
注意:
gateway和grpc-proxy是独立的模式,有自己的一组参数,通常用于特定的代理场景。
成员配置 (Member)
|
参数 |
默认值 |
功能描述 |
生产环境建议 |
|---|---|---|---|
|
|
'default' |
成员的人类可读名称,在集群中唯一标识一个节点 |
使用有意义的主机名或角色名,如 |
|
|
'${name}.etcd' |
数据目录路径,存储快照、WAL 文件和成员信息 |
使用独立的高性能 SSD 盘,如 |
|
|
'' |
专门的 WAL (Write Ahead Log) 目录路径(为空时存储在 data-dir 中) |
高性能场景可分离 WAL 目录到独立磁盘以提高性能 |
|
|
100000 |
触发快照的已提交事务数 |
通常保持默认,IO 密集型场景可适当调高 |
|
|
100 |
心跳间隔(毫秒)。影响领导者发送心跳的频率 |
生产环境通常 100-400ms,内网质量好可设 100ms |
|
|
1000 |
选举超时时间(毫秒)。追随者等待领导者心跳的超时时间 |
通常是 |
|
|
true |
是否在启动时快速推进初始选举计时器以加速选举 |
保持默认 true 以加速初始选举 |
|
|
监听对等通信(节点间通信)的 URL 列表 |
必须配置为可被集群其他节点访问的地址 |
|
|
|
监听客户端通信的 URL 列表 |
包括本地地址和可被客户端访问的地址 |
|
|
|
5 |
保留的最大快照文件数(0 表示无限制) |
根据磁盘空间和备份策略设置,通常 5-10 个 |
|
|
5 |
保留的最大 WAL 文件数(0 表示无限制) |
通常保持默认 5 个 |
|
|
0 |
后端存储配额(字节),超过会触发空间不足告警 |
设置为小于磁盘容量的值,如 8GB: |
|
|
'' |
后端批处理提交的最大间隔时间 |
空表示使用默认值,通常不需要调整 |
|
|
0 |
后端批处理提交前的最大操作数 |
0 表示使用默认值,通常不需要调整 |
|
|
128 |
单个事务中允许的最大操作数 |
根据业务需求调整,默认 128 对多数场景足够 |
|
|
1572864 |
服务器接受的最大客户端请求大小(字节,约 1.5MB) |
大键值场景可适当增加,如 10MB: |
|
|
5s |
客户端 ping 服务器前的最小等待时间 |
保持默认 |
|
|
2h |
服务器 ping 客户端检查连接存活的频率(0 表示禁用) |
保持默认 2h |
|
|
20s |
关闭无响应连接前的额外等待时间(0 表示禁用) |
保持默认 20s |
集群配置 (Clustering)
|
参数 |
默认值 |
功能描述 |
生产环境建议 |
|---|---|---|---|
|
|
向集群其他成员广告的对等通信 URL |
必须是其他节点可访问的地址,强烈建议使用静态IP或域名 |
|
|
|
'default=http://localhost:2380' |
初始集群成员列表(引导时使用) |
格式: |
|
|
'new' |
初始集群状态:'new'(新建集群)或 'existing'(加入现有集群) |
首次启动设为 'new',后续节点启动设为 'existing' |
|
|
'etcd-cluster' |
集群初始令牌,防止意外跨集群交互 |
为每个集群设置唯一令牌 |
|
|
向客户端广告的客户端通信 URL |
必须是客户端可访问的地址,可以是负载均衡器地址 |
|
|
|
'' |
用于引导集群的发现服务 URL |
使用 etcd 发现服务时设置,如: |
|
|
'proxy' |
发现服务失败时的行为:'exit' 或 'proxy' |
通常保持 'proxy',但注意 proxy 仅支持 v2 API |
|
|
'' |
访问发现服务使用的 HTTP 代理 |
需要代理访问外部发现服务时设置 |
|
|
'' |
用于引导集群的 DNS SRV 记录域名 |
如: |
|
|
'' |
DNS SRV 查询的后缀 |
与 discovery-srv 配合使用 |
|
|
true |
是否拒绝可能导致法定人数丢失的重新配置请求 |
生产环境必须为 true 以确保安全 |
|
|
false |
是否启用预投票阶段(可防止网络分区导致的不必要选举) |
建议设置为 true 以提高选举稳定性 |
|
|
0 |
自动压缩保留策略:0 表示禁用,>0 表示保留时间或版本数 |
如:'1h' 保留1小时历史,或 1000 保留1000个修订版本 |
|
|
'periodic' |
自动压缩模式:'periodic'(基于时间)或 'revision'(基于版本数) |
与 auto-compaction-retention 配合使用 |
|
|
false |
是否接受 v2 API 请求 |
除非有兼容性需求,否则保持 false(v3 更高效) |
安全配置 (Security)
|
参数 |
默认值 |
功能描述 |
生产环境建议 |
|---|---|---|---|
|
|
'' |
客户端 TLS 证书文件路径 |
必须与 key-file 配对使用,如 |
|
|
'' |
客户端 TLS 私钥文件路径 |
如 |
|
|
false |
是否启用客户端证书认证 |
生产环境建议设为 true 增强安全性 |
|
|
'' |
客户端证书吊销列表文件路径 |
需要证书吊销时设置 |
|
|
'' |
允许的客户端证书主机名 |
用于限制客户端证书的 SAN 字段 |
|
|
'' |
客户端 TLS 信任的 CA 证书文件路径 |
验证客户端证书的 CA,如 |
|
|
false |
是否使用自动生成的 TLS 证书(仅用于测试) |
生产环境必须设为 false,使用手动配置的证书 |
|
|
'' |
对等通信 TLS 证书文件路径 |
节点间 TLS 通信证书,如 |
|
|
'' |
对等通信 TLS 私钥文件路径 |
如 |
|
|
false |
是否启用对等客户端证书认证 |
生产环境建议设为 true |
|
|
'' |
对等通信 TLS 信任的 CA 证书文件路径 |
如 |
|
|
'' |
对等连接要求的客户端证书通用名 |
限制对等节点的证书 CN 字段 |
|
|
'' |
允许的对等证书主机名 |
限制对等证书的 SAN 字段 |
|
|
false |
是否使用自动生成的对等 TLS 证书 |
生产环境必须设为 false |
|
|
'' |
对等证书吊销列表文件路径 |
需要证书吊销时设置 |
|
|
'' |
支持的 TLS 密码套件列表(逗号分隔) |
指定强密码套件增强安全性 |
|
|
'*' |
CORS 允许的来源(逗号分隔,* 表示允许所有) |
按需限制来源增强安全性 |
|
|
'*' |
接受 HTTP 请求的主机名白名单(服务器不安全时) |
启用 TLS 时此设置无效 |
认证配置 (Auth)
|
参数 |
默认值 |
功能描述 |
生产环境建议 |
|---|---|---|---|
|
|
'simple' |
v3 认证令牌类型:'simple' 或 'jwt' |
通常使用 'simple',JWT 适用于微服务场景 |
|
|
10 |
bcrypt 密码哈希算法的成本/强度(4-31) |
保持默认 10,过高会影响性能 |
|
|
300 |
认证令牌的生存时间(秒) |
根据安全策略调整,通常 300-3600 秒 |
性能分析与监控 (Profiling and Monitoring)
|
参数 |
默认值 |
功能描述 |
生产环境建议 |
|---|---|---|---|
|
|
false |
是否通过 HTTP 服务器启用运行时性能分析 |
调试时启用,生产环境通常禁用 |
|
|
'basic' |
导出指标的详细程度:'basic' 或 'extensive' |
监控需求高时设为 'extensive'(有性能开销) |
|
|
'' |
监听指标和健康检查端点的 URL 列表 |
如: |
日志配置 (Logging)
|
参数 |
默认值 |
功能描述 |
生产环境建议 |
|---|---|---|---|
|
|
'capnslog' |
日志记录器:'zap'(结构化日志)或 'capnslog' |
推荐 'zap',capnslog 将在 v3.5 弃用 |
|
|
'default' |
日志输出目标:'stdout'、'stderr' 或逗号分隔的目标列表 |
容器化部署用 'stdout',系统服务用文件路径 |
|
|
'info' |
日志级别:debug, info, warn, error, panic, fatal |
生产环境用 'info' 或 'warn',调试用 'debug' |
|
|
'' |
为每个包指定日志级别(即将弃用) |
如:'etcdserver=DEBUG,etcdmain=CRITICAL' |
v2 代理配置 (v2 Proxy) - 即将在 v4 中弃用
|
参数 |
默认值 |
功能描述 |
注意 |
|---|---|---|---|
|
|
'off' |
代理模式:'off'、'readonly' 或 'on' |
v2 API 代理功能,新集群不应使用 |
|
|
5000 |
端点被标记为失败状态的持续时间(毫秒) |
|
|
|
30000 |
端点刷新间隔(毫秒) |
|
|
|
1000 |
拨号超时时间(毫秒) |
|
|
|
5000 |
写入超时时间(毫秒) |
|
|
|
0 |
读取超时时间(毫秒),0 表示不超时 |
实验性功能 (Experimental Feature)
|
参数 |
默认值 |
功能描述 |
注意 |
|---|---|---|---|
|
|
false |
是否在服务客户端/对等流量前检查数据损坏 |
启用可确保数据完整性,但增加启动时间 |
|
|
0s |
集群数据损坏检查的时间间隔 |
0 表示不进行周期性检查 |
|
|
'' |
通过 v3 后端在指定前缀下提供 v2 API 请求 |
如:'/v2',用于 v2 到 v3 的迁移 |
|
|
'array' |
后端 bbolt 使用的空闲列表类型:'array' 或 'map' |
map 类型在某些场景下性能更好 |
|
|
false |
启用主租赁者持久化租约剩余 TTL 以防止长期租约无限自动续期 |
启用可防止租约无限期续期 |
|
|
1000 |
每次压缩批处理中删除的最大修订版本数 |
调整压缩性能 |
|
|
false |
跳过对等连接中客户端证书 SAN 字段的验证 |
仅用于测试,生产环境禁用 |
|
|
10m |
定期发送 watch 进度通知的时间间隔 |
长连接 watch 场景可调整 |
不安全功能 (Unsafe Feature)
|
参数 |
默认值 |
功能描述 |
警告 |
|---|---|---|---|
|
|
false |
强制创建新的单成员集群(用于灾难恢复) |
危险:会破坏一致性保证,仅用于恢复场景 |
已弃用参数 (TO BE DEPRECATED)
|
参数 |
默认值 |
替代方案 |
弃用版本 |
|---|---|---|---|
|
|
false |
使用 |
v3.5 |
|
|
'' |
暂无直接替代,通过日志配置文件控制 |
v3.5 |
生产环境启动配置示例
# 三节点 etcd 集群的典型启动参数(节点1示例)
etcd \
--name etcd-node-1 \
--data-dir /var/lib/etcd \
--wal-dir /var/lib/etcd/wal \
--listen-peer-urls https://192.168.1.101:2380 \
--listen-client-urls https://192.168.1.101:2379,https://127.0.0.1:2379 \
--initial-advertise-peer-urls https://etcd-node-1.example.com:2380 \
--advertise-client-urls https://etcd.example.com:2379 \
--initial-cluster-token my-etcd-cluster \
--initial-cluster etcd-node-1=https://etcd-node-1.example.com:2380,etcd-node-2=https://etcd-node-2.example.com:2380,etcd-node-3=https://etcd-node-3.example.com:2380 \
--initial-cluster-state new \
--heartbeat-interval 200 \
--election-timeout 2000 \
--snapshot-count 10000 \
--quota-backend-bytes 8589934592 \
--max-snapshots 5 \
--max-wals 5 \
--auto-compaction-retention 2h \
--auto-compaction-mode periodic \
--cert-file /etc/etcd/ssl/server.crt \
--key-file /etc/etcd/ssl/server.key \
--peer-cert-file /etc/etcd/ssl/peer.crt \
--peer-key-file /etc/etcd/ssl/peer.key \
--trusted-ca-file /etc/etcd/ssl/ca.crt \
--peer-trusted-ca-file /etc/etcd/ssl/ca.crt \
--client-cert-auth true \
--peer-client-cert-auth true \
--logger zap \
--log-level info \
--log-outputs stdout \
--metrics extensive \
--listen-metrics-urls http://localhost:2381
关键注意事项
-
TLS 配置:生产环境必须启用 TLS,为客户端和对等通信分别配置证书。
-
地址配置:
-
listen-peer-urls:集群内部通信地址 -
advertise-client-urls:客户端访问地址 -
initial-advertise-peer-urls:集群节点间通信的广告地址
-
-
集群引导:
-
首次启动集群时,所有节点使用相同的
initial-cluster列表和initial-cluster-state new -
已有集群添加节点时,使用
initial-cluster-state existing
-
-
数据目录:确保数据目录在快速、可靠的存储上,并有足够的磁盘空间。
-
选举参数:
-
election-timeout必须大于heartbeat-interval -
通常设置为:
election-timeout = 5-10 * heartbeat-interval
-
-
监控:通过
--listen-metrics-urls暴露指标,使用 Prometheus 监控集群健康状态。

浙公网安备 33010602011771号