[轉載請注明作者和 原文鏈接 , ?如有謬誤, 歡迎在評論中指正. ]?
Zookeeper的安裝和配置十分簡單, 既可以配置成單機模式, 也可以配置成集群模式. 下面將分別進行介紹.
單機模式
點擊這里 下載zookeeper的安裝包之后, 解壓到合適目錄. 進入zookeeper目錄下的conf子目錄, 創建zoo.cfg:
- tickTime= 2000 ????
- dataDir=/Users/apple/zookeeper/data????
- dataLogDir=/Users/apple/zookeeper/logs????
- clientPort= 4180 ???
參數說明:
- tickTime: zookeeper中使用的基本時間單位, 毫秒值.
- dataDir: 數據目錄. 可以是任意目錄.
- dataLogDir: log目錄, 同樣可以是任意目錄. 如果沒有設置該參數, 將使用和dataDir相同的設置.
- clientPort: 監聽client連接的端口號.
至此, zookeeper的單機模式已經配置好了. 啟動server只需運行腳本:
- bin/zkServer.sh?start??
- bin/zkCli.sh?-server?localhost: 4180 ??
偽集群模式
所謂偽集群, 是指在單臺機器中啟動多個zookeeper進程, 并組成一個集群. 以啟動3個zookeeper進程為例.
將zookeeper的目錄拷貝2份:
- |--zookeeper0??
- |--zookeeper1??
- |--zookeeper2??
?更改zookeeper0/conf/zoo.cfg文件為:
- tickTime= 2000 ????
- initLimit= 5 ????
- syncLimit= 2 ????
- dataDir=/Users/apple/zookeeper0/data????
- dataLogDir=/Users/apple/zookeeper0/logs????
- clientPort= 4180 ??
- server. 0 = 127.0 . 0.1 : 8880 : 7770 ????
- server. 1 = 127.0 . 0.1 : 8881 : 7771 ????
- server. 2 = 127.0 . 0.1 : 8882 : 7772 ??
新增了幾個參數, 其含義如下:
- initLimit: zookeeper集群中的包含多臺server, 其中一臺為leader, 集群中其余的server為follower. initLimit參數配置初始化連接時, follower和leader之間的最長心跳時間. 此時該參數設置為5, 說明時間限制為5倍tickTime, 即5*2000=10000ms=10s.
- syncLimit: 該參數配置leader和follower之間發送消息, 請求和應答的最大時間長度. 此時該參數設置為2, 說明時間限制為2倍tickTime, 即4000ms.
- server.X=A:B:C 其中X是一個數字, 表示這是第幾號server. A是該server所在的IP地址. B配置該server和集群中的leader交換消息所使用的端口. C配置選舉leader時所使用的端口. 由于配置的是偽集群模式, 所以各個server的B, C參數必須不同.
參照zookeeper0/conf/zoo.cfg, 配置zookeeper1/conf/zoo.cfg, 和zookeeper2/conf/zoo.cfg文件. 只需更改dataDir, dataLogDir, clientPort參數即可.
在之前設置的dataDir中新建myid文件, 寫入一個數字, 該數字表示這是第幾號server. 該數字必須和zoo.cfg文件中的server.X中的X一一對應.
/Users/apple/zookeeper0/data/myid文件中寫入0, /Users/apple/zookeeper1/data/myid文件中寫入1, /Users/apple/zookeeper2/data/myid文件中寫入2.
分別進入/Users/apple/zookeeper0/bin, /Users/apple/zookeeper1/bin, /Users/apple/zookeeper2/bin三個目錄, 啟動server.
任意選擇一個server目錄, 啟動客戶端:
- bin/zkCli.sh?-server?localhost: 4180 ??
?
集群模式
集群模式的配置和偽集群基本一致.
由于集群模式下, 各server部署在不同的機器上, 因此各server的conf/zoo.cfg文件可以完全一樣.
下面是一個示例:
- tickTime= 2000 ????
- initLimit= 5 ????
- syncLimit= 2 ????
- dataDir=/home/zookeeper/data????
- dataLogDir=/home/zookeeper/logs????
- clientPort= 4180 ??
- server. 43 = 10.1 . 39.43 : 2888 : 3888 ??
- server. 47 = 10.1 . 39.47 : 2888 : 3888 ????
- server. 48 = 10.1 . 39.48 : 2888 : 3888 ??
示例中部署了3臺zookeeper server, 分別部署在10.1.39.43, 10.1.39.47, 10.1.39.48上. 需要注意的是, 各server的dataDir目錄下的myid文件中的數字必須不同.
10.1.39.43 server的myid為43, 10.1.39.47 server的myid為47, 10.1.39.48 server的myid為48.
?
附件為dubbo的server端和client端,要運行demo,必須先啟動zookeeper服務器(自行下載,注意修改zoo.cfg文件中,代碼中注冊的端口為2182,那么zoo.cfg文件中clientPort也不要是2182),然后啟動server端的Main 類,最后啟動client(consumer)端的AppTest類。
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
