Zookeeper 3.3.3 伺服器配置項詳細解釋
阿新 • • 發佈:2019-02-20
最小配置
- clientPort 監聽客戶端連線的埠
- dataDir 記憶體資料庫快照存放地址,如果沒有指定事務日誌存放地址(dataLogDir),預設也是存放在這個路徑下,建議兩個地址分開存放到不同的裝置上。
- tickTime 心跳基本時間單位,毫秒級,ZK基本上所有的時間都是這個時間的整數倍。
高階配置(可選,有的需要直接通過系統屬性進行設定)
- dataLogDir 將事務日誌儲存在該路徑下,比較重要,這個日誌儲存的裝置效率會影響ZK的寫吞吐量。
- globalOutstandingLimit (Java system property: zookeeper.globalOutstandingLimit
- preAllocSize (Java system property: zookeeper.preAllocSize)預設值64M,以KB為單位,預先分配額定空間用於後續transactionlog 寫入,每當剩餘空間小於4K時,就會又分配64M,如此迴圈。如果SNAP做得比較頻繁(snapCount比較小的時候),那麼請減少這個值。
- snapCount (Java system property: zookeeper.snapCount
- traceFile (Java system property: requestTraceFile)
- maxClientCnxns 預設值是10,一個客戶端能夠連線到同一個伺服器上的最大連線數,根據IP來區分。如果設定為0,表示沒有任何限制。設定該值一方面是為了防止DoS攻擊。
- clientPortAddress 與clientPort匹配,表示某個IP地址,如果伺服器有多個網路介面(多個IP地址),如果沒有設定這個屬性,則clientPort會繫結到所有IP地址上,否則只繫結到該設定的IP地址上。
- minSessionTimeout 最小的session time時間,預設值是2個tick time,客戶端設定的session time 如果小於這個值,則會被強制協調為這個最小值。
- maxSessionTimeout 最大的session time 時間,預設值是20個tick time. ,客戶端設定的session time 如果大於這個值,則會被強制協調為這個最大值。
叢集配置選項
- electionAlg 領導選舉演算法,預設是3(fast leader election,基於TCP),0表示leader選舉演算法(基於UDP),1表示非授權快速選舉演算法(基於UDP),2表示授權快速選舉演算法(基於UDP),目前1和2演算法都沒有應用,不建議使用,0演算法未來也可能會被幹掉,只保留3(fast leader election)演算法,因此最好直接使用預設就好。
- initLimit tickTime的個數,表示在leader選舉結束後,followers與leader同步需要的時間,如果followers比較多或者說leader的資料灰常多時,同步時間相應可能會增加,那麼這個值也需要相應增加。當然,這個值也是follower和observer在開始同步leader的資料時的最大等待時間(setSoTimeout)
- syncLimit tickTime的個數,這時間容易和上面的時間混淆,它也表示follower和observer與leader互動時的最大等待時間,只不過是在與leader同步完畢之後,進入正常請求轉發或ping等訊息互動時的超時時間。
- leaderServes (Java system property: zookeeper.leaderServes) 如果該值不是no,則表示該伺服器作為leader時是需要接受客戶端連線的。為了獲得更高吞吐量,當伺服器數三臺以上時一般建議設定為no。
- cnxTimeout (Java system property: zookeeper.cnxTimeout) 預設值是5000,單位ms 表示leaderelection時開啟連線的超時時間,只用在演算法3中。
不安全配置項
- skipACL (Java systemproperty: zookeeper.skipACL) 預設值是no,忽略所有ACL檢查,相當於開放了所有資料許可權給任何人。
- forceSync (Java systemproperty: zookeeper.forceSync) 預設值是yes, 表示transactionlog在commit時是否立即寫到磁碟上,如果關閉這個選項可能會在斷電時丟失資訊。
- jute.maxbuffer(Java system property: jute.maxbuffer)預設值0xfffff,單位是KB,表示節點資料最多1M。如果要設定這個值,必須要在所有伺服器上都需要設定。
授權認證配置項
- DigestAuthenticationProvider.superDigest (Java system property only:
zookeeper.DigestAuthenticationProvider.superDigest) 設定這個值是為了確定一個超級使用者,它的值格式為super:<base64encoded(SHA1(idpassword))> ,一旦當前連線addAuthInfo超級使用者驗證通過,後續所有操作都不會checkACL.