最低配置
clientPort:監聽來自客戶端連接端口,也是客戶端用於連接的端口,默認值2181
secureClientPort:監聽來自客戶端使用SSL協議進行連接的端口。clientPort使用明文進行連接,而secureClientPort使用SSL協議進行連接,兩個參數都指定時,啓用混合模式,只指定一個參數,另外一個棄用。
observerMasterPort:監聽來自觀察者連接的端口,也是觀察者用於連接Leader的端口,如果該屬性被設置,那麼服務器將在follower模式和leader模式下託管觀察者連接,並相應地嘗試在觀察者模式下連接到任何投票的對等體。默認值2191
dataDir:Zookeeper存放內存中數據快照和事務日誌的位置,事務日誌的存放目錄可以另行指定。
tickTime:Zookeeper心跳檢測最小時間,單位爲毫秒,也是會話超時最小時間。
高級配置
dataLogDir :事務日誌存放目錄,配置該屬性後事務日誌將存放到該目錄而不是dataDir(數據目錄),這也避免了數據快照與事務之間爭奪磁盤。
globalOutstandingLimit:(對應Java系統屬性: zookeeper.globalOutstandingLimit.) 客戶端提交請求的速度比ZooKeeper處理請求的速度要快,特別是在客戶端數量很多的情況下。爲了防止ZooKeeper排隊(等待處理)請求過多而造成內存溢出,ZooKeeper會限制客戶端數量,使得系統中未完成的請求數量不超過globalOutstandingLimit配置的值。默認的限制是1000。
preAllocSize : (對應Java系統屬性: zookeeper.preAllocSize)
集羣配置
加密、身份驗證、授權配置
實驗配置
非安全配置
禁用數據存儲目錄自動創建
從3.5.0開始,Zookeeper服務在啓動時如果發現配置的數據目錄不存在將自動創建該數據目錄。但是這種方式在某些場合下是不被允許的,如沒有創建目錄的權限,在某些情況下也是不安全的。比如在重啓服務時自動創建一個與之前數據目錄不一致的數據目錄,這會導致新的數據目錄中沒有舊數據目錄中的數據,在生產環境中建議關閉自動創建數據目錄。
當執行zkServer.sh腳本時,可以通過設置 ZOO_DATADIR_AUTOCREATE_DISABLE 環境變量爲1來禁用自動創建,或者在通過Zookeeper主類文件來啓動Zookeeper服務端時,可以通過追加 參數zookeeper.datadir.autocreate=false 來禁用,比如 -Dzookeeper.datadir.autocreate=false 。
但是如果設置了禁用自動創建數據目錄,那麼在啓動Zookeeper服務端時,如果數據目錄不存在將會報錯。
Zookeeper提供了一個新的腳本zkServer-initialize.sh來支持這個新特性。如果禁用了autocreate,那麼用戶必須首先安裝ZooKeeper,然後創建數據目錄(可能還有txnlog目錄),然後啓動服務器。否則,如上段所述,服務器將無法啓動。運行zkServer-initialize.sh將創建所需的目錄,並可選地設置myid文件(可選的命令行參數)。即使自動創建特性本身沒有使用,這個腳本也可以使用,並且很可能對用戶有用,因爲這(設置,包括myid文件的創建)在過去一直是用戶的一個問題。注意,這個腳本確保數據目錄只存在,它不創建配置文件,而是要求配置文件可用才能執行。
啓用數據庫存在驗證
調試可觀測性配置
AdminServer配置
3.5.0版本之後Zookeeper通過內嵌了一個Jetty服務器,來提供所有“四字命令”的HTTP接口,默認服務啓動端口是8080,可以通過以下方式來訪問“四字命令”, http://ip:port/commands/[command name],比如http://localhost:8080/commands/stat命令來查看當前Zookeeper服務端的狀態。
以下配置從3.6.0版本開始啓用
admin.portUnification : (對應Java系統屬性: zookeeper.admin.portUnification) 允許Admin服務同時使用HTTP和HTTPS協議,默認不啓用。
以下配置從3.5.0版本開始啓用
admin.enableServer : (對應Java系統屬性: zookeeper.admin.enableServer) 值設置爲"false"時不啓用AdminServer服務,默認設置爲"true"
admin.serverAddress : (對應Java系統屬性: zookeeper.admin.serverAddress)嵌入式Jetty服務器監聽的客戶端地址(就是IP白名單)。默認是"0.0.0.0" ,表示接收來自任意客戶端的訪問
admin.serverPort : (對應Java系統屬性: zookeeper.admin.serverPort) 嵌入式Jetty服務器的監聽端口。默認是 "8080"。
admin.idleTimeout : (對應Java系統屬性: zookeeper.admin.idleTimeout)設置連接在發送或接收數據之前可以等待的最大空閒時間(以毫秒爲單位)。 默認是 "30000" ms。
admin.commandURL : (對應Java系統屬性: zookeeper.admin.commandURL) 執行四字命令的URL根前綴。默認是"/commands"。