1. 程式人生 > >Zookeeper學習筆記十二之 網路配置與叢集配置

Zookeeper學習筆記十二之 網路配置與叢集配置

網路配置

這些配置引數可以限制伺服器和客戶端之間的通訊

zookeeper.globalOutstandingLimit:

ZooKeeper中待處理請求的最大值,ZooKeeper客戶端提交請求比ZooKeeper伺服器處理請求要快很多,服務端將會對接收到的請求佇列化,最終可能導致服務端的記憶體溢位。為了防止發生這個問題,ZooKeeper服務端中如果待處理請求達到globalOutstandingLimit值就會限制客戶端的請求。但是並不是硬限制,因為每個客戶端至少有一個待處理請求,否則會導致客戶端超時,因此,當達到限制值後,服務端還是會繼續接收客戶端連線中的請求,條件時這個客戶端在伺服器中沒有任何待處理的請求。預設值為1000。

maxClientCnxns:

允許每個IP地址的併發socket連線的最大數量,預設值為60個併發連線

clientPortAddress:

限制客戶端連線到指定的接收資訊的地址上。預設情況下,一個zookeeper伺服器會監聽在所有的網路介面地址上等待客戶端的連線。有些伺服器配置了多個網路介面,其中一個網路介面用於內網通訊,另一個網路介面用於公網通訊,如果你並不希望伺服器在公網介面接受客戶端的連線,只需要設定clientPortAddress選項為內網介面的地址。

minSessionTimeout:

最小會話超時時間,單位為毫秒。當客戶端建立一個連線後就會請求一個明確的超時值,而客戶端實際獲得的超時值不會低於minSessionTimeout值。minSessionTimeout的預設值為tickTime(基本配置有tickTime說明)值的兩倍。

maxSessionTimeout:

會話的最大超時時間值,單位為毫秒。當客戶端建立一個連線後就會請求一個明確的超時值。而客戶端實際獲得的超時值不會高於maxSessionTimeout的值。預設情況下maxSessionTimeout的時間為tickTime的20倍。

叢集配置

當以一個叢集來構建ZooKeeper服務時,我們需要為每臺伺服器配置正確的時間和伺服器列表資訊,以便伺服器之間可以互相建立連線並進行故障監測,在ZooKeeper的叢集中,這些引數必須配置一致

initLimit:

對於追隨者最初連線到群首時的超時值,單位為tick值的倍數

當某個追隨者最初與群首建立時它們之間連線會傳輸相當多的資料,尤其時追隨者落後整體很多時。配置initLimit引數值取決於群首與追隨者之間的網路傳輸速度情況,以及傳輸的資料量大小,如果zookeeper中儲存的資料量特別大或者網路非常緩慢,就需要增大initLimit值,因為該值取決於環境問題,所以沒有預設值

syncLimit:

對於追隨者與群首進行sync操作時的超時值,單位為tick值的倍數。追隨者總是會稍稍落後於群首,但是如果因為伺服器負載或網路問題,就會導致追隨者落後群首太多,甚至需要放棄該追隨者,如果群首與追隨者無法進行sync操作,而且超過了syncLimit的tick時間,就會放棄該追隨者。syncLimit也沒有預設值,依賴於網路的延遲和吞吐量。在高延遲的網路中,資料傳送和接收響應會耗費更多時間,此時需要提高syncLimit值。如果某些相對較大的事務傳輸給追隨者需要一定的時間,也需要提高syncLimit值

zookeeper.leaderServes:

配置值為"yes"或"no"標誌,指示群首伺服器是否為客戶端提供服務。擔任群首的ZooKeeper伺服器需要做很多工作,它需要與所有追隨者進行通訊並會執行所有的變更操作,也就意味著群首的負載會比追隨者的負載高,如果群首過載,整個系統可能都會受到影響。

該標識位如果設定為"no",就可以使群首除去服務端連線的負擔,提高系統狀態變更操作的吞吐能力。預設情況下配置值為"yes"。

server.x=[hostname]:n:n[:observer]

伺服器x的配置引數。ZooKeeper伺服器需要知道它們如何通訊,配置檔案中該形式的配置項就指定了伺服器x的配置資訊,其中x為伺服器的ID值(整數)。當一個伺服器啟動後,就會讀取data目錄下myid檔案中的值,之後伺服器就會使用這個值作為查詢server.x項,通過該項中的資料配置伺服器自己。如果需要連線到另一個伺服器y,就會使用server.y項的配置資訊來與這個伺服器進行通訊。其中hosetname為伺服器在網路n中的名稱,同時後面跟了兩個tcp的埠號,第一個埠用於事務的傳送,第二個埠用於群首選舉,典型的埠號配置為2888:3888。如果最後一個欄位標識了observer屬性,伺服器就會進入觀察者模式。

zookeeper.cnxTimeout:

在群首選舉開啟一個新的連線的超時值,ZooKeeper伺服器在進行群首選舉時互相之間會建立連線,該選項值確定了一個伺服器在進行重試前會等待連線成功建立的時間為多久。預設的超時時間為5秒。