(二)、Zookeeper安裝

Dubbo支持多種註冊中心,但是官方建議使用Zookeeper註冊中心。

1.Zookeeper介紹

ZooKeeper是一個分佈式的,開放源碼的分佈式應用程序協調服務,是Google的Chubby一個開源的實現,是Hadoop和Hbase的重要組件。它是一個爲分佈式應用提供一致性服務的軟件,提供的功能包括:配置維護、域名服務、分佈式同步、組服務等。

ZooKeeper的目標就是封裝好複雜易出錯的關鍵服務,將簡單易用的接口和性能高效、功能穩定的系統提供給用戶。

ZooKeeper分佈式服務框架Apache Hadoop的一個子項目,主要是用來解決分佈式應用中經常遇到的一些數據管理問題。
如:集羣管理、統一服務命名、分佈式配置管理、分佈式消息隊列、分佈式鎖、分佈式通知協調等。
ZooKeeper對分佈式開發帶來很多便利,利用ZK的獨有特性巧妙地解決了很多難題,很多分佈式技術用到ZooKeeper或多或少特性,尤其是新生代分佈式技術幾乎都會依賴ZooKeeper特性,如HBase、火爆的Storm

2.Zookeeper安裝

2.1單機模式

1.下載ZooKeeper,最新是zookeeper-3.4.8.tar.gz
http://mirrors.cnnic.cn/apache/zookeeper/zookeeper-3.4.8/zookeeper-3.4.8.tar.gz
2.將下載文件解壓。找到對應的conf目錄創建zoo.cfg(或者複製zoo_sample.cfg改名爲zoo.cfg)修改對應的配置項。如下:


3.啓動ZooKeeper(配置環境變量或進入到對應的bin目錄下啓動)zkServer.cmd


4.輸入JPS查看。啓動後jps可以看到QuorumPeerMain的進程。如下:


5.啓動客戶端查看(zkCli.cmd)
啓動Server成功的日誌:


啓動Server失敗的日誌:

2.2集羣模式

1.複製三個ZooKeeper的服務,如下圖:
 
2.修改對應的conf下得Zoo.cfg文件


3.在對應的鏡像dataDir創建對應的myid值對應爲1、2、3
4.啓動ZooKeeper服務,如我這裏配置三個ZooKeeper。當三個啓動都成功後不會報錯,有服務沒有啓動報如下錯誤(這個錯誤無關緊要)。

 

2.3僞集羣分佈模式

1.複製conf下zoo.cfg
zoo4.cfg,zoo5.cfg,zoo6.cfg
內容如下:
 
2.在對應的鏡像dataDir創建對應的myid值對應爲4、5、6
3.複製三份zkEnv.cmd,修改其加載ZOO.cfg的路徑。如下:


4.複製三份zkServer.cmd,修改其加載zkEnv.cmd 的路徑。如下:


 或者:
1-2一樣,去掉第三部,直接在zkSever.cmd 中設置ZOO.cfg的加載路徑:
如下:

3.ZooKeeper配置文件說明

dataDir
用於存放內存數據庫快照的文件夾,同時用於集羣的 myid 文件也存在這個文件夾裏。
dataLogDir
用於單獨設置 transaction log 的目錄,transaction log 分離可以避免和普通 log 還有快照的競爭。
tickTime
心跳時間,爲了確保 client-server 連接存在的,以毫秒爲單位,最小超時時間爲兩個心跳時間。
clientPort
客戶端監聽端口。
globalOutstandingLimit
client 請求隊列的最大長度,防止內存溢出,默認值爲 1000。
preAllocSize
預分配的 Transaction log 空間 block 爲 proAllocSize KB,默認 block 爲 64M,一般不需要更改,除非 snapshot 過於頻繁。
snapCount
在 snapCount 個 snapshot 後寫一次 transaction log,默認值是 100,000。
traceFile
用於記錄請求的 log,打開會影響性能,用於 debug,最好不要定義。
maxClientCnxns
最大併發客戶端數,用於防止 DOS 的,默認值是 10,設置爲 0 是不加限制。
clientPortBindAddress
可以設置指定的 client ip 以及端口,不設置的話等於 ANY:clientPort
minSessionTimeout
最小的客戶端 session 超時時間,默認值爲 2 個 tickTime,單位是毫秒
maxSessionTimeout
最大的客戶端 session 超時時間,默認值爲 20 個 tickTime,單位是毫秒
electionAlg
用於選舉的實現的參數,0 爲以原始的基於 UDP 的方式協作,1 爲不進行用戶驗證的基於 UDP 的快速選舉,2 爲進行用戶驗證的基於 UDP 的快速選舉,3 爲基於 TCP 的快速選舉,
默認值爲 3。
initLimit
多少個 tickTime 內,允許其他 server 連接並初始化數據,如果 zooKeeper 管理的數據較大,則應相應增大這個值。
syncLimit
多少個 tickTime 內,允許 follower 同步,如果 follower 落後太多,則會被丟棄。
leaderServes
leader 是否接受客戶端連接。默認值爲 yes。leader 負責協調更新。當更新吞吐量遠高
於讀取吞吐量時,可以設置爲不接受客戶端連接,以便 leader 可以專注於同步協調工作。
server.x=[hostname]:nnnnn[:nnnnn]
配置集羣裏面的主機信息,其中 server.x 的 x 要寫在 myid 文件中,決定當前機器的 id,第一個 port 用於連接 leader,第二個用於 leader 選舉。如果 electionAlg 爲 0,則不需要第二
個 port。hostname 也可以填 ip。
group.x=nnnnn[:nnnnn]
分組信息,表明哪個組有哪些節點,例如 group.1=1:2:3 group.2=4:5:6 group.3=7:8:9。
weight.x=nnnnn
權重信息,表明哪個結點的權重是多少,例如 weight.1=1 weight.2=1 weight.3=1。
 
 
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章