1. Member 成员配置
1.1. --name
--name 'default'
Human-readable name for this member.
- 描述:人易理解的成员的名称
- 默认: "default"
- 环境变量: ETCD_NAME
解释:
该参数是 etcd 集群成员当前节点的名称,该名称便于人来理解。比如常用的名称: etcd1
或 Hostname
或 machine-id
,默认情况下如果没有指定时为 default
.
在 --initial-cluster
标记中,默认节点的配置项为 default=http://localhost:2380
,其中 default
就是 name 的名称,而且该名称在集群中唯一。如果使用固定节点的静态部署方式时,这需要匹配在标记中使用的key。当使用动态发现时,每个成员也必须有唯一名字。
1.2. --data-dir
--data-dir '${name}.etcd'
Path to the data directory.
- 描述:到数据目录的路径.
- 默认: "${name}.etcd"
- 环境变量: ETCD_DATA_DIR
解释:
该参数是指定 etcd 的数据保存在磁盘上的路径,注意这里是已经通过集群确定了的数据,该数据是整个集群的定期快照数据,便于在故障恢复时使用。
1.3. --wal-dir
--wal-dir ''
Path to the dedicated wal directory.
- 描述: 指定 wal 的存储目录
- 默认: ''
- 环境变量: ETCD_WAL_DIR
解释:
默认时是相对 --data-dir
的路径,如果不单独指定 wal 时会和数据目录一致。如果这个标记被单独设置,etcd 将写 WAL 文件到 wal-dir
而不是 data-dir
,这容许使用专门的硬盘来存放 wal 文件以提升 etcd 性能。
该参数指定的路径所在的磁盘性能决定了 etcd 整体的性能。etcd 在写入数据时,需要集群中超过一半的节点都将新的数据写入 wal 文件后才算数据写入成功,因此如果 wal 数据文件路径指定的磁盘性能较差,会导致 etcd 整体的性能降低。
1.4. --snapshot-count
--snapshot-count '100000'
Number of committed transactions to trigger a snapshot to disk.
- 描述:触发快照到硬盘的已提交事务的数量.
- 默认: "10000"
- 环境变量: ETCD_SNAPSHOT_COUNT
解释:
etcd 的数据写入时时会先写入到 wal 文件(--wal-dir
),经过过半的节点同步到数据后才算一次事物(一条数据)写入成功,当达到一定数量时,需要同步到磁盘中(--data-dir
)以防止异常情况。
该参数的大小配置需要根据当前节点的性能、磁盘性能、节点负载、节点机器的稳定性以及其他多方面综合评估,合理的值能够更好的发挥 etcd 的性能。
1.5. --heartbeat-interval
--heartbeat-interval '100'
Time (in milliseconds) of a heartbeat interval.
- 描述:心跳间隔时间 (单位:毫秒).
- 默认: "100"
- 环境变量: ETCD_HEARTBEAT_INTERVAL
解释:
该参数指定 etcd 集群心跳的时间间隔。一般集群的 leader 会定期发送宣告给 followers,通知集群中其他节点自己是 leader 角色,该值就是 leader 宣告的时间间隔。如果其他成员在这个心跳间隔内未收到 leader 的宣告,会判断 leader 已经异常失联了,将发起新的一轮选举。
该值是心跳间隔,间隔太低会消耗较多的网络资源,间隔太大会导致集群 leader 异常时重新选主间隔变长,进而故障不可用时间变长。
1.6. --election-timeout
--election-timeout '1000'
Time (in milliseconds) for an election to timeout. See tuning documentation for details.
- 选举的超时时间(单位 毫秒)
- 默认: "1000"
- 环境变量: ETCD_ELECTION_TIMEOUT
解释:
etcd 选举 leader 会有一个投票阶段,有一定的情况是该次投票没有选举出新的 Leader。这时需要重新发起一轮选举,该参数就是指定重新投票的超时时间。
1.7. --initial-election-tick-advance
--initial-election-tick-advance 'true'
Whether to fast-forward initial election ticks on boot for faster election.
- 描述:
- 默认: true
- 环境变量: ETCD_INITIAL_ELECTION_TICK_ADVANCE
解释:
默认情况下,重新加入的追随者的快进选举会标记加速其初始集群引导程序。例如,开始选举前,开始的追随者节点仅等候 200ms 而非一秒的全选举超时。
理想情况下,在 200ms 内,它接收到了指挥者的检测信号,并立即作为跟随者加入集群。然而,如果出现网络分区,检测信号可能终止,触发指挥选举。来自分区节点的投票请求非常具有破坏性。如果包含更高的 Raft 条件,目前的指挥者不得不降级。
当 initial-election-tick-advance
设为 FALSE,重新加入的节点有更好的机会在破坏集群前接收指挥者检测信号。
1.8. --listen-peer-urls
--listen-peer-urls 'http://localhost:2380'
List of URLs to listen on for peer traffic.
- 描述:列出用于建立 peer 监听的 URLs 列表
- 默认: "http://localhost:2380"
- 环境变量: ETCD_LISTEN_PEER_URLS
解释:
用于监听集群成员通讯的 URLs 列表。这个标记告诉 etcd 在特定的 scheme://IP:port
组合上从它的伙伴接收进来的请求。
scheme 可是 http 或者 https。如果 IP 被指定为 0.0.0.0
, etcd 在所有接口上监听给定端口。如果给定 IP 地址和端口,etcd 将监听在给定端口和接口上。多个URL可以用来指定多个地址和端口来监听。etcd 将从任何列出来的地址和端口上应答请求。
这里需要注意 peer 的端口是集群间通信的端口,和客户端访问 etcd 集群的端口不同。
该参数是当前节点的配置。
1.9. --listen-client-urls
--listen-client-urls 'http://localhost:2379'
List of URLs to listen on for client traffic.
- 描述:客户端访问监听的 URLs 列表
- 默认: "http://localhost:2379"
- 环境变量: ETCD_LISTEN_CLIENT_URLS
解释:
用于监听客户端通讯的 URL 列表。这个标记告诉 etcd 在特定的 scheme://IP:port
组合上从客户端接收进来的请求。scheme 可是 http 或者 https。如果IP被指定为 0.0.0.0
, etcd 在所有接口上监听给定端口。如果给定IP地址和端口,etcd 将监听在给定端口和接口上。多个 URL 可以用来指定多个地址和端口来监听。etcd 将从任何列出来的地址和端口上应答请求。
这里是指定客户端访问 etcd 集群的 URLs 列表(scheme://IP:port
), 和集群间通信的 peer 端口不同。
该参数是对于当前节点的配置项,是整个集群 endpoints 中的一项。
1.10. --max-snapshots
--max-snapshots '5'
Maximum number of snapshot files to retain (0 is unlimited).
- 描述:保持的快照文件的最大数量 (0 表示不限制)
- 默认: 5
- 环境变量: ETCD_MAX_SNAPSHOTS
解释:
etcd 保存的数据(--data-dir
)快照文件保留的数量。
对于 windows 用户默认不限制,而且推荐手工降低到5(或者某些安全偏好)。
1.11. --max-wals
--max-wals '5'
Maximum number of wal files to retain (0 is unlimited).
- 描述:保持的 wal 文件的最大数量 (0 表示不限制)
- 默认: 5
- 环境变量: ETCD_MAX_WALS
etcd 的 wal 文件 (--wal-dir
) 数据文件保留的数量。
对于windows用户默认不限制,而且推荐手工降低到5(或者某些安全偏好)。
1.12. --quota-backend-bytes
--quota-backend-bytes '0'
Raise alarms when backend size exceeds the given quota (0 defaults to low space quota).
- 描述:当后端大小超过给定配额时(0默认为低空间配额),引发警报。
- 默认值:0
- 环境变量:ETCD_QUOTA_BACKEND_BYTES
1.13. --backend-batch-interval
--backend-batch-interval ''
BackendBatchInterval is the maximum time before commit the backend transaction.
- 描述:提交后端事物之前的最长时间
- 默认值:default: 0
- 环境变量: ETCD_BACKEND_BATCH_INTERVAL
1.14. --backend-batch-limit
--backend-batch-limit '0'
BackendBatchLimit is the maximum operations before commit the backend transaction.
- 描述:提交后端实物之前的最大操作
- 默认值: 0
- 环境变量: ETCD_BACKEND_BATCH_LIMIT
1.15. --max-txn-ops
--max-txn-ops '128'
Maximum number of operations permitted in a transaction.
- 描述:事务中允许的最大操作数。
- 默认值:128
- 环境变量:ETCD_MAX_TXN_OPS
1.16. --max-request-bytes
--max-request-bytes '1572864'
Maximum client request size in bytes the server will accept.
- 含义:服务器将接受的最大客户端请求大小(字节)。
- 默认值:1572864
- 环境变量:ETCD_MAX_REQUEST_BYTES
1.17. --grpc-keepalive-min-time
--grpc-keepalive-min-time '5s'
Minimum duration interval that a client should wait before pinging server.
- 描述:客户端在 ping 服务器之前应等待的最短持续时间间隔。
- 默认值:5s
- 环境变量:ETCD_GRPC_KEEPALIVE_MIN_TIME
解释:
在 GRPC 连接 etcd 集群时才能生效。
1.18. --grpc-keepalive-interval
--grpc-keepalive-interval '2h'
Frequency duration of server-to-client ping to check if a connection is alive (0 to disable).
- 描述:服务器到客户端 ping 的频率持续时间,以检查连接是否处于活动状态(0表示禁用)。
- 默认值:2h
- 环境变量:ETCD_GRPC_KEEPALIVE_INTERVAL
解释:
在 GRPC 连接 etcd 集群时才能生效。
1.19. --grpc-keepalive-timeout
--grpc-keepalive-timeout '20s'
Additional duration of wait before closing a non-responsive connection (0 to disable).
- 描述:关闭非响应连接之前的额外持续等待时间(0表示禁用)。
- 默认值:20s
- 环境变量:ETCD_GRPC_KEEPALIVE_TIMEOUT
解释:
在 GRPC 连接 etcd 集群时才能生效。