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
- default: 0
- env variable: ETCD_QUOTA_BACKEND_BYTES
- 当后端大小超过给定的配额时发出报警
- 如果键空间的任何成员的后端数据库超过了空间配额, etcd 发起集群范围的警告,让集群进入维护模式,仅接收键的读取和删除。在键空间释放足够的空间之后,警告可以被解除,而集群将恢复正常运作。
- 详细信息: https://doc.zhnytech.com/etcd/documentation/op-guide/maintenance.html
- 详细信息: https://www.cnblogs.com/davygeek/p/8951999.html
--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:2380, http://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:2379, http://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
- 本文固定链接: http://www.jiagou.cc/622/
- 转载请注明: 摘星怪 于 架构迷 发表