etcd 版本
text
[root@aaaaaa ~]# /data/etcd/etcd-v3.5.15-linux-amd64/etcd --version
etcd Version: 3.5.15
Git SHA: 9a5533382
Go Version: go1.21.12
Go OS/Arch: linux/amd64
基础命令:
- etcd [flags]:启动一个 etcd 服务器。
- etcd --version:显示 etcd 的版本号。
- etcd -h | --help:显示 etcd 的帮助信息。
- etcd --config-file:服务器配置文件的路径。如果提供了配置文件,其他命令行标志和环境变量将被忽略。
成员配置:
- --name 'default':此成员的人类可读名称。
- --data-dir '${name}.etcd':数据目录的路径。
- --wal-dir '':专用 WAL 目录的路径。
- --snapshot-count '100000':触发磁盘快照的已提交事务数。
- --heartbeat-interval '100':心跳间隔时间(毫秒)。
- --election-timeout '1000':选举超时时间(毫秒)。
- --initial-election-tick-advance 'true':是否在启动时快进初始选举 tick,以加快选举速度。
- --listen-peer-urls 'http://localhost:2380':监听对等网络流量的 URL 列表。
- --listen-client-urls 'http://localhost:2379':监听客户端 gRPC 流量的 URL 列表。
- --listen-client-http-urls '':仅监听 HTTP 客户端流量的 URL 列表。启用此标志会从 --listen-client-urls 中移除 HTTP 服务。
- --max-snapshots '5':保留的最大快照文件数(0 为无限制)。
- --max-wals '5':保留的最大 WAL 文件数(0 为无限制)。
- --quota-backend-bytes '0':后端大小超过给定配额时发出警报(0 默认为低空间配额)。
- --backend-bbolt-freelist-type 'map':boltdb 后端使用的空闲列表类型(支持 array 和 map 类型)。
- --backend-batch-interval '':提交后端事务之前的最大时间。
- --backend-batch-limit '0':提交后端事务之前的最大操作数。
- --max-txn-ops '128':事务中允许的最大操作数。
- --max-request-bytes '1572864':服务器将接受的最大客户端请求大小(字节)。
- --max-concurrent-streams 'math.MaxUint32':每个客户端同时可以打开的最大并发流数。
- --enable-grpc-gateway:启用 GRPC 网关。
- --grpc-keepalive-min-time '5s':客户端在 ping 服务器之前应等待的最小时间间隔。
- --grpc-keepalive-interval '2h':服务器向客户端 ping 的频率,以检查连接是否存活(设置为 0 禁用)。
- --grpc-keepalive-timeout '20s':在关闭无响应连接之前额外等待的时间(设置为 0 禁用)。
- --socket-reuse-port 'false':启用时设置套接字选项 SO_REUSEPORT,允许重新绑定已在使用中的端口。
- --socket-reuse-address 'false':启用时设置套接字选项 SO_REUSEADDR,允许绑定到 TIME_WAIT 状态的地址。
- --raft-read-timeout '5s':设置在每个 rafthttp 连接上的读取超时。
- --raft-write-timeout '5s':设置在每个 rafthttp 连接上的写入超时。
集群配置:
- --initial-advertise-peer-urls 'http://localhost:2380':广告到整个集群的此成员的对等 URL 列表。
- --initial-cluster 'default=http://localhost:2380':引导时的初始集群配置。
- --initial-cluster-state 'new':初始集群状态(在引导新集群时为 'new',在向现有集群添加新成员时为 'existing')。初始化成功后(引导或添加),重启时将忽略此标志。
- --initial-cluster-token 'etcd-cluster':在引导期间的 etcd 集群的初始集群令牌。指定此项可以防止在运行多个集群时发生意外的跨集群交互。
- --advertise-client-urls 'http://localhost:2379':广告到公众的此成员的客户端 URL 列表。广告的客户端 URL 应对与 etcd 集群通信的机器可访问。etcd 客户端库解析这些 URL 以连接到集群。
- --discovery '':用于引导集群的发现 URL。
- --discovery-fallback 'proxy':当发现服务失败时的预期行为('exit' 或 'proxy')。"proxy" 仅支持 v2 API。
- --discovery-proxy '':用于发现服务流量的 HTTP 代理。
- --discovery-srv '':用于引导集群的 DNS srv 域。
- --discovery-srv-name '':引导时查询的 dns srv 名称后缀。
- --strict-reconfig-check 'true':拒绝可能导致丧失法定人数的重新配置请求。
- --pre-vote 'true':启用以运行额外的 Raft 选举阶段。
- --auto-compaction-retention '0':自动压缩保留长度。0 表示禁用自动压缩。
- --auto-compaction-mode 'periodic':解释 'auto-compaction-retention' 为:periodic|revision。'periodic' 表示基于持继时间的保留,如果没有提供时间单位,默认为小时(例如 '5m')。'revision' 表示基于修订号的保留。
- --enable-v2 'false':接受 etcd V2 客户端请求。已弃用,将在 v3.6 中废止。
- --v2-deprecation 'not-yet':v2store 弃用的阶段。允许选择加入更高的兼容模式。支持的值包括:
'not-yet':如果 v2store 有有意义的内容,则发出警告(v3.5 中的默认值)
'write-only':不允许自定义 v2 状态(计划在 v3.6 中默认)
'write-only-drop-data':将删除自定义 v2 状态!
'gone':不再维护 v2store。(计划在 v3.7 中默认)
安全配置:
- --cert-file '':客户端服务器 TLS 证书文件的路径。
- --key-file '':客户端服务器 TLS 密钥文件的路径。
- --client-cert-auth 'false':启用客户端证书认证。
- --client-cert-file '':显式对等客户端 TLS 证书文件的路径,否则在需要客户端认证时将使用证书文件。
- --client-key-file '':显式对等客户端 TLS 密钥文件的路径,否则在需要客户端认证时将使用密钥文件。
- --client-crl-file '':客户端证书撤销列表文件的路径。
- --client-cert-allowed-hostname '':客户端证书认证的 SAN 主机名的逗号分隔列表。
- --trusted-ca-file '':客户端服务器 TLS 可信 CA 证书文件的路径。
- --auto-tls 'false':使用生成的证书进行客户端 TLS。
- --peer-cert-file '':对等服务器 TLS 证书文件的路径。
- --peer-key-file '':对等服务器 TLS 密钥文件的路径。
- --peer-client-cert-auth 'false':启用对等客户端证书认证。
- --peer-trusted-ca-file '':对等服务器 TLS 可信 CA 证书文件的路径。
- --peer-cert-allowed-cn '':允许的对等 TLS 认证的 CN 的逗号分隔列表。
- --peer-cert-allowed-hostname '':允许的对等 TLS 认证的 SAN 主机名的逗号分隔列表。
- --peer-auto-tls 'false':如果未提供 --peer-key-file 和 --peer-cert-file,则使用自动生成的证书进行对等 TLS。
- --peer-client-cert-file '':显式对等客户端 TLS 证书文件的路径,否则在需要客户端认证时将使用对等证书文件。
- --peer-client-key-file '':显式对等客户端 TLS 密钥文件的路径,否则在需要客户端认证时将使用对等密钥文件。
- --self-signed-cert-validity '1':当您指定 ClientAutoTLS 和 PeerAutoTLS 时,etcd 自动生成的客户端和对等证书的有效期,单位为年,默认为 1 年。
- --peer-crl-file '':对等证书撤销列表文件的路径。
- --cipher-suites '':客户端/服务器和对等之间支持的 TLS 密码套件的逗号分隔列表(为空将由 Go 自动填充)。
- --cors '*':CORS(跨源资源共享)的来源白名单,逗号分隔(为空或 * 表示允许所有)。
- --host-whitelist '*':如果服务器不安全,接受来自 HTTP 客户端请求的主机名,逗号分隔(为空或 * 表示允许所有)。
- --tls-min-version 'TLS1.2':etcd 支持的最小 TLS 版本。可能的值:TLS1.2, TLS1.3。
- --tls-max-version '':etcd 支持的最大 TLS 版本。可能的值:TLS1.2, TLS1.3(为空将由 Go 自动填充)。
授权和认证:
- --auth-token 'simple':指定 v3 认证令牌类型及其选项('simple' 或 'jwt')。
- --bcrypt-cost 10:指定 bcrypt 算法用于哈希认证密码的成本/强度。有效值在 4 到 31 之间。
- --auth-token-ttl 300:auth-token-ttl 的时间(秒)。
性能分析和监控:
- --enable-pprof 'false':通过 HTTP 服务器启用运行时分析数据。地址位于客户端 URL + "/debug/pprof/"。
- --metrics 'basic':设置导出度量的详细级别,指定 'extensive' 包括服务器端 grpc 直方图度量。
- --listen-metrics-urls '':监听 /metrics 和 /health 端点的 URL 列表。对于 https,使用客户端 URL TLS 信息。
日志配置:
- --logger 'zap':当前仅支持 'zap' 结构化日志。
- --log-outputs 'default':指定 'stdout' 或 'stderr' 跳过 journald 日志记录,即使在 systemd 下运行,或列出逗号分隔的输出目标。
- --log-level 'info':配置日志级别。仅支持 debug, info, warn, error, panic 或 fatal。
- --enable-log-rotation 'false':启用单个 log-outputs 文件目标的日志轮换。
- --log-rotation-config-json '{"maxsize": 100, "maxage": 0, "maxbackups": 0, "localtime": false, "compress": false}':如果启用,使用 JSON 日志配置配置日志轮换。MaxSize(MB),MaxAge(天,0=无限制),MaxBackups(0=无限制),LocalTime(使用计算机的本地时间),Compress(gzip)。
实验性分布式跟踪:
- --experimental-enable-distributed-tracing 'false':启用实验性分布式跟踪。
- --experimental-distributed-tracing-address 'localhost:4317':分布式跟踪收集器地址。
- --experimental-distributed-tracing-service-name 'etcd':分布式跟踪服务名称,必须在所有 etcd 实例中相同。
- --experimental-distributed-tracing-instance-id '':分布式跟踪实例 ID,每个 etcd 实例必须唯一。
- --experimental-distributed-tracing-sampling-rate '0':每百万跨度收集的样本数。默认禁用。
v2 代理(在 v3.6 中将被弃用):
- --proxy 'off':代理模式设置('off', 'readonly' 或 'on')。
- --proxy-failure-wait 5000:端点保持失败状态的时间(毫秒)。
- --proxy-refresh-interval 30000:端点刷新间隔的时间(毫秒)。
- --proxy-dial-timeout 1000:拨号超时的时间(毫秒)。
- --proxy-write-timeout 5000:写入超时的时间(毫秒)。
- --proxy-read-timeout 0:读取超时的时间(毫秒)。
实验性功能:
- --experimental-initial-corrupt-check 'false':启用在为任何客户端/对等流量提供服务之前检查数据损坏。
- --experimental-corrupt-check-time '0s':集群损坏检查通过之间的时间间隔。
- --experimental-compact-hash-check-enabled 'false':启用领导者定期检查追随者压缩哈希。
- --experimental-compact-hash-check-time '1m':领导者检查追随者压缩哈希之间的时间间隔。
- --experimental-enable-v2v3 '':通过 v3 后端在给定前缀下服务 v2 请求。已弃用,将在 v3.6 中废止。
- --experimental-enable-lease-checkpoint 'false':启用主要出租人持久化租约剩余 TTL,以防止长期租约的无限自动续约。
- --experimental-enable-lease-checkpoint-persist 'false':启用持久化剩余 TTL,以防止长期租约的无限自动续约。在 v3.6 中始终启用。应用于确保从启用此功能的 v3.5 集群平滑升级。需要启用 experimental-enable-lease-checkpoint。
- --experimental-compaction-batch-limit 1000:每个压缩批次中删除的最大修订数。
- --experimental-peer-skip-client-san-verification 'false':跳过对等连接中客户端证书的 SAN 字段验证。
- --experimental-watch-progress-notify-interval '10m':定期观察进度通知的周期。
- --experimental-downgrade-check-time:两次降级状态检查之间的时间间隔。
- --experimental-memory-mlock:启用以强制 etcd 页面(特别是 bbolt)保留在 RAM 中。
- --experimental-warning-apply-duration '100ms':如果请求超过此持续时间,则生成警告。
- --experimental-txn-mode-write-with-shared-buffer 'true':启用写事务在其只读检查操作中使用共享缓冲区。
- --experimental-bootstrap-defrag-threshold-megabytes:在 etcd 服务器引导期间启用碎片整 理,如果数据库文件大小超过此阈值(以 MB 为单位)。
不安全的特性:
- --force-new-cluster 'false':强制创建一个新的集群配置,从当前状态的一个成员开始。这是一个危险的操作,可能会导致数据丢失。
- --unsafe-no-fsync 'false':禁用所有后端文件系统的同步操作。这可以提高性能,但也增加了数据丢失的风险。
- --experimental-bootstrap-file '':指定一个包含引导配置的文件,这是一个实验性功能。