Centos7 Zookeeper

本文版權歸博客園和做者吳雙本人共同全部 轉載和爬蟲請註明原文地址 www.cnblogs.com/tdwshtml

一.寫在前面

ZK是一個高效的分佈式協調服務,高可用的分佈式管理協調框架。 朋友推薦一本書《從paxos到zookeeper》,對我幫助的確很大。 java

二.集羣配置和踩坑

java安裝和環境變量配置能夠參考 http://www.cnblogs.com/tdws/p/4096300.html web

1 wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gz   下載
2  
3 tar -zxvf zookeeper-3.4.10.tar.gz   解壓
4  
5 mv zookeeper-3.4.10 /usr/local  剪切
6  
7 mv zookeeper-3.4.10/ zookeeper 重命名

下面修改配置文件命名apache

1 cd /usr/local/zookeeper/conf
2 mv zoo_sample.cfg zoo.cfg
配置一共沒幾行 。指定配置中的  dataDir
dataDir=/usr/local/zookeeper/data

自行mkdir建立data文件夾。服務器

在配置文件末尾 配置集羣 我是單臺機器僞集羣 三個節點
1 server.1=your_ip:20881:30881
2 server.2=your_ip:20882:30882
3 server.3=your_ip:20883:30883
在data文件夾中建立文件myid 來作一個標識
nano myid 在文件中填寫0 而且保存。須要注意的是剛纔咱們的zookeeper文件夾是不使用的,僅做爲咱們copy新節點的本來。
接下來複制三份zk
1 cp -r zookeeper/ zookeeper1
2 cp -r zookeeper/ zookeeper2
3 cp -r zookeeper/ zookeeper3

 

分別修改三臺節點 其datadir 將路徑指定到本身節點之下
分別修改其端口號和myid,是各個zoo.conf 配置的其中port 設置分別爲2181 2182 2183
各個myid內容分別爲1 2 3
下面 去三個zk bin目錄下 執行zkServer.sh start
 
第一次 出錯
Error contacting service. It is probably not running.
哎 檢查好幾個小時ZK配置文件 試了十幾種方法, 結果以前JAVA_HOME不當心配置錯了,我是yum安裝的jdk。
 
第二次 出錯與解決
後來又出一次錯誤 是我stop zk全部節點以後 再次啓動起不來 首先 jps命令 而後看到進程id和QuorumPeerMain
把Quorumpeermain的進程kill -9殺死
 
第三次 我丟雷樓某! 這個真是困擾了
若是使用阿里雲ECS 專有網絡+彈性公網IP
通常不能直接在ECS實例的程序例綁定和使用彈性公網IP地址。由於這個公網IP地址在ECS以外。因此我開了全部的端口,根本沒有用,最後使用0.0.0.0解決問題。
1 server.1=0.0.0.0:20881:30881
2 server.2=0.0.0.0:20882:30882
3 server.3=0.0.0.0:20883:30883

三.應用和小結

學習ZK一段時間,原生API比較難以使用,通常使用zkClient(dubbo依賴於此)和curator框架來操做ZK比較容易。 其典型應用場景包括如下幾點:網絡

1.數據發佈與訂閱併發

    ZK在dubbo中做爲註冊中心的角色,服務方和調用方都在這裏註冊。舉例來講明,我發佈了一個dubbo service,消費者webapp引用這個服務app

 <dubbo:service interface="com.s2s.service.ItemService" ref="itemServiceImpl"/>   發佈的服務
 <dubbo:reference interface="com.s2s.service.ItemService" id="itemService"/>     引用服務(將使用RPC調用)

  接下來去服務器上查看數據節點,負載均衡

能夠看到根目錄上有dubbo節點,dubbo下有com.s2s.service.ItemService, 其節點下又有consumers和providers等。框架

服務提供者啓動時向/dubbo/com.s2s.service.ItemService/providers目錄下寫入URL

服務消費者啓動時訂閱/dubbo/com.s2s.service.ItemService/providers目錄下的URL。 而且向/dubbo/com.s2s.service.ItemService/consumers目錄下寫入本身的URL 

監控中心啓動時訂閱/dubbo/com.s2s.service.ItemService/目錄下的全部提供者和消費者URL。

因此dubbo監控中心,查看到消費者和服務提供者

2.負載均衡

3.命名服務

4.分佈式通知和協調

5.集羣管理與Master選舉

 好比SolrCloud管理。管理集羣配置,監控集羣狀態,選舉分片leader

6.分佈式鎖

    有不少人用它作分佈式鎖 可是作法比較底層。臨時節點是在一次會話內有效,保證了出現異常時,鎖能得以釋放。好比client1 作分佈式操做 那他建立一個臨時節點 而後去作一些其餘數據操做 作完操做後, 再去把臨時節點移除。這時c2才能去操做。若是有10個客戶端 要操做同一個數據,可是這個數據,有多個複製的版本 在不一樣的DB當中(固然值是一致)。
這個時候 分佈式鎖的做用就是同步操做。客戶端1 操做 這條數據, 那就去zk當即 就create個節點 表明佔用了這條數據,這時候客戶端2 併發操做這條數據 先去zk上get一下這個節點,get到的話 能夠等待一下,等客戶端1 釋放掉後,去再次create一下佔領數據。

7.分佈式隊列

本文主要是安裝配置,分佈式理論的學習仍是比較好,接下來將會繼續分享實踐中的收穫。

相關文章
相關標籤/搜索