ETCD启动参数配置详解

cat  > /usr/lib/systemd/system/etcd.service <<EOF
[Unit]
Description=Etcd Server
After=network.target
After=network-online.target
Wants=network-online.target
[Service]
Type=notify
EnvironmentFile=/opt/etcd/cfg/etcd
ExecStart=/opt/etcd/bin/etcd \
--name=${ETCD_NAME} \
--data-dir=${ETCD_DATA_DIR} \
--listen-peer-urls=${ETCD_LISTEN_PEER_URLS} \
--listen-client-urls=${ETCD_LISTEN_CLIENT_URLS},http://127.0.0.1:2379 \
--advertise-client-urls=${ETCD_ADVERTISE_CLIENT_URLS} \
--initial-advertise-peer-urls=${ETCD_INITIAL_ADVERTISE_PEER_URLS} \
--initial-cluster=${ETCD_INITIAL_CLUSTER} \
--initial-cluster-token=${ETCD_INITIAL_CLUSTER_TOKEN} \
--initial-cluster-state=new \
--cert-file=/opt/etcd/ssl/server.pem \
--key-file=/opt/etcd/ssl/server-key.pem \
--peer-cert-file=/opt/etcd/ssl/server.pem \
--peer-key-file=/opt/etcd/ssl/server-key.pem \
--trusted-ca-file=/opt/etcd/ssl/ca.pem \
--peer-trusted-ca-file=/opt/etcd/ssl/ca.pem
Restart=on-failure
OFF
可以通过配置文件,各种命令行标志和环境变量来配置etcd。

可重用的配置文件是YAML文件,其名称和值由一个或多个下面描述的命令行标志组成。为了使用此文件,请将文件路径指定为--config-file标志或ETCD_CONFIG_FILE环境变量的值。的示例配置文件可以被用作起始点根据需要创建一个新的配置文件。

在命令行上设置的选项优先于环境中的选项。如果提供了配置文件,则其他命令行标志和环境变量将被忽略。例如,etcd --config-file etcd.conf.yml.sample --data-dir /tmp将忽略该--data-dir标志。

标志的环境变量的格式--my-flagETCD_MY_FLAG。它适用于所有标志。

官员ETCD端口是2379的客户端请求和2380对等通信。可以将etcd端口设置为接受TLS流量,非TLS流量,或同时接受TLS和非TLS流量。

要在Linux启动时使用自定义设置自动启动etcd,强烈建议使用systemd单元。

会员标志

- 名称

  • 此成员的可读名称。
  • 默认值:“默认”
  • 环境变量:ETCD_NAME
  • 该值被引用为--initial-cluster标志(例如default=http://localhost:2380)中列出的该节点自己的条目。如果使用静态引导程序,则需要与标志中使用的键匹配。使用发现时,每个成员必须具有唯一的名称。Hostnamemachine-id可能是一个不错的选择。

--data-dir

  • 数据目录的路径。
  • 默认值:“ $ {name} .etcd”
  • 环境变量:ETCD_DATA_DIR

--wal-dir

  • 专用wal目录的路径。如果设置了此标志,etcd会将WAL文件写入walDir而不是dataDir。这允许使用专用磁盘,并有助于避免日志记录和其他IO操作之间的io竞争。
  • 默认值:“”
  • env变量:ETCD_WAL_DIR

-快照数量

  • 触发快照到磁盘的已提交事务数。
  • 默认值:“ 100000”
  • 环境变量:ETCD_SNAPSHOT_COUNT

-心跳间隔

  • 心跳间隔的时间(以毫秒为单位)。
  • 默认值:“ 100”
  • 环境变量:ETCD_HEARTBEAT_INTERVAL

-选举超时

  • 选举超时的时间(以毫秒为单位)。有关详细信息,请参见Documentation / tuning.md
  • 默认值:“ 1000”
  • 环境变量:ETCD_ELECTION_TIMEOUT

--listen-peer-urls

  • 侦听对等流量的URL列表。该标志告诉etcd在指定的scheme:// IP:port组合上接受来自其对等方的传入请求。方案可以是http或https。或者,对UNIX套接字使用unix://<file-path>unixs://<file-path>。如果将0.0.0.0指定为IP,则etcd侦听所有接口上的给定端口。如果提供了IP地址和端口,则etcd将侦听给定的端口和接口。可以使用多个URL来指定要侦听的地址和端口的数量。etcd将响应来自任何列出的地址和端口的请求。
  • 默认值:“ http:// localhost:2380 ”
  • 环境变量:ETCD_LISTEN_PEER_URLS
  • 例如:“ http://10.0.0.1:2380 ”
  • 无效的示例:“ http://example.com:2380 ”(域名对于绑定无效)

--listen-client-urls

  • 侦听客户端流量的URL列表。该标志告诉etcd在指定的scheme:// IP:port组合上接受来自客户端的传入请求。方案可以是http或https。或者,对UNIX套接字使用unix://<file-path>unixs://<file-path>。如果将0.0.0.0指定为IP,则etcd侦听所有接口上的给定端口。如果提供了IP地址和端口,则etcd将侦听给定的端口和接口。可以使用多个URL来指定要侦听的地址和端口的数量。etcd将响应来自任何列出的地址和端口的请求。
  • 默认值:“ http:// localhost:2379 ”
  • 环境变量:ETCD_LISTEN_CLIENT_URLS
  • 例如:“ http://10.0.0.1:2379 ”
  • 无效的示例:“ http://example.com:2379 ”(域名对于绑定无效)

-最大快照

  • 保留的快照文件最大数量(0为无限)
  • 默认值:5
  • 环境变量:ETCD_MAX_SNAPSHOTS
  • Windows用户的默认设置是无限制的,建议手动清除到5(或出于安全性的考虑)。

-最大薪水

  • 保留的wal文件最大数量(0为无限)
  • 默认值:5
  • 环境变量:ETCD_MAX_WALS
  • Windows用户的默认设置是无限制的,建议手动清除到5(或出于安全性的考虑)。

--cors

  • 以逗号分隔的CORS来源白名单(跨来源资源共享)。
  • 默认值:“”
  • 环境变量:ETCD_CORS

--quota-backend-bytes

  • 后端大小超过给定配额时引发警报(0默认为低空间配额)。
  • 默认值:0
  • 环境变量:ETCD_QUOTA_BACKEND_BYTES

--backend-batch-limit

  • BackendBatchLimit是提交后端事务之前的最大操作。
  • 默认值:0
  • 环境变量:ETCD_BACKEND_BATCH_LIMIT

--backend-bbolt-freelist-type

  • etcd后端(bboltdb)使用的自由列表类型(支持数组和映射的类型)。
  • 默认值:地图
  • 环境变量:ETCD_BACKEND_BBOLT_FREELIST_TYPE

--backend-batch-interval

  • BackendBatchInterval是提交后端事务之前的最长时间。
  • 默认值:0
  • 环境变量:ETCD_BACKEND_BATCH_INTERVAL

--max-txn-ops

  • 交易中允许的最大操作数。
  • 默认值:128
  • 环境变量:ETCD_MAX_TXN_OPS

--max-request-bytes

  • 服务器将接受的最大客户端请求大小(以字节为单位)。
  • 默认值:1572864
  • 环境变量:ETCD_MAX_REQUEST_BYTES

--grpc-keepalive-min-time

  • 客户端在ping服务器之前应等待的最小持续时间间隔。
  • 默认值:5秒
  • 环境变量:ETCD_GRPC_KEEPALIVE_MIN_TIME

--grpc-keepalive-interval

  • 服务器到客户端ping的频率持续时间,以检查连接是否有效(0禁用)。
  • 默认值:2h
  • 环境变量:ETCD_GRPC_KEEPALIVE_INTERVAL

--grpc-keepalive-timeout

  • 关闭无响应的连接之前的额外等待时间(0禁用)。
  • 默认值:20秒
  • 环境变量:ETCD_GRPC_KEEPALIVE_TIMEOUT

聚类标志

--initial-advertise-peer-urls--initial-cluster--initial-cluster-state,和--initial-cluster-token标志在自举(使用静态自举发现服务引导运行时重新配置)的一个新成员,和重新启动的现有成员时忽略。

--discovery使用发现服务时,需要设置前缀标志。

--initial-advertise-peer-urls

  • 此成员的对等URL的列表,以通告到集群的其余部分。这些地址用于在集群周围传递etcd数据。所有集群成员必须至少有一个路由。这些URL可以包含域名。
  • 默认值:“ http:// localhost:2380 ”
  • 环境变量:ETCD_INITIAL_ADVERTISE_PEER_URLS
  • 例如: “ http://example.com:2380http://10.0.0.1:2380 ”

--initial-cluster

  • 用于引导的初始群集配置。
  • 默认值:“默认值= http:// localhost:2380 ”
  • 环境变量:ETCD_INITIAL_CLUSTER
  • 密钥是所--name提供的每个节点的标志值。默认值default用于密钥,因为这是--name标志的默认值。

--initial-cluster-state

  • 初始群集状态(“新”或“现有”)。new对于初始静态或DNS引导过程中存在的所有成员,设置为。如果将此选项设置为existing,则etcd将尝试加入现有集群。如果设置了错误的值,则etcd将尝试启动但安全失败。
  • 默认值:“新”
  • 环境变量:ETCD_INITIAL_CLUSTER_STATE

--initial-cluster-token

  • 引导期间etcd群集的初始群集令牌。
  • 默认值:“ etcd-cluster”
  • 环境变量:ETCD_INITIAL_CLUSTER_TOKEN

--advertise-client-urls

- 发现

  • 用于引导群集的发现URL。
  • 默认值:“”
  • 环境变量:ETCD_DISCOVERY

--discovery-srv

  • 用于引导群集的DNS srv域。
  • 默认值:“”
  • 环境变量:ETCD_DISCOVERY_SRV

--discovery-srv-name

  • 使用DNS引导时查询的DNS srv名称的后缀。
  • 默认值:“”
  • 环境变量:ETCD_DISCOVERY_SRV_NAME

-发现后备

  • 发现服务失败时的预期行为(“退出”或“代理”)。“代理”仅支持v2 API。
  • 默认值:“代理”
  • 环境变量:ETCD_DISCOVERY_FALLBACK

-发现代理

  • HTTP代理,用于发现服务的流量。
  • 默认值:“”
  • 环境变量:ETCD_DISCOVERY_PROXY

--strict-reconfig-check

  • 拒绝可能导致仲裁丢失的重新配置请求。
  • 默认值:true
  • 环境变量:ETCD_STRICT_RECONFIG_CHECK

-自动压缩保留

  • mvcc密钥值存储的自动压缩保留时间(小时)。0表示禁用自动压缩。
  • 默认值:0
  • 环境变量:ETCD_AUTO_COMPACTION_RETENTION

-自动压缩模式

  • Interpret 'auto-compaction-retention' one of: 'periodic', 'revision'. 'periodic' for duration based retention, defaulting to hours if no time unit is provided (e.g. '5m'). 'revision' for revision number based retention.
  • default: periodic
  • env variable: ETCD_AUTO_COMPACTION_MODE

--enable-v2

  • Accept etcd V2 client requests
  • default: false
  • env variable: ETCD_ENABLE_V2

Proxy flags

--proxy prefix flags configures etcd to run in proxy mode. "proxy" supports v2 API only.

--proxy

  • Proxy mode setting ("off", "readonly" or "on").
  • default: "off"
  • env variable: ETCD_PROXY

--proxy-failure-wait

  • Time (in milliseconds) an endpoint will be held in a failed state before being reconsidered for proxied requests.
  • default: 5000
  • env variable: ETCD_PROXY_FAILURE_WAIT

--proxy-refresh-interval

  • Time (in milliseconds) of the endpoints refresh interval.
  • default: 30000
  • env variable: ETCD_PROXY_REFRESH_INTERVAL

--proxy-dial-timeout

  • Time (in milliseconds) for a dial to timeout or 0 to disable the timeout
  • default: 1000
  • env variable: ETCD_PROXY_DIAL_TIMEOUT

--proxy-write-timeout

  • Time (in milliseconds) for a write to timeout or 0 to disable the timeout.
  • default: 5000
  • env variable: ETCD_PROXY_WRITE_TIMEOUT

--proxy-read-timeout

  • Time (in milliseconds) for a read to timeout or 0 to disable the timeout.
  • Don't change this value if using watches because use long polling requests.
  • default: 0
  • env variable: ETCD_PROXY_READ_TIMEOUT

Security flags

The security flags help to build a secure etcd cluster.

--ca-file

DEPRECATED

  • Path to the client server TLS CA file. --ca-file ca.crt could be replaced by --trusted-ca-file ca.crt --client-cert-auth and etcd will perform the same.
  • default: ""
  • env variable: ETCD_CA_FILE

--cert-file

  • Path to the client server TLS cert file.
  • default: ""
  • env variable: ETCD_CERT_FILE

--key-file

  • Path to the client server TLS key file.
  • default: ""
  • env variable: ETCD_KEY_FILE

--client-cert-auth

  • Enable client cert authentication.
  • default: false
  • env variable: ETCD_CLIENT_CERT_AUTH
  • CN authentication is not supported by gRPC-gateway.

--client-crl-file

  • Path to the client certificate revocation list file.
  • default: ""
  • env variable: ETCD_CLIENT_CRL_FILE

--client-cert-allowed-hostname

  • Allowed Allowed TLS name for client cert authentication.
  • default: ""
  • env variable: ETCD_CLIENT_CERT_ALLOWED_HOSTNAME

--trusted-ca-file

  • Path to the client server TLS trusted CA cert file.
  • default: ""
  • env variable: ETCD_TRUSTED_CA_FILE

--auto-tls

  • Client TLS using generated certificates
  • default: false
  • env variable: ETCD_AUTO_TLS

--peer-ca-file

DEPRECATED

  • Path to the peer server TLS CA file. --peer-ca-file ca.crt could be replaced by --peer-trusted-ca-file ca.crt --peer-client-cert-auth and etcd will perform the same.
  • default: ""
  • env variable: ETCD_PEER_CA_FILE

--peer-cert-file

  • Path to the peer server TLS cert file. This is the cert for peer-to-peer traffic, used both for server and client.
  • default: ""
  • env variable: ETCD_PEER_CERT_FILE

--peer-key-file

  • Path to the peer server TLS key file. This is the key for peer-to-peer traffic, used both for server and client.
  • default: ""
  • env variable: ETCD_PEER_KEY_FILE

--peer-client-cert-auth

  • Enable peer client cert authentication.
  • default: false
  • env variable: ETCD_PEER_CLIENT_CERT_AUTH

--peer-crl-file

  • Path to the peer certificate revocation list file.
  • default: ""
  • env variable: ETCD_PEER_CRL_FILE

--peer-trusted-ca-file

  • Path to the peer server TLS trusted CA file.
  • default: ""
  • env variable: ETCD_PEER_TRUSTED_CA_FILE

--peer-auto-tls

  • Peer TLS using generated certificates
  • default: false
  • env variable: ETCD_PEER_AUTO_TLS

--peer-cert-allowed-cn

  • Allowed CommonName for inter peer authentication.
  • default: ""
  • env variable: ETCD_PEER_CERT_ALLOWED_CN

--peer-cert-allowed-hostname

  • Allowed TLS certificate name for inter peer authentication.
  • default: ""
  • env variable: ETCD_PEER_CERT_ALLOWED_HOSTNAME

--cipher-suites

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

Logging flags

--logger

Available from v3.4. WARNING: --logger=capnslog to be deprecated in v3.5.

  • Specify 'zap' for structured logging or 'capnslog'.
  • default: capnslog
  • env variable: ETCD_LOGGER

--log-outputs

  • Specify 'stdout' or 'stderr' to skip journald logging even when running under systemd, or list of comma separated output targets.
  • default: default
  • env variable: ETCD_LOG_OUTPUTS
  • 'default' use 'stderr' config for v3.4 during zap logger migraion

--log-level

Available from v3.4.

  • Configures log level. Only supports debug, info, warn, error, panic, or fatal.
  • default: info
  • env variable: ETCD_LOG_LEVEL
  • 'default' use 'info'.

--debug

WARNING: to be deprecated in v3.5.

  • Drop the default log level to DEBUG for all subpackages.
  • default: false (INFO for all packages)
  • env variable: ETCD_DEBUG

--log-package-levels

WARNING: to be deprecated in v3.5.

  • Set individual etcd subpackages to specific log levels. An example being etcdserver=WARNING,security=DEBUG
  • default: "" (INFO for all packages)
  • env variable: ETCD_LOG_PACKAGE_LEVELS

Unsafe flags

Please be CAUTIOUS when using unsafe flags because it will break the guarantees given by the consensus protocol. For example, it may panic if other members in the cluster are still alive. Follow the instructions when using these flags.

--force-new-cluster

  • Force to create a new one-member cluster. It commits configuration changes forcing to remove all existing members in the cluster and add itself, but is strongly discouraged. Please review the disaster recovery documentation for preferred v3 recovery procedures.
  • default: false
  • env variable: ETCD_FORCE_NEW_CLUSTER

Miscellaneous flags

--version

  • Print the version and exit.
  • default: false

--config-file

  • Load server configuration from a file. Note that if a configuration file is provided, other command line flags and environment variables will be ignored.
  • default: ""
  • example: sample configuration file
  • env variable: ETCD_CONFIG_FILE

Profiling flags

--enable-pprof

  • Enable runtime profiling data via HTTP server. Address is at client URL + "/debug/pprof/"
  • default: false
  • env variable: ETCD_ENABLE_PPROF

--metrics

  • Set level of detail for exported metrics, specify 'extensive' to include server side grpc histogram metrics.
  • default: basic
  • env variable: ETCD_METRICS

--listen-metrics-urls

  • List of additional URLs to listen on that will respond to both the /metrics and /health endpoints
  • default: ""
  • env variable: ETCD_LISTEN_METRICS_URLS

Auth flags

--auth-token

  • Specify a token type and token specific options, especially for JWT. Its format is "type,var1=val1,var2=val2,...". Possible type is 'simple' or 'jwt'. Possible variables are 'sign-method' for specifying a sign method of jwt (its possible values are 'ES256', 'ES384', 'ES512', 'HS256', 'HS384', 'HS512', 'RS256', 'RS384', 'RS512', 'PS256', 'PS384', or 'PS512'), 'pub-key' for specifying a path to a public key for verifying jwt, 'priv-key' for specifying a path to a private key for signing jwt, and 'ttl' for specifying TTL of jwt tokens.
  • For asymmetric algorithms ('RS', 'PS', 'ES'), the public key is optional, as the private key contains enough information to both sign and verify tokens.
  • Example option of JWT: '--auth-token jwt,pub-key=app.rsa.pub,priv-key=app.rsa,sign-method=RS512,ttl=10m'
  • default: "simple"
  • env variable: ETCD_AUTH_TOKEN

--bcrypt-cost

  • Specify the cost / strength of the bcrypt algorithm for hashing auth passwords. Valid values are between 4 and 31.
  • default: 10
  • env variable: (not supported)

--auth-token-ttl

  • Time (in seconds) of the auth-token-ttl. Support --auth-token=simple model only.
  • default: 300
  • env variable: (not supported)

Experimental flags

--experimental-corrupt-check-time

  • Duration of time between cluster corruption check passes
  • default: 0s
  • env variable: ETCD_EXPERIMENTAL_CORRUPT_CHECK_TIME

--experimental-compaction-batch-limit

  • 设置每个压缩批处理中删除的最大修订。
  • 默认值:1000
  • 环境变量:ETCD_EXPERIMENTAL_COMPACTION_BATCH_LIMIT

--experimental-peer-skip-client-san-verification

  • 跳过客户端证书中对等连接的SAN字段验证。例如,如果群集成员在NAT后面的不同网络中运行,这可能会有所帮助。

    在这种情况下,请务必使用采用基于私有证书颁发机构等证书--peer-cert-file--peer-key-file--peer-trusted-ca-file

  • 默认值:false

  • 环境变量:ETCD_EXPERIMENTAL_PEER_SKIP_CLIENT_SAN_VERIFICATION

 

posted @ 2021-02-06 17:44  星火撩原  阅读(1911)  评论(0编辑  收藏  举报