1. 程式人生 > >Zookeeper 3.3.3 伺服器配置項詳細解釋

Zookeeper 3.3.3 伺服器配置項詳細解釋

最小配置

  •   clientPort 監聽客戶端連線的埠
  •  dataDir 記憶體資料庫快照存放地址,如果沒有指定事務日誌存放地址(dataLogDir),預設也是存放在這個路徑下,建議兩個地址分開存放到不同的裝置上。
  •  tickTime 心跳基本時間單位,毫秒級,ZK基本上所有的時間都是這個時間的整數倍。

高階配置(可選,有的需要直接通過系統屬性進行設定)

  •   dataLogDir 將事務日誌儲存在該路徑下,比較重要,這個日誌儲存的裝置效率會影響ZK的寫吞吐量。
  • globalOutstandingLimit (Java system property: zookeeper.globalOutstandingLimit
    )預設值是1000,限定了所有連線到伺服器上但是還沒有返回響應的請求個數(所有客戶端請求的總數,不是連線總數),這個引數是針對單臺伺服器而言,設定太大可能會導致記憶體溢位。
  • preAllocSize (Java system property: zookeeper.preAllocSize)預設值64M,以KB為單位,預先分配額定空間用於後續transactionlog 寫入,每當剩餘空間小於4K時,就會又分配64M,如此迴圈。如果SNAP做得比較頻繁(snapCount比較小的時候),那麼請減少這個值。
  •   snapCount (Java system property: zookeeper.snapCount
    )預設值100,000,當transaction每達到snapCount/2+rand.nextInt(snapCount/2)時,就做一次SNAPSHOT,預設情況下是50,000~100,000條transactionlog就會做一次,之所以用隨機數是為了避免所有伺服器可能在同一時間做snapshot.
  •  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.