ETCD使用中需要注意的問題
我們在實際生產中使用ETCD存儲元數據, 起初集群規模不大的時候元數據信息不多沒有發現什么問題。 隨着集群規模越來越大問題逐漸暴露了
有些實際的配置還是需要在初始化的時候就研究確定
1. --auto-compaction-retention
由於ETCD數據存儲多版本數據,隨着寫入的主鍵增加歷史版本需要定時清理, 默認的歷史數據是不會清理的,數據達到2G就不能寫入,必須要清理壓縮歷史數據才能繼續寫入;
所以根據業務需求,在上生產環境之前就提前確定,歷史數據多長時間壓縮一次; 我們的生產環境現在升級后是默認一小時壓縮一次數據。這樣可以極大的保證集群穩定,減少內存和磁盤占用
2.--max-request-bytes
etcd Raft消息最大字節數,ETCD默認該值為1.5M; 但是很多業務場景發現同步數據的時候1.5M完全沒法滿足要求,所以提前確定初始值很重要; 由於1.5M導致我們線上的業務無法寫入元數據的問題,
我們緊急升級之后把該值修改為默認32M,但是官方推薦的是10M,大家可以根據業務情況自己調整
#最好按照官方的默認限制來儲存,單個value不要超過10M,只要不超過10M生產環境就會很穩定,一旦超過10M集群就會變的不穩定;
3.--quota-backend-bytes
ETCDdb數據大小,默認是2G,當數據達到2G的時候就不允許寫入,必須對歷史數據進行壓縮才能繼續寫入; 參加1里面說的,我們啟動的時候就應該提前確定大小,官方推薦是8G,這里我們也使用8G的配置
#啟動命令
/usr/bin/etcd --auto-compaction-retention '1' --max-request-bytes '33554432' --quota-backend-bytes '8589934592'