1. 程式人生 > >搭建zookeeper管理集群

搭建zookeeper管理集群

zookeeper

Zookeeper集群

一、實驗環境

Zookeeper集群環境安裝過程詳解

Zookeeper是一個分布式開源框架提供了協調分布式應用的基本服務它向外部應用暴露一組通用服務——分布式同步Distributed Synchronization命名服務Naming Service集群維護Group Maintenance簡化分布式應用協調及其管理的難度提供高性能的分布式服務。ZooKeeper本身可以以單機模式安裝運行不過它的長處在於通過分布式ZooKeeper集群一個Leader多個Follower),基於一定的策略來保證ZooKeeper集群的穩定性和可用性

從而實現分布式應用的可靠性。

Zookeeper安裝和配置

Zookeeper有三種不同的運行環境包括單機環境、集群環境和集群偽分布式環境。

環境準備

技術分享 技術分享

1、修改主機名

2、配置/etc/hosts文件

#vi /etc/hosts

技術分享 技術分享

安裝java jdk-7u65-linux-x64.gz

#tar zxf jdk-7u65-linux-x64.gz
#mv jdk1.7.0_65/ /usr/local/java

編輯/etc/profile設置java的環境變量

#vi /etc/profile

export JAVA_HOME=/usr/local/java export PATH=$PATH:$JAVA_HOME/bin #source /etc/profile

#ln -s /usr/local/java/bin /usr/bin
#java -version

技術分享技術分享

二、實驗步驟

zk01zk02zk03主機上安裝zookeeper

1、下載解壓zookeeper

下載地址 http://www.apache.org/dyn/closer.cgi/zookeeper

#mkdir /data

#cd/data

#tar zxf zookeeper-3.4.10.tar.gz

#mv zookeeper-3.4.10 zookeeper

2、配置環境變量/etc/profile

#echo "export ZOOKEEPER_HOME=/data/zookeeper" >> /etc/profile

#echo "export PATH=$PATH:$ZOOKEEPER_HOME/bin:$ZOOKEEPER_HOME/conf" >> /etc/profile

#source/etc/profile //使變量生效

3、集群部署

Zookeeper集群環境下只要一半以上的機器正常啟動了那麽Zookeeper服務將是可用的。因此署Zookeeper最好使用奇數臺機器這樣如果有5臺機器只要3臺正常工作則服務將正常使用。下面我們將對Zookeeper的配置文件的參數進行設置

#cd /data/zookeeper/conf

#cp zoo_sample.cfg zoo.cfg

zk01上配置

#vi zoo.cfg

技術分享技術分享

tickTime: zookeeper中使用的基本時間單位, 毫秒值

dataDir: 數據目錄. 可以是任意目錄.

dataLogDir: log目錄, 同樣可以是任意目錄. 如果沒有設置該參數, 將使用和dataDir相同的設置. 這裏沒設置日誌目 錄。此方法不推薦

clientPort: 監聽client連接的端口號

zk02上執行

#scp [email protected]:/data/zookeeper/conf/zoo.cfg/data/zookeeper/conf/

zk03上執行

#scp[email protected]:/data/zookeeper/conf/zoo.cfg /data/zookeeper/conf/

配置文件中server.id=host:port:port中的第一個port是從機器follower連接到主機器leader的端口號第二個port

是進行leadership選舉的端口號。 接下來在dataDir所指定的目錄下創建一個文件名為myid的文件文件中的內容只有一行

為本主機對應的id也就是server.id中的id。例如在服務器1中的myid的內容應該寫入1 id 被稱為Server ID, 用來標識 服務器在集群中的序號。同時每臺 ZooKeeper 服務器上, 都需要在數據目錄( dataDir 指定的目錄) 下創建一個 myid

, 該文件只有一行內容, 即對應於每臺服務器的Server ID ZooKeeper 集群中, 每臺服務器上的 zoo.cfg 配置文件內容一 致。 server.1 myid 文件內容就是 1。每個服務器的 myid 內容都不同, 且需要保證和自己的 zoo.cfg 配置文件中

server.id=host:port:port id 值一致。

id 的範圍是 1 ~ 255

4.遠程復制分發安裝文件

zk01主機的zookeeper復制到另外兩臺主機中。 *主機修改datadir目錄下myidid 集群模式中, 集群中的每臺機器都需要 感知其它機器, zoo.cfg 配置文件中, 可以按照如下格式進行配置, 每一行代表一臺服務器配置。

server.id=host:port:port

server.1 myid 文件內容就是 "1"。每個服務器的 myid 內容都不同, 且需要保證和自己的 zoo.cfg 配置文件

"server.id=host:port:port" id 值一致。

zk01為例

#mkdir /data/zookeeper/data

#cd /data/zookeeper/data

#vi myid

1

zk02上執行

#scp root@localhost :/data/zookeeper/conf/zoo.cfg/data/zookeeper/conf/

zk03上執行

#scp root@localhost :/data/zookeeper/conf/zoo.cfg/data/zookeeper/conf/

5zk01,zk02,zk03啟動ZooKeeper

zk01上執行如下操作

#cd /data/zookeeper/zookeeper/bin

#./zkServer.sh start //啟動zookeeper服務




技術分享

zk02上執行如下操作

技術分享

zk03上執行如下操作

技術分享

6、檢查zookeeper啟動是否成功

zk01上操作

#jps

技術分享

其中QuorumPeerMainzookeeper進程啟動正常。 如上依次啟動了所有機器上的Zookeeper之後可以通過ZooKeeper

腳本來查看啟動狀態包括集群中各個結點的角色或是Leader或是Follower),如下所示是在ZooKeeper集群中的每

個結點上查詢的結果

zk01上執行 查看zookeeper狀態

技術分享

zk02上執行

技術分享

zk03上執行





技術分享

通過上面狀態查詢結果可見zk02是集群的Leader其余的兩個結點是Follower 另外接到ZooKeeper集群上。對於客戶

端來說ZooKeeper是一個整體ensemble),連接到獨享整個集群的服務所以你可以在任何一個結點上建立到服務

集群的連接例如

7、集群測試

技術分享

zookeeper集群搭建完畢!!!


本文出自 “IT大本營” 博客,謝絕轉載!

搭建zookeeper管理集群