首页 > 首页 > 应用服务 > 分布式协调 > Etcd > Etcd学习笔记02:配置参数详解
2024
05-20

Etcd学习笔记02:配置参数详解

etcd可以通过配置文件、命令行参数和环境变量进行配置,配置文件使用YAML语法编写。使用配置文件可以通过 --config-file或者ETCD_CONFIG_FILE环境变量指定,命令行参数优先级高于环境变量中的选项,如果提供了配置文件,命令行参数和环境变量将被忽略。

成员相关配置项

--name

  • 节点名称
  • default: "default"
  • env variable: ETCD_NAME
  • 这个值和--initial-cluster flag (e.g., default=http://localhost:2380)中的key值一一对应,如果在集群环境中,name必须是唯一的,建议用主机名称或者机器ID。

--data-dir

  • 数据存储目录
  • default: "${name}.etcd"
  • env variable: ETCD_DATA_DIR

--wal-dir

  • default: ""
  • env variable: ETCD_WAL_DIR
  • 存放预写式日志,最大的作用是记录了整个数据变化的全部历程。未设置,共用--data-dir文件所在目录。可以配置路径为专用磁盘,有助于避免日志记录和其他io操作之间的io竞争

--snapshot-count

  • default: "100000"
  • env variable: ETCD_SNAPSHOT_COUNT
  • 数据快照触发数量,etcd处理指定的次数的事务提交后,生成数据快照

--heartbeat-interval

  • default: "100"
  • env variable: ETCD_HEARTBEAT_INTERVAL
  • 客户端连接后的心跳间隔(毫秒)

--election-timeout

  • default: "1000"
  • env variable: ETCD_ELECTION_TIMEOUT
  • 集群选举的超时时间

--listen-peer-urls

  • default: "http://localhost:2380"
  • env variable: ETCD_LISTEN_PEER_URLS
  • example: "http://10.0.0.1:2380"
  • invalid example: "http://example.com:2380" (domain name is invalid for binding)
  • 本节点与其他节点进行数据交换(选举,数据同步)的监听地址,地址写法是 scheme://IP:port,可以多个并用逗号隔开,如果配置是http://0.0.0.0:2380,将不限制node访问地址

--listen-client-urls

  • default: "http://localhost:2379"
  • env variable: ETCD_LISTEN_CLIENT_URLS
  • example: "http://10.0.0.1:2379"
  • invalid example: "http://example.com:2379" (domain name is invalid for binding)
  • 监听地址,地址写法是 scheme://IP:port,可以多个并用逗号隔开,如果配置是http://0.0.0.0:2379,将不限制node访问地址

--max-snapshots

  • default: 5
  • env variable: ETCD_MAX_SNAPSHOTS
  • 要保留的快照文件的最大数量,0是无限制。Windows用户的默认值是无限制的,建议设置5以下的值。

--max-wals

  • default: 5
  • env variable: ETCD_MAX_WALS
  • 要保留的wal文件的最大数量,0是无限制。Windows用户的默认值是无限制的,建议设置5以下的值。

--cors

  • default: ""
  • env variable: ETCD_CORS
  • Comma-separated white list of origins for CORS (cross-origin resource sharing).

--quota-backend-bytes

--backend-batch-limit

  • default: 0
  • env variable: ETCD_BACKEND_BATCH_LIMIT
  • 提交后端实物之前的最大操作

--backend-batch-interval

  • default: 0
  • env variable: ETCD_BACKEND_BATCH_INTERVAL
  • 提交后端事物之前的最长时间

--max-txn-ops

  • default: 128
  • env variable: ETCD_MAX_TXN_OPS
  • 事物中允许的最大操作数

--max-request-bytes

  • default: 1572864
  • env variable: ETCD_MAX_REQUEST_BYTES
  • 服务器可以接受的客户端请求大小

--grpc-keepalive-min-time

  • default: 5s
  • env variable: ETCD_GRPC_KEEPALIVE_MIN_TIME
  • 客户端在ping服务器之前最少要等待多久

--grpc-keepalive-interval

  • default: 2h
  • env variable: ETCD_GRPC_KEEPALIVE_INTERVAL
  • 服务器ping客户端的频率,检查连接是否处于活动状态(0表示禁用)

--grpc-keepalive-timeout

  • default: 20s
  • env variable: ETCD_GRPC_KEEPALIVE_TIMEOUT
  • 关闭非响应连接之前额外等待时间(0表示禁用)

集群配置

--initial-advertise-peer-urls

  • default: "http://localhost:2380"
  • env variable: ETCD_INITIAL_ADVERTISE_PEER_URLS
  • example: "http://example.com:2380http://10.0.0.1:2380"
  • 通知其他节点与本节点进行数据交换(选举,同步)的地址,URL可以使用domain地址。
  • 与--listener-peer-urls不同在于listener-peer-urls用于请求客户端的接入控制,initial-advertise-peer-urls是告知其他集群节点访问哪个URL,一般来说,initial-advertise-peer-urlsl将是istener-peer-urls的子集

--initial-cluster

  • 用于引导初始集群配置,集群中所有节点的信息。
  • default: "default=http://localhost:2380"
  • env variable: ETCD_INITIAL_CLUSTER
  • 此处default为节点的--name指定的名字;localhost:2380为--initial-advertise-peer-urls指定的值。

--initial-cluster-state

  • 初始集群状态,设置new为初始静态或DNS引导期间出现的所有成员。如果将此选项设置为existing,则etcd将尝试加入现有群集。
  • default: "new"
  • env variable: ETCD_INITIAL_CLUSTER_STATE

--initial-cluster-token

  • 集群唯一标识,相同标识的节点将视为在一个集群内
  • default: "etcd-cluster"
  • env variable: ETCD_INITIAL_CLUSTER_TOKEN

--advertise-client-urls

  • 用于通知其他ETCD节点,客户端接入本节点的监听地址,一般来说advertise-client-urls是listen-client-urls子集,这些URL可以包含域名。
  • default: "http://localhost:2379"
  • env variable: ETCD_ADVERTISE_CLIENT_URLS
  • example: "http://example.com:2379http://10.0.0.1:2379"
  • 注意,不能写http://localhost:237,这样就是通知其他节点,可以用localhost访问,将导致ectd的客户端用localhost访问本地,导致访问不通。还有一个更可怕情况,ectd布置了代理层,代理层将一直通过locahost访问自己的代理接口,导致无限循环。

--discovery

  • 集群发现服务地址
  • default: none
  • env variable: ETCD_DISCOVERY_SRV

--discovery-srv

  • 用于引导集群的DNS sry域
  • default: ""
  • env variable: ETCD_DISCOVERY_SRV

--discovery-srv-name

  • 使用DNS引导时查询的DNS srv名称的后缀
  • default: ""
  • env variable: ETCD_DISCOVERY_SRV_NAME

--discovery-fallback

  • 发现服务失败时的预期行为(“退出”或“代理”)。“proxy”仅支持v2 API
  • default: "proxy"
  • env variable: ETCD_DISCOVERY_FALLBACK

--discovery-proxy

  • 用于流量到发现服务的HTTP代理
  • default: ""
  • env variable: ETCD_DISCOVERY_PROXY

--strict-reconfig-check

  • 拒绝可能导致仲裁丢失的重新配置请求。
  • default: true
  • env variable: ETCD_STRICT_RECONFIG_CHECK

--auto-compaction-retention

  • 在一个小时内为mvcc键值存储的自动压实保留。0表示禁用自动压缩
  • default: 0
  • env variable: ETCD_AUTO_COMPACTION_RETENTION

--auto-compaction-mode

  • 说明--auto-compaction-retention配置的基于时间保留的三种模式:periodic, revision. periodic
  • default: periodic
  • env variable: ETCD_AUTO_COMPACTION_MODE

--enable-v2

  • 接受etcd V2客户端请求
  • default: true
  • env variable: ETCD_ENABLE_V2

代理

--proxy配置etcd以在代理模式下运行,“proxy”仅支持v2 API。

--proxy

  • 代理模式设置,("off", "readonly" or "on")
  • default: "off"
  • env variable: ETCD_PROXY

--proxy-failure-wait

  • 在重新考虑代理请求之前,endpoints 将处于失败状态的时间(以毫秒为单位)
  • default: 5000
  • env variable: ETCD_PROXY_FAILURE_WAIT

--proxy-refresh-interval

  • endpoints 刷新间隔的时间(以毫秒为单位)
  • default: 30000
  • env variable: ETCD_PROXY_REFRESH_INTERVAL

--proxy-dial-timeout

  • 拨号超时的时间(以毫秒为单位)或0表示禁用超时
  • default: 1000
  • env variable: ETCD_PROXY_DIAL_TIMEOUT

--proxy-write-timeout

  • 写入超时的时间(以毫秒为单位)或0以禁用超时
  • default: 5000
  • env variable: ETCD_PROXY_WRITE_TIMEOUT

--proxy-read-timeout

  • 读取超时的时间(以毫秒为单位)或0以禁用超时。
  • 如果使用watch,不要改变这个值,因为使用长轮询请求
  • default: 0
  • env variable: ETCD_PROXY_READ_TIMEOUT

安全

--ca-file

  • 已弃用,可以替换为--trusted-ca-file ca.crt、--client-cert-auth,etcd将执行相同的操作
  • default: ""
  • env variable: ETCD_CA_FILE

--cert-file

  • 客户端服务器TLS证书文件的路径。
  • default: ""
  • env variable: ETCD_CERT_FILE

--key-file

  • 客户端服务器TLS密钥文件的路径
  • default: ""
  • env variable: ETCD_KEY_FILE

--client-cert-auth

  • 启用客户端证书验证。
  • default: false
  • env variable: ETCD_CLIENT_CERT_AUTH
  • grpc-gateway不支持CN身份验证

--client-crl-file

  • 客户端证书吊销列表文件的路径
  • default: ""
  • env variable: ETCD_CLIENT_CRL_FILE

--trusted-ca-file

  • 客户端服务器的路径TLS可信CA证书文件
  • default: ""
  • env variable: ETCD_TRUSTED_CA_FILE

--auto-tls

  • 客户端TLS使用生成的证书
  • default: false
  • env variable: ETCD_AUTO_TLS

--peer-ca-file

  • 已弃用,可以替换为--peer-trusted-ca-file ca.crt --peer-client-cert-auth,etcd将执行相同的操作。
  • default: ""
  • env variable: ETCD_PEER_CA_FILE

--peer-cert-file

  • 对等服务器TLS证书文件的路径。这是对等流量的证书,用于服务器和客户端。
  • default: ""
  • env variable: ETCD_PEER_CERT_FILE

--peer-key-file

  • 对等服务器TLS密钥文件的路径。这是对等流量的关键,用于服务器和客户端。
  • default: ""
  • env variable: ETCD_PEER_KEY_FILE

--peer-client-cert-auth

  • 启用对等客户端证书验证
  • default: false
  • env variable: ETCD_PEER_CLIENT_CERT_AUTH

--peer-crl-file

  • 对等证书吊销列表文件的路径。
  • default: ""
  • env variable: ETCD_PEER_CRL_FILE

--peer-trusted-ca-file

  • 对等服务器TLS可信CA文件的路径
  • default: ""
  • env variable: ETCD_PEER_TRUSTED_CA_FILE

--peer-auto-tls

  • Peer TLS使用自动生成的证书
  • default: false
  • env variable: ETCD_PEER_AUTO_TLS

--peer-cert-allowed-cn

  • 允许CommonName进行对等体认证
  • default: none
  • env variable: ETCD_PEER_CERT_ALLOWED_CN

--cipher-suites

  • Comma-separated list of supported TLS cipher suites between server/client and peers.
  • default: ""
  • env variable: ETCD_CIPHER_SUITES

日志配置

--logger

  • 为结构化日志记录指定'zap'或'capnslog'。
  • default: capnslog
  • env variable: ETCD_LOGGER

--log-outputs

  • 指定'stdout'或'stderr'以跳过日志记录,即使在systemd或逗号分隔的输出目标列表下运行也是如此。
  • default: default
  • env variable: ETCD_LOG_OUTPUTS
  • 在zap日志程序迁移期间,默认使用v3.4的“stderr”配置

--debug

  • 将所有子包的默认日志级别设置为DEBUG。
  • default: false (INFO for all packages)
  • env variable: ETCD_DEBUG

--log-package-levels

  • 将单个etcd子包设置为特定的日志级别。一个例子是etcdserver=WARNING,security=DEBUG
  • default: "" (INFO for all packages)
  • env variable: ETCD_LOG_PACKAGE_LEVELS

非安全配置

--force-new-cluster

  • 强制创建新的单成员群集。它提交配置更改,强制删除集群中的所有现有成员并添加自身。需要将其设置为还原备份。
  • default: false
  • env variable: ETCD_FORCE_NEW_CLUSTER

其他配置

--version

  • Print the version and exit.
  • default: false

--config-file

  • 从文件中加载服务器配置。注意如果提供了配置文件,其他命令行参数和环境变量将被忽略
  • default: ""
  • example: sample configuration file
  • env variable: ETCD_CONFIG_FILE

性能配置

--enable-pprof

  • 通过HTTP服务器启用运行时分析数据。地址位于客户端URL +“/ debug / pprof /”
  • default: false
  • env variable: ETCD_ENABLE_PPROF

--metrics

  • 设置导出的指标的详细程度,指定“扩展”以包括直方图指标。
  • default: basic
  • env variable: ETCD_METRICS

--listen-metrics-urls

  • 要监听的其他URL列表将响应端点/metrics和/health端点
  • default: ""
  • env variable: ETCD_LISTEN_METRICS_URLS

认证配置

--auth-token

  • default: "simple"
  • env variable: ETCD_AUTH_TOKEN

--bcrypt-cost

  • 为散列身份验证密码指定bcrypt算法的成本/强度。有效值介于4和31之间。
  • default: 10
  • env variable: (not supported)

参考
https://www.cnblogs.com/lowezheng/p/10307592.html
https://github.com/etcd-io/etcd/blob/master/Documentation/op-guide/configuration.md
https://www.cnblogs.com/itzgr/p/9920910.html#_label1_1

最后编辑:
作者:摘星怪
这个作者貌似有点懒,什么都没有留下。

留下一个回复

你的email不会被公开。