原文地址:Configuration flags
etcd通過配置文件,多命令行參數和環境變量進行配置,
可重用的配置文件是YAML文件,其名稱和值由一個或多個下面描述的命令行標志組成。為了使用此文件,請將文件路徑指定為--config-file
標志或ETCD_CONFIG_FILE
環境變量的值。如果需要的話配置文件示例可以作為入口點創建新的配置文件。
在命令行上設置的選項優先於環境中的選項。 如果提供了配置文件,則其他命令行標志和環境變量將被忽略。例如,etcd --config-file etcd.conf.yml.sample --data-dir /tmp
將會忽略--data-dir
參數。
參數--my-flag
的環境變量的格式為ETCD_MY_FLAG
.它適用於所有參數。
客戶端請求官方的etcd端口為2379,2380是節點通信端口。可以將etcd端口設置為接受TLS流量,非TLS流量,或同時接受TLS和非TLS流量。
要在Linux啟動時使用自定義設置自動啟動etcd,強烈建議使用systemd單元。
成員標記
--name
- 人類可讀的該成員的名字
- 默認值:"default"
- 環境變量:ETCD_NAME
- 該值被該節點吃的
--initial-cluster
參數引用(例如default=http://localhost:2380
).如果使用靜態引導程序,則需要與標志中使用的鍵匹配。當使用發現服務時,每一個成員需要有唯一的名字。Hostname
或者machine-id
是好的選擇。
--data-dir
- 數據目錄的路徑
- 默認值:"${name}.etcd"
- 環境變量:ETCD_DATA_DIR
--wal-dir
- 專用的wal目錄的路徑。如果這個參數被設置,etcd將會寫WAL文件到walDir而不是dataDir,允許使用專用磁盤,並有助於避免日志記錄和其他IO操作之間的io競爭。
- 默認值:""
- 環境變量:ETCD_WAL_DIR
--snapshot-count
- 觸發一個快照到磁盤的已提交交易的數量
- 默認值:"100000"
- 環境變量:ETCD_SNAPSHOP_COUNT
--heartbeat-interval
- 心跳間隔(毫秒為單位)
- 默認值:"100"
- 環境變量:ETCD_HEARTBEAT_INTERVAL
--election-timeout
- 選舉超時時間(毫秒為單位),從文檔/tuning.md發現更多細節
- 默認值:"1000"
- 環境變量:ETCD_ELECTION_TIMEOUT
--listen-peer-urls
- 監聽在對等節點流量上的URL列表,該參數告訴etcd在指定的協議://IP:port組合上接受來自其對等方的傳入請求。協議可以是http或者https。或者,使用
unix://<file-path>
或者unixs://<file-path>
到unix sockets。如果將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在指定的協議://IP:port組合上接受來自客戶端的傳入請求。協議可以是http或者https。或者,使用
unix://<file-path>
或者unixs://<file-path>
到unix sockets。如果將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"(綁定的域名是無效的)
--max-snapshots
- 保留的快照文件最大數量(0為無限)
- 默認值:5
- 環境變量:ETCD_MAX_SNAPSHOTS
- Windows用戶的默認設置是無限制的,建議手動設置到5(或出於安全性的考慮)。
--max-wals
- 保留的wal文件最大數量(0為無限)
- 默認值:5
- 環境變量:ETCD_MAX_WALS
- Windows用戶的默認設置是無限制的,建議手動設置到5(或出於安全性的考慮)。
--cors
- 以逗號分隔的CORS來源白名單(跨來源資源共享)。
- 默認值:""
- 環境變量:ETCD_CORS
--quota-backent-bytes
- 后端大小超過給定配額時引發警報(0默認為低空間配額)。
- 默認值:0
- 環境變量:ETCD_QUOTA_BACKEND_BYTES
--backend-batch-limit
- BackendBatchLimit是提交后端事務之前的最大數量的操作。
- 默認值:0
- 環境變量:ETCD_BACKEND_BATCH_LIMIT
--backend-bbolt-freelist-type
- etcd后端(bboltdb)使用的自由列表類型(支持數組和映射的類型)。
- 默認值:map
- 環境變量: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服務器之前應等待的最小持續時間間隔。
- 默認值:5s
- 環境變量:ETCD_GRPC_KEEPALIVE_MIN_TIME
--grpc-keepalive-interval
- 服務器到客戶端ping的頻率持續時間,以檢查連接是否有效(0禁用)。
- 默認值:2h
- 環境變量:ETCD_GRPC_KEEPALIVE_INTERVAL
--grpc-keepalive-timeout
- 關閉無響應的連接之前的額外等待時間(0禁用)。
- 默認值:20s
- 環境變量: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:2380, http://10.0.0.1:2380"
--initial-cluster
- 啟動集群的初始化配置
- 默認值:"default=http://localhost:2380"
- 環境變量:ETCD_INITIAL_CLUSTER
- 關鍵是所提供的每個節點的
--name
參數的值。 默認值使用default
作為密鑰,因為這是--name
參數的默認值。
--initial-cluster-state
- 初始群集狀態(“新”或“現有”)。 對於在初始靜態或DNS引導過程中存在的所有成員,將其設置為
new
。 如果此選項設置為existing
,則etcd將嘗試加入現存集群。 如果設置了錯誤的值,etcd將嘗試啟動,但會安全地失敗。 - 默認值:"new:
- 環境變量:ETCD_INITIAL_CLUSTER_STATE
--initial-cluster-token
- 引導期間etcd群集的初始集群令牌。
- 默認值:"etcd-cluster"
- 環境變量:ETCD_INITIAL_CLUSTER_TOKEN
--advertise-client-urls
- 此成員的客戶端URL的列表,這些URL廣播給集群的其余部分。 這些URL可以包含域名。
- 默認值:http://localhost:2379
- 環境變量:ETCD_ADVERTISE_CLIENT_URLS
- 示例:"http://example.com:2379, http://10.0.0.1:2379"
- 如果從集群成員中發布諸如http://localhost:2379之類的URL並使用etcd的代理功能,請小心。這將導致循環,因為代理將向其自身轉發請求,直到其資源(內存,文件描述符)最終耗盡為止。
--discovery
- 發現URL用於引導啟動集群
- 默認值:""
- 環境變量:ETCD_DISCOVERY
--discovery-srv
- 用於引導集群的DNS srv域。
- 默認值:""
- 環境變量:ETCD_DISCOVERY_SRV
--discovery-srv-name
- 使用DNS引導時查詢的DNS srv名稱的后綴。
- 默認值:""
- 環境變量:ETCD_DISCOVERY_SRV_NAME
--discovery-fallback
- 發現服務失敗時的預期行為(“退出”或“代理”)。“代理”僅支持v2 API。
- 默認值: "proxy"
- 環境變量:ETCD_DISCOVERY_FALLBACK
--discovery-proxy
- HTTP代理,用於發現服務的流量。
- 默認值:""
- 環境變量:ETCD_DISCOVERY_PROXY
--strict-reconfig-check
- 拒絕可能導致quorum丟失的重新配置請求。
- 默認值:true
- 環境變量:ETCD_STRICT_RECONFIG_CHECK
--auto-compaction-retention
- mvcc密鑰值存儲的自動壓縮保留時間(小時)。 0表示禁用自動壓縮。
- 默認值:0
- 環境變量:ETCD_AUTO_COMPACTION_RETENTION
--auto-compaction-mode
- 解釋“自動壓縮保留”之一:“定期”,“修訂”。 基於期限的保留的“定期”,如果未提供時間單位(例如“ 5m”),則默認為小時。 “修訂”用於基於修訂號的保留。
- 默認值:periodic
- 環境變量:ETCD_AUTO_COMPACTION_MODE
--enable-v2
- 接受etcd V2客戶端請求
- 默認值:false
- 環境變量:ETCD_ENABLE_V2
代理參數
--proxy前綴標志將etcd配置為以代理模式運行。 “代理”僅支持v2 API。
--proxy
- 代理模式設置(”off","readonly"或者"on")
- 默認值:"off"
- 環境變量:ETCD_PROXY
--proxy-failure-wait
- 在重新考慮端點請求之前,端點將保持故障狀態的時間(以毫秒為單位)。
- 默認值:5000
- 環境變量:ETCD_PROXY_FAILURE_WAIT
--proxy-refresh-interval
- 節點刷新間隔的時間(以毫秒為單位)。
- 默認值:30000
- 環境變量:ETCD_PROXY_REFRESH_INTERVAL
--proxy-dial-timeout
- 撥號超時的時間(以毫秒為單位),或0以禁用超時
- 默認值:1000
- 環境變量:ETCD_PROXY_DIAL_TIMEOUT
--proxy-write-timeout
- 寫入超時的時間(以毫秒為單位)或禁用超時的時間為0。
- 默認值:5000
- 環境變量:ETCD_PROXY_WRITE_TIMEOUT
--proxy-read-timeout
- 讀取超時的時間(以毫秒為單位),或者為0以禁用超時。
- 如果使用Watch,請勿更改此值,因為會使用較長的輪詢請求。
- 默認值:0
- 環境變量:ETCD_PROXY_READ_TIMEOUT
安全參數
安全參數有助於構建一個安全的etcd集群
--ca-file
DEPRECATED
- 客戶端服務器TLS CA文件的路徑。
--ca-file ca.crt
可以替換為--trusted-ca-file ca.crt --client-cert-auth
,而etcd將執行相同的操作。 - 默認值:""
- 環境變量:ETCD_CA_FILE
--cert-file
- 客戶端服務器TLS證書文件的路徑
- 默認值:""
- 環境變量:ETCD_CERT_FILE
--key-file
- 客戶端服務器TLS秘鑰文件的路徑
- 默認值:""
- 環境變量:ETCD_KEY_FILE
--client-cert-auth
- 開啟客戶端證書認證
- 默認值:false
- 環境變量:ETCD_CLIENT_CERT_AUTH
- CN 權限認證不支持gRPC-網關
--client-crl-file
- 客戶端被撤銷的TLS證書文件的路徑
- 默認值:""
- 環境變量:ETCD_CLIENT_CERT_ALLOWED_HOSTNAME
--client-cert-allowed-hostname
- 允許客戶端證書身份驗證的TLS名稱。
- 默認值:""
- 環境變量:ETCD_CLIENT_CERT_ALLOWED_HOSTNAME
--trusted-ca-file
- 客戶端服務器受信任的TLS CA證書文件的路徑
- 默認值:""
- 環境變量:ETCD_TRUSTED_CA_FILE
--auto-tls
- 客戶端TLS使用自動生成的證書
- 默認值:false
- 環境變量:ETCD_AUTO_TLS
--peer-ca-file
已淘汰
- 節點TLS CA文件的路徑.
--peer-ca-file
可以替換為--peer-trusted-ca-file ca.crt --peer-client-cert-auth
,而etcd將執行相同的操作。 - 默認值:”“
- 環境變量:ETCD_PEER_CA_FILE
--peer-cert-file
- 對等服務器TLS證書文件的路徑。 這是對等節點通信證書,在服務器和客戶端都可以使用。
- 默認值:""
- 環境變量:ETCD_PEER_CERT_FILE
--peer-key-file
- 對等服務器TLS秘鑰文件的路徑。 這是對等節點通信秘鑰,在服務器和客戶端都可以使用。
- 默認值:""
- 環境變量:ETCD_PEER_KEY_FILE
--peer-client-cert-auth
- 啟動節點客戶端證書認證
- 默認值:false
- 環境變量:ETCD_PEER_CLIENT_CERT_AUTH
--peer-crl-file
- 節點被撤銷的TLS證書文件的路徑
- 默認值:""
- 環境變量:ETCD_PEER_CRL_FILE
--peer-trusted-ca-file
- 節點受信任的TLS CA證書文件的路徑
- 默認值:""
- 環境變量:ETCD_PEER_TRUSTED_CA_FILE
--peer-auto-tls
- 節點使用自動生成的證書
- 默認值:false
- 環境變量:ETCD_PEER_AUTO_TLS
--peer-cert-allowed-cn
- 允許使用CommonName進行對等身份驗證。
- 默認值:""
- 環境變量:ETCD_PEER_CERT_ALLOWED_CN
--peer-cert-allowed-hostname
- 允許的TLS證書名稱用於對等身份驗證。
- 默認值:""
- 環境變量:ETCD_PEER_CERT_ALLOWED_HOSTNAME
--cipher-suites
- 以逗號分隔的服務器/客戶端和對等方之間受支持的TLS密碼套件列表。
- 默認值:""
- 環境變量:ETCD_CIPHER_SUITES
日志參數
--logger
v3.4可以使用,警告:--logger=capnslog
在v3.5被拋棄使用
- 指定“ zap”用於結構化日志記錄或“ capnslog”。
- 默認值:capnslog
- 環境變量:ETCD_LOGGER
--log-outputs
- 指定“ stdout”或“ stderr”以跳過日志記錄,即使在systemd或逗號分隔的輸出目標列表下運行時也是如此。
- 默認值:defalut
- 環境變量:ETCD_LOG_OUTPUTS
default
在zap logger遷移期間對v3.4使用stderr
配置
--log-level
v3.4可以使用
- 配置日志等級,僅支持
debug,info,warn,error,panic,fatal
- 默認值:info
- 環境變量:ETCD_LOG_LEVEL
default
使用info
.
--debug
警告:在v3.5被拋棄使用
- 將所有子程序包的默認日志級別降為DEBUG。
- 默認值:false(所有的包使用INFO)
- 環境變量:ETCD_DEBUG
--log-package-levels
警告:在v3.5被拋棄使用
- 將各個etcd子軟件包設置為特定的日志級別。 一個例子是
etcdserver = WARNING,security = DEBUG
- 默認值:""(所有的包使用INFO)
- 環境變量:ETCD_LOG_PACKAGE_LEVELS
風險參數
使用不安全標志時請小心,因為它將破壞共識協議提供的保證。 例如,如果群集中的其他成員仍然存在,可能會panic
。 使用這些標志時,請遵循說明。
--force-new-cluster
- 強制創建一個新的單成員群集。 它提交配置更改,以強制刪除群集中的所有現有成員並添加自身,但是強烈建議不要這樣做。 請查看災難恢復文檔以了解首選的v3恢復過程。
- 默認值:false
- 環境變量:ETCD_FORCE_NEW_CLUSTER
雜項參數
--version
- 打印版本並退出
- 默認值:false
--config-file
- 從文件加載服務器配置。 請注意,如果提供了配置文件,則其他命令行標志和環境變量將被忽略。
- 默認值:""
- 示例:配置文件示例
- 環境變量:ETCD_CONFIG_FILE
分析參數
--enable-pprof
- 通過HTTP服務器啟用運行時分析數據。地址位於客戶端
URL+“/debug/pprof/”
- 默認值:false
- 環境變量:ETCD_ENABLE_PPROF
--metrics
- 設置導出指標的詳細程度,specify 'extensive' to include server side grpc histogram metrics.
- 默認值:basic
- 環境變量:ETCD_METRICS
--listen-metrics-urls
- 可以響應
/metrics
和/health
端點的其他URL列表 - 默認值:""
- 環境變量:ETCD_LISTEN_METRICS_URLS
權限參數
--auth-token
- 指定令牌類型和特定於令牌的選項,特別是對於JWT,格式為
type,var1=val1,var2=val2,...
,可能的類型是simple
或者jwt
.對於具體的簽名方法jwt可能的變量為sign-method
(可能的值為'ES256', 'ES384', 'ES512', 'HS256', 'HS384', 'HS512', 'RS256', 'RS384', 'RS512', 'PS256', 'PS384','PS512'
) - 對於非對稱算法(“ RS”,“ PS”,“ ES”),公鑰是可選的,因為私鑰包含足夠的信息來簽名和驗證令牌。
pub-key
用於指定用於驗證jwt的公鑰的路徑,priv-key
用於指定用於對jwt進行簽名的私鑰的路徑,ttl
用於指定jwt令牌的TTL。 - JWT的示例選項:
-auth-token jwt,pub-key=app.rsa.pub,privkey=app.rsasign-method = RS512,ttl = 10m
- 默認值:"simple"
- 環境變量:ETCD_AUTH_TOKEN
--bcrypt-cost
- 指定用於哈希認證密碼的bcrypt算法的成本/強度。 有效值在4到31之間。
- 默認值:10
- 環境變量:(不支持)
實驗參數
--experimental-corrupt-check-time
- 群集損壞檢查通過之間的時間間隔
- 默認值:0s
- 環境變量: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