ZooKeeper學習第三期---zookeeper經常使用配置

基本配置

clientPort 該參數無默認值,必須配置,不支持系統屬性方式配置。參數clientPort用於配置當前服務器對外的服務器端口,客戶端會經過該端口和Zookeeper服務器建立鏈接,通常設置爲2181。每臺Zookeeper服務器均可以配置任意可用的端口,同時,集羣中的全部服務器不須要保持clientPort端口一致。
dataDir 該參數無默認值,必須配置,不支持系統屬性方式配置。參數dataDir用於配置Zookeeper服務器存儲快照文件的目錄。默認狀況下,若是沒有配置參數dataLogDir,那麼事務日誌也會存儲在這個目錄中。考慮到事務日誌的寫性能直接影響Zookeeper總體的服務能力,所以建議同時經過參數dataLogDir來配置Zookeeper事務日誌的存儲目錄。
tickTime

該參數有默認值:3000,單位是毫秒(ms),能夠不配置,不支持系統屬性方式配置。參數tickTime用於配置Zookeeper中最小事件單元的長度,不少運行時的時間間隔都是使用tickTime的倍數來表示的。例如,Zookeeper中會話的最小超時時間默認是2*tickTime.java

高級配置

dataLogDir 該參數有默認值:dataDir,能夠不配置,不支持系統屬性方式配置。參數dataLogDir用於配置Zookeeper服務器存儲事務日誌文件的目錄。默認狀況下,Zookeeper會將事務日誌文件和快照數據存儲在同一個目錄中,使用者應儘可能將這二者的目錄區分開來。另外,若是條件容許,能夠將事務日誌的存儲配置在一個單獨的磁盤上。事務日誌記錄對於磁盤的性能要求很是高,爲了保證數據的一致性,Zookeeper在返回客戶端事務請求響應以前,必須將本次請求對應的事務日誌寫入到磁盤中。所以事務日誌寫入的性能直接決定了Zookeeper在處理事務請求時的吞吐。針對同一塊磁盤的其餘併發讀寫操做(例如Zookeeper運行時日誌輸出和操做系統自身的讀寫等),尤爲是數據快照操做,會極大的影響事務日誌的寫性能。所以儘可能給事務日誌的輸出配置一個單獨的磁盤或是掛載點,將極大地提高Zookeeper的總體性能
initLimit 該參數有默認值:10,即表示是參數tickTime值的10倍,必須配置,且須要配置一個正整數,不支持系統屬性方式配置。該參數用於配置Leader服務器等待Follower啓動,並完成數據同步的時間。Follower服務器在啓動過程當中,會與Leader創建鏈接並完成對數據的同步,從而肯定本身對外提供服務的起始狀態。一般狀況下,運維人員不用太在乎這個參數的配置,使用期默認值便可。但若是隨着Zookeeper集羣管理的數據量增大,Follower服務器在啓動的時候,從Leader上進行同步數據的時間也會相應變長,因而沒法在較短的時間完成數據同步。所以,在這種狀況下,有必要適當調大這個參數。
syncLimit 該參數有默認值:5,即表示是參數tickTime值的5倍,必須配置,且須要配置一個正整數,不支持系統屬性當時配置。該參數用於配置Leader服務器和Follower之間進行心跳檢測的最大延時事件。在Zookeeper集羣運行過程當中,Leader服務器會與全部的Follower進行心跳檢測來肯定該服務器是否存活。若是Leader服務器在syncLimit時間內沒法獲取到Follower的心跳檢測響應,那麼Leader就會認爲該Follower已經脫離了和本身的同步。一般狀況下,運維人員使用該參數的默認值便可,但若是部署Zookeeper集羣的網絡環境質量較低(例如網絡延時較大或丟包嚴重),那麼能夠適當調大這個參數。
snapCount 該參數有默認值:100000,能夠不配置,僅支持系統屬性方式配置:zookeeper.snapCount。參數snapCount用於配置相鄰兩次數據快照之間的事務操做次數,即Zookeeper會在snapCount次事務操做以後進行一次數據快照。
preAllocSize 該參數有默認值:65536,單位是KB,即64MB,能夠不配置,僅支持系統屬性方式配置:zookeeper.preAllocSize。參數preAlloSize用於配置Zookeeper事務日誌文件預分配的磁盤空間大小。一般狀況下,咱們使用Zookeeper的默認配置65536KB便可,可是若是咱們將參數snapCount設置得比默認值更小或更大,那麼preAllocSize參數也要隨之作出變動。舉例來講:若是咱們將snapCount的值設置爲500,同時預估每次事務操做的數據量大小至多1KB,那麼參數preAllocSize設置爲500就足夠了。
minSessionTimeout/maxSessionTimeout 這兩個參數有默認值,分別是參數tickTime值的2倍和20倍,即默認的會話超時時間在2tickTime~20tickTime範圍內,單位毫秒,能夠不配置,不支持系統屬性方式配置。這兩個參數用於服務端對客戶端會話的超時時間進行限制,若是客戶端設置的超時事件再也不該範圍內,那麼會被服務端強制設置爲最大或最小超時時間
maxClientCnxns 該參數有默認值:60,能夠不配置,不支持系統屬性方式配置。從Socket層面限制單個客戶端與單臺服務器之間的併發鏈接數,即以IP地址粒度來進行鏈接數的限制。若是將該參數設置爲0,則表示對鏈接數不作任何限制。須要注意該鏈接數限制選項的適用範圍,其僅僅是對單臺客戶端機器與單臺Zookeeper服務器之間的鏈接數限制,並不能控制全部客戶端的鏈接數總和。另外,在3.4.0版本之前該參數的默認值都是10,從3.4.0版本開始變成了60,所以運維人員尤爲須要注意這個變化,以防Zookeeper版本變化帶來服務器鏈接數限制變化的隱患。
jute.maxbuffer 該參數有默認值:1048575,單位是字節,能夠不配置,僅支持系統屬性方式配置:jute.maxbuffer。該參數用於配置單個數據節點(ZNode)上能夠存儲的最大數據量大小。一般狀況下,運維人員不須要改動該參數,同時考慮到Zookeeper上不適宜存儲太多的數據,每每還須要將該參數設置得更小。須要注意的是,在變動該參數的時候,須要在Zookeeper集羣的全部機器以及全部的客戶端上均設置才能生效。
clientPortAddress 該參數沒有默認值:能夠不配置,不支持系統屬性方式配置。針對那些多網卡的機器,該參數容許爲每一個IP地址制定不一樣的監聽端口。
server.id=host:port:port 該參數沒有默認值,在單機模式下能夠不配置,不支持系統屬性方式配置。該參數用於配置組成Zookeeper集羣的及其列表,其中id即爲ServerID,與每臺服務器myid文件中的數字相對應。同時,在該參數中,會配置兩個端口:第一個端口用於指定Follower服務器與Leader進行運行時通訊和數據同步時所使用的端口,第二個端口則專門用於進行Leader選舉過程當中的投票通訊。在Zookeeper服務器啓動的時候,其會根據myid文件中配置的ServerID來肯定本身是哪臺服務器,並使用對應配置的端口來進行啓動。若是在實際使用過程當中,須要在同一臺服務器上部署多個Zookeeper實例來構成僞集羣的話,那麼這些端口都須要配製成不一樣。例如 server.1=192.168.0.1:2777:3777server.1=192.168.0.1:2888:3888server.1=192.168.0.1:2999:3999
autopurge.snapRetainCount 該參數有默認值:3,能夠不配置,不支持系統屬性方式配置。從3.4.0版本開始,Zookeeper提供了對歷史事務日誌和快照數據自動清理的支持。參數autopurge.snapRetainCount用於配置Zookeeper在自動清理的時候須要保留的快照數據文件數量和對應的事務日誌萬能鍵。須要注意的是,並非磁盤上的全部事務日誌和快照數據文件均可以被清理掉–那樣的話將沒法恢復數據。所以參數autopurge.snapRetainCount的最小值是3,若是配置的autopurge.snapRetainCount值小於3的話,那麼會被自動調整到3,即至少須要保留3個快照數據文件和對應的事務日誌文件
autopurge.purgeInteval 該參數有默認值:0,單位是小時,能夠不配置,不支持系統屬性方式配置。參數autopurge.purgeInterval和參數autopurge.snapRetainCount配套使用,用於配置Zookeeper進行歷史文件自動清理的頻率。若是配置該值爲0或者負數,那麼就代表不須要開啓定時清理功能。Zookeeper默認不開啓這項功能。
fsync.warningthresholdms 該參數有默認值:1000,單位是毫秒,能夠不配置,僅支持系統屬性方式配置:fsync.warningthresholdms。參數fsync.warningthresholdms用於配置Zookeeper進行事務日誌fsync操做時消耗時間的報警閾值。一旦進行一個fsync操做消耗的事件大於參數fsync.warningthresholdms指定的值,那麼就在日誌中打印出報警日誌。
forceSync 該參數有默認值:yes,能夠不配置,可選配置項爲yesno,僅支持系統屬性方式配置:zookeeper.forceSync。該參數用於配置Zookeeper服務器是否在事務提交的時候,將日誌寫入操做強制刷入磁盤(即調用java.nio.channels.FileChannel.force接口),默認狀況下是yes,即每次事務日誌寫入操做都會實時刷入磁盤。若是將其設置爲no。則能必定程度的提升Zookeeper的寫性能,但同事也會存在相似於機器斷電這樣的安全風險。
globalOutstandingLimit 該參數有默認值:1000,能夠不配置,僅支持系統屬性方式配置:zookeeper.globalOutstandingLimit。參數globalOutstandingLimit用於配置Zookeeper服務器最大請求堆積數量。在Zookeeper服務器運行的過程當中,客戶端會源源不斷的將請求發送到服務端,爲了防止服務端資源(包括CPU,內存和網絡等)耗盡,服務端必須限制同時處理的請求數,即最大請求堆積數量。
leaderServes 該參數有默認值:yes,能夠不配置,可選配置項爲yesno,僅支持系統屬性方式配置:zookeeper.leaderServes。該參數用於配置Leader服務器是否可以接受客戶端的鏈接,便是否容許Leader向客戶端提供服務,默認狀況下,Leader服務器可以接受並處理客戶端的全部讀寫請求。在Zookeeper的架構設計中,Leader服務器主要用來進行對事務更新請求的協調以及集羣自己的運行時協調,所以,能夠設置讓Leader服務器不接受客戶端的鏈接,以使其專一於進行分佈式協調。
SkipAcl 該參數有默認值:no,能夠不配置,可選配置項爲yesno,僅支持系統屬性方式配置:zookeeper.skipACL。該參數用於配置Zookeeper服務器是否跳過ACL權限檢查,默認狀況下是no,即會對每個客戶端請求進行權限檢查。若是將其設置爲yes,則能必定程度的提升Zookeeper的讀寫性能,但同時也會向全部客戶端開放Zookeeper的數據,包括那些以前設置過ACL權限的數據節點,也將再也不接收權限控制。
xncTimeout 該參數有默認值:5000,單位是毫秒,能夠不配置,僅支持系統屬性方式配置:zookeeper.cnxTimeout。該參數用於配置在Leader選舉過程當中,各服務器之間進行TCP鏈接建立的超時時間。
electionAlg 在以前的版本中,可使用該參數來配置選擇Zookeeper進行Leader選舉時所使用的算法,但從3.4.0版本開始,Zookeeper廢棄了其餘選舉算法,只留下了FastLeaderElection算法,所以該參數目前看來沒有用了。
相關文章
相關標籤/搜索