Zookeeper集羣的安裝與部署

一、ZooKeeper的概述

        Zookeeper 是爲分佈式應用程序提供高性能協調服務的工具集合,也是Google的Chubby一個開源的實現,是Hadoop 的分佈式協調服務。它包含一個簡單的原語集,分佈式應用程序可以基於它實現配置維護、命名服務、分佈式同步、組服務等。Zookeeper可以用來保證數據在ZK集羣之間的數據的事務性一致。其中ZooKeeper提供通用的分佈式鎖服務,用以協調分佈式應用。

        zk是Apache Hadoop的一個子項目,主要是用來解決分佈式應用中經常遇到的一些數據管理問題。

    列舉了一些可能會遇到的場景:

  • 命名服務:訂單編號,防止出現訂單號相同。

  • Master選舉:監聽主節點是否掛了,從節點頂上來。

  • 集羣管理:註冊中心

  • 配置管理:

  • 分佈式隊列:

  • 分佈式鎖:


二、目錄結構介紹

 

 


三、配置文件

 

序號

參數名

說明

1

clientPort

客戶端連接server的端口,即對外服務端口,一般設置爲2181吧。

2

dataDir

存儲快照文件snapshot的目錄。默認情況下,事務日誌也會存儲在這裏。建議同時配置參數dataLogDir, 事務日誌的寫性能直接影響zk性能。

3

tickTime

ZK中的一個時間單元。ZK中所有時間都是以這個時間單元爲基礎,進行整數倍配置的。例如,session的最小超時時間是2*tickTime。

4

dataLogDir

事務日誌輸出目錄。儘量給事務日誌的輸出配置單獨的磁盤或是掛載點,這將極大的提升ZK性能。(No Java system property)

5

globalOutstandingLimit

最大請求堆積數。默認是1000。ZK運行的時候, 儘管server已經沒有空閒來處理更多的客戶端請求了,但是還是允許客戶端將請求提交到服務器上來,以提高吞吐性能。當然,爲了防止Server內存溢出,這個請求堆積數還是需要限制下。(Java system property: zookeeper.globalOutstandingLimit.)

6

preAllocSize

預先開闢磁盤空間,用於後續寫入事務日誌。默認是64M,每個事務日誌大小就是64M。如果ZK的快照頻率較大的話,建議適當減小這個參數。(Java system property: zookeeper.preAllocSize)


四、ZK安裝

我的在centos7系統上操作的

1、首先下載安裝包

官網下載地址:http://mirrors.hust.edu.cn/apache/zookeeper/

2、解壓安裝包

 tar -xzvf apache-zookeeper-3.5.5-bin.tar.gz 

3、創建zookeeper目錄

mkdir zookper

然後進入zookper目錄下創建zk1  zk2  zk3 目錄,用於存放三個zk

cd zookpermkdir zookpermkdir zk1mkdir zk2mkdir zk3

 

4、解壓文件放置到 zk1  zk2 zk3 下

cp -rf /usr/local/apache-zookeeper-3.5.5-bin/*  /usr/local/zookeeper/zk1cp -rf /usr/local/apache-zookeeper-3.5.5-bin/*  /usr/local/zookeeper/zk2cp -rf /usr/local/apache-zookeeper-3.5.5-bin/*  /usr/local/zookeeper/zk3

 

5、創建 zoo.cnf

cd  /usr/local/zookeeper/zk1cp zoo_sample.cfg zoo.cfg

 

6、修改配置文件,如下

# The number of milliseconds of each ticktickTime=2000# The number of ticks that the initial # synchronization phase can takeinitLimit=10# The number of ticks that can pass between # sending a request and getting an acknowledgementsyncLimit=5# the directory where the snapshot is stored.# do not use /tmp for storage, /tmp here is just # example sakes.dataDir=/usr/local/zookeeper/zk1/data # the port at which the clients will connectclientPort=20181 # 客戶端端口號# the maximum number of client connections.# increase this if you need to handle more clients#maxClientCnxns=60## Be sure to read the maintenance section of the # administrator guide before turning on autopurge.## http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance#quorumListenOnAllIpds=true# The number of snapshots to retain in dataDir#autopurge.snapRetainCount=3# Purge task interval in hours# Set to "0" to disable auto purge feature#autopurge.purgeInterval=1server.1=localhost:2287:3387server.2=localhost:2288:3388server.3=localhost:2289:3389

7、設置myid

dataDir=/usr/local/zookeeper/zk1/data 

在配置文件設置的dataDir目錄下設置myid

echo 1 > myidecho 2 > myidecho 3 > myid


然後分別啓動

 /usr/local/zookeeper/zk1/bin/zkServer.sh start /usr/local/zookeeper/zk2/bin/zkServer.sh start  /usr/local/zookeeper/zk3/bin/zkServer.sh start

8、啓動出現問題

    ​a、檢查配置文件,各個目錄是否正確,是否在對應目錄設置了myid

    ​b、檢查防火牆是否開啓

 


 

五、ZK基本命令

# 啓動/usr/local/zookeeper/zk1/bin/zkServer.sh start# 查看狀態 leader 主  follower 從/usr/local/zookeeper/zk1/bin/zkServer.sh status# 關閉/usr/local/zookeeper/zk1/bin/zkServer.sh stop# 進入客戶端/usr/local/zookeeper/zk1/bin/zkCli.sh -server {host}:2181

 

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