搭建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
二、實驗步驟
在zk01,zk02,zk03主機上安裝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目錄下myid的id。 集群模式中, 集群中的每臺機器都需要 感知其它機器, 在 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/
5、zk01,zk02,zk03啟動ZooKeeper
在zk01上執行如下操作:
#cd /data/zookeeper/zookeeper/bin
#./zkServer.sh start //啟動zookeeper服務
在 zk02上執行如下操作:
在 zk03上執行如下操作:
6、檢查zookeeper啟動是否成功
在zk01上操作:
#jps
其中,QuorumPeerMain是zookeeper進程,啟動正常。 如上依次啟動了所有機器上的Zookeeper之後可以通過ZooKeeper的
腳本來查看啟動狀態,包括集群中各個結點的角色(或是Leader,或是Follower),如下所示,是在ZooKeeper集群中的每
個結點上查詢的結果:
在 zk01上執行: 查看zookeeper狀態
在 zk02上執行:
在 zk03上執行:
通過上面狀態查詢結果可見,zk02是集群的Leader,其余的兩個結點是Follower。 另外接到ZooKeeper集群上。對於客戶
端來說,ZooKeeper是一個整體(ensemble),連接到獨享整個集群的服務,所以,你可以在任何一個結點上建立到服務
集群的連接,例如:
7、集群測試:
zookeeper集群搭建完畢!!!
本文出自 “IT大本營” 博客,謝絕轉載!
搭建zookeeper管理集群