一. 基本配置:
clientPort: 客戶端連接的服務器所監聽的tcp端口,默認2181
?dataDir:內存數據庫保存的數據路徑。myid也存放在這個目錄下,數據以異步方式寫入。
?dataLogDir:事務日志存放路徑。服務在確認一個事務前必須將數據順序同步到相關log,同步寫入(io影響)。
?tickTime: 使用的基本時間單位,默認值為3000毫秒。客戶端最小會話超時時間為tickTime的兩倍。更低的配置可以更快發現超時問題,但也會導致更高的網絡流量(心跳消息)和cpu使用率。集群模式下,leader會每隔tick/2的時間向follower發送ping消息。
skipACL=yes #跳過acl認證
?
二. 存儲配置:?
?preAllocSize: 寫入事務日志文件的預分配空間大小。默認64MB,理論上事務日志永遠不會達到這么大,因為每次快照后都會重新啟動一個新的事務日志(eg: 每1000個事務進行一次快照,每個事務平均100字節,那么只需要設置preallocSize為100kB即可),默認根據snapCount的值和平均事務超過512字節設置的。
?snapCount: 指定每次快照之間的事務數,默認為:100000,為避免集群所有服務器同時快照影響性能,每次事務會在接近snapCount值的隨機數進行快照。如果事務數已經達到,但前一個快照正在進行,新的快照會等到下一個snapCount數量的事務后開啟一個新的快照。
?autopurge.snapRetainCount: zk在自動清理數據時,需要保留的快照數據文件數量和對應的事務日志文件數,默認為3(最小值為3,如果比3小,會自動調整為3).
?sutopurge.purgeInterval: 對快照和日志文件進行垃圾回收操作時間間隔小時數,默認為0,不會自動執行。需要通過zkCleanup.sh手動運行。
?weight.x=n: ?集群模式下,某個服務器節點對投票權重值,對應leader選舉和原子廣播協議中。默認為1。
?traceFile: 持續跟蹤zk的操作,并將操作記錄到跟蹤日志中,日志命名為:trace.File.year.month.day。開啟后會消耗cpu和磁盤性能。
三. 網絡配置:?
?globalOutstandingLimit: zk等待處理請求(請求堆積/排隊數)的最大值。防止資源耗盡,超出后限制客戶端請求,默認為1000。
?maxClientCnxns: ?允許每個IP地址的兵法socket連接的最大數。限流。超出拒絕連接。默認為60 ,總限制數為:60 * 集群節點數。
?clientPortAddress: zk監聽的網絡接口地址,默認為所有(如只允許內網ip訪問)。
?minSessionTimeout: ?最小會話超時時間(單位:毫秒),默認為tickTime的2倍,配置過低可能會導致錯誤的客戶端故障檢測,配置過高會延遲故障檢測時間。如果客戶端設置的超時時間不在該范圍內,那么會被服務端強制設置為2倍。
?maxSessionTimeout: 最大會話超時時間(單位:毫秒), 默認為tickTime的20倍。如果客戶端設置的超時時間不在該范圍內,那么會被服務端強制設置為20倍.
?fsync.warningthresholdms: 當事務性日志中的fsync花費的時間超過此值時,就會向該日志輸出警告消息。默認為1000(單位毫秒)。
?syncEnabled: 觀察者現在像參與者一樣默認記錄事務并將快照寫入磁盤。減少了重新啟動時觀察者的恢復時間。默認為true,可禁止false
四. 集群配置:?
?initLimit: ?leader服務器等待Follower啟動,并完成數據同步的時間(單位為tickTime的倍數)。取決于數據的大小和帶寬。默認為10(網上參考,官網未找到說明) 。
?syncLimit: 對于follower與leader進行sync操作時的超時時間(單位為tickTime的倍數,依賴于網絡吞吐量)。當超出時間,leader會放棄相關follower。高延遲網絡環境中協議調高。默認為5(網上參考)。
?leaderServers: 用于配置leader服務器是否能夠接受客戶端的連接,即是否允許leader向客戶端提供服務。在zk的架構設計中,leader服務器主要用來進行事務更新請求的協調以及集群本身的運行時協調,因此,可以設置為no,讓leader服務器不接受客戶端的連接,以使其專注于進行分布式協調。默認為yes
?server.x = hostname:n:n[:observer] : ?服務器x當配置參數。x為服務id,hostname為主機名,第一個n為事務發送的tcp端口,第二個n為leader選舉的tcp端口。如果最后一個字段標記了observer,即為"觀察者" 服務節點。
?cnxTimeout: 在leader選舉過程中,各服務器之間進行TCP連接創建的超時時間。默認為5s。
?electionAlg: leader選舉算法配置(3.4.0之后已棄用,忽略)。
?ipReachableTimeout: 當一個server的hostname不是IP地址時, 且DNS服務或者hosts表里這個名字后面掛著多個ip地址時,zk會默認使用名字解析出來的第一個IP地址, 而不檢查這個IP是否可達, 當這個值設置大于0時,將嘗試獲取第一個可訪問的IP地址,如果找不到可達的IP地址,則將使用主機名的第一個IP地址。
reconfigEnabled:? ? #開啟動態配置變更功能(集群擴縮容通過recofnig方式而無需重啟舊節點,3.5引用)
standaloneEnabled: # 是否集群模式(3.5引用)
dynamicConfigFile: #動態節點配置文件(3.5引用)
tcpKeepAlive: 為true時,集群中server之間用來選舉的TCP連接就會被置為長連接,默認為false
? --------------------------------------------------------------------------------------------------------------------------
? ? ? ? ? ? ? ? ? ? ? ? ?深耕運維行業多年,擅長運維體系建設,方案落地。歡迎交流!
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?“V-x”: ywjw996
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?《 運維經緯 》