目錄
- 成員相關配置項
- --name
- --data-dir
- --wal-dir
- --snapshot-count
- --heartbeat-interval
- --election-timeout
- --listen-peer-urls
- --listen-client-urls
- --max-snapshots
- --max-wals
- --cors
- --quota-backend-bytes
- --backend-batch-limit
- --backend-batch-interval
- --max-txn-ops
- --max-request-bytes
- --grpc-keepalive-min-time
- --grpc-keepalive-interval
- --grpc-keepalive-timeout
- 集群配置
- 代理
- 安全
- 日志配置
- 非安全配置
- 其他配置
- 性能配置
- 認證配置
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