Zookeeper安裝部署

 

    之前部署hadoop&hbase集羣的時候使用的hbase內置的zookeeper所以一直也沒有對zookeeper進行獨立的部署,近期需要獨立部署使用,藉機也總結一篇文檔

 

         zookeeper是一個分佈式的開源框架,能夠提供高性能的分佈式服務,應用場景涉獵:數據發佈與訂閱;軟負載均衡;命名服務;分佈式通知/協調;集羣管理和master選舉;分佈式鎖和分佈式隊列等等

 

有兩種運行的模式:Standalone模式和Distributed模式

 

Standalone模式安裝:

 

1.首先安裝java環境

查看當前是否存在java

wKiom1LKaqOhYRrPAABSTa0rcKw683.jpg

 

系統自帶的openjdk需要卸載,查看:

rpm -qa|grep gcj

wKioL1LKasrBMg8tAAAnEaqgvVU645.jpg

 

yum -y remove java-1.5.0-gcj-1.5.0.0-29.1.el6.x86_64

yum -y remove libgcj-4.4.7-3.el6.x86_64

 

安裝java環境:

java版本:jdk1.7.0_17

 

解壓縮安裝包到/usr/local下:

tar zxvf jdk-7u17-linux-x64.tar.gz -C /usr/local

添加環境變量:

export JAVA_HOME=/usr/local/jdk1.7.0_17

export PATH=$PATH:$JAVA_HOME/bin

export CLASSPATH=.:JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

 

然後source /etc/profile

查看環境變量:

wKiom1LKavzTOfzmAAAvsfQtZPM094.jpg

 

2.下載並解壓縮zookeeper

官方下載地址:http://zookeeper.apache.org/releases.html#download

選擇鏡像地址並下載

選擇版本:zookeeper-3.4.5.tar.gz

3.拷貝配置文件並修改

cp zoo_sample.cfg zoo.cfg 

修改dataDir 默認是:/tmp/zookeeper系統重啓後/tmp目錄會清空

修改dataDir目錄,默認端口是2181不做修改:

wKioL1LKa2zj9wkxAAAp9obkqaA941.jpg

 

4.創建數據目錄:

mkdir -p /data/zookeeper/data

5.啓動zookeeper並驗證

/usr/local/zookeeper-3.4.5/bin/zkServer.sh start

wKioL1LKa6izLwf_AAA08ZaBE_I865.jpg

 

查看端口的監聽情況:

wKioL1LKbF2yHjhmAACT6eNrwiI164.jpg

 

 

Distributed模式安裝:

Distributed模式的zookeeper集羣有兩個重要的角色:分別是LeaderFollower,所以集羣中的每個節點之間需要相互的通信,在沒有內部DNS解析的前提下,需要在zookeeper集羣的每個節點上配置/etc/hosts文件,╮(╯▽╰)╭這一點和hadoop集羣是一個道理

1.首先編輯/etc/hosts文件

wKiom1LKbH2APIhVAAASrLUNrpc377.jpg

2.修改之前配置的standealone節點的配置:

新增:

wKiom1LKbJ3hbyttAAAUOblaiAI370.jpg

與/etc/hosts對應的命名方式相對應

 

3.分發zookeeper的安裝文件到其他的節點

scp -r zookeeper-3.4.5/ root@zookeeper2:/usr/local/

同樣需要創建dataDir指定的目錄和安裝java環境

 

4.分別創建myid文件,用來標識當前的主機,文件內容爲數字,zoo.cfgserver.X中的數字一致,存放的目錄爲dataDir指定的目錄

[root@zookeeper1 ~]# echo "1"> /data/zookeeper/data/myid

[root@zookeeper2 ~]# echo "2"> /data/zookeeper/data/myid

 

5.啓動zookeeper的集羣

[root@zookeeper1 ~]# /usr/local/zookeeper-3.4.5/bin/zkServer.sh start

[root@zookeeper2 ~]# /usr/local/zookeeper-3.4.5/bin/zkServer.sh start

在每個zookeeper的節點上分別啓動zookeeper的服務

因爲啓動的順序有先後而zookeeper啓動的時候會嘗試去連接集羣中的其他的節點,先啓動的節點在zkServer.sh同級目錄的zookeeper.out文件中有出現報錯的可能,可以忽略

wKiom1LKbZWgEijxAAAxeyVxD1k161.jpg

 

6.查詢各節點的角色(驗證使用,可忽略)

當集羣中的所有的節點的服務都啓動後,我們可以觀察各個節點的角色:

注:Zookeeper採用的是Leader election的選舉算法,集羣的運行過程中,只有一個Leader,其他的都是Follower,當Leader出現宕機或者其他的問題時,會從剩下的Follower節點中重新選舉一個Leader

命令:

/usr/local/zookeeper-3.4.5/bin/zkServer.sh status

wKiom1LKbeuSPZ5UAAAy74NEzbc007.jpg

wKiom1LKbgbBte0jAAA0JyWvM2I811.jpg

 

由此可見zookeeper2leader,不過對於客戶端,zookeeper的集羣是一個整體,可以在任何的一個節點上建立到服務集羣的連接~\(≧▽≦)/~

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章