centos7安裝zookeeper3.4.12集羣

zookeeper的三要素:html

一、一致,可以保證數據的一致性node

二、有頭,始終有一個leader,node/2+1個節點有效,就能正常工做apache

三、數據樹,樹狀結構且每一個樹必須有數據vim

1. 環境準備

操做系統:CentOS Linux release 7.2.1511 (Core)服務器

JDK版本:1.8.0_121tcp

具體安裝jdk的配置請參見本人的博客http://www.javashuo.com/article/p-wcvtxxkr-cm.html中關於jdk安裝部分的內容,本文假設jdk已經安裝好了ide

服務器 oop

192.168.1.101;性能

192.168.1.102;ui

192.168.1.103;

 

2. 下載zookeeper

下載地址:https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/stable/

 

利用wget下載並解壓zookeeper3.4.12,當前在192.168.1.101機器上操做

cd /opt/software 
wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/stable/zookeeper-3.4.12.tar.gz  #下載zookeeper3.4.12到當前目錄
tar -xzvf zookeeper-3.4.12.tar.gz -C  /opt/software #解壓zookeeper到當前目錄
cd zookeeper-3.4.12   #進入zookeeper3.4.12目錄

 

3. 配置zookeeper3.4.12

mv /opt/software/zookeeper-3.4.12/conf/zoo_sample.cfg   /opt/software/zookeeper-3.4.12/conf/zoo.cfg  
vim /opt/software/zookeeper-3.4.12/conf/zoo.cfg

先把dataDir=/tmp/zookeeper註釋,而後將下面四行代碼添加到文件末尾,添加如下內容:

dataDir=/opt/software/zookeeper-3.4.12/data
dataLogDir=/opt/software/zookeeper-3.4.12/log
server.1=192.168.1.101:2888:3888
server.2=192.168.1.102:2888:3888
server.3=192.168.1.103:2888:3888
#server.1 這個1是服務器的標識也能夠是其餘的數字, 表示這個是第幾號服務器,用來標識服務器,這個標識要寫到快照目錄下面myid文件裏
#192.168.1.101爲集羣裏的IP地址,第一個端口是master和slave之間的通訊端口,默認是2888,第二個端口是leader選舉的端口,集羣剛啓動的時候選舉或者leader掛掉以後進行新的選舉的端口默認是3888

zoo.cfg完整的文件內容以下:

# The number of milliseconds of each tick
tickTime=2000

# The number of ticks that the initial 
# synchronization phase can take
initLimit=10

# The number of ticks that can pass between 
# sending a request and getting an acknowledgement
syncLimit=5

# the port at which the clients will connect
clientPort=2181

# 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
#
# 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=1

# the directory where the snapshot is stored.
dataDir=/opt/software/zookeeper-3.4.12/data
dataLogDir=/opt/software/zookeeper-3.4.12/log
server.1=192.168.1.101:2888:3888
server.2=192.168.1.102:2888:3888
server.3=192.168.1.103:2888:3888

 配置文件說明:

#tickTime:
這個時間是做爲 Zookeeper 服務器之間或客戶端與服務器之間維持心跳的時間間隔,也就是每一個 tickTime 時間就會發送一個心跳。
#initLimit:
這個配置項是用來配置 Zookeeper 接受客戶端(這裏所說的客戶端不是用戶鏈接 Zookeeper 服務器的客戶端,而是 Zookeeper 服務器集羣中鏈接到 Leader 的 Follower 服務器)初始化鏈接時最長能忍受多少個心跳時間間隔數。
當已經超過 5個心跳的時間(也就是 tickTime)長度後 Zookeeper 服務器尚未收到客戶端的返回信息,那麼代表這個客戶端鏈接失敗。總的時間長度就是
5*2000=10 秒 #syncLimit: 這個配置項標識 Leader 與Follower 之間發送消息,請求和應答時間長度,最長不能超過多少個 tickTime 的時間長度,總的時間長度就是5*2000=10秒 #dataDir: 快照日誌的存儲路徑 #dataLogDir: 事物日誌的存儲路徑,若是不配置這個那麼事物日誌會默認存儲到dataDir制定的目錄,這樣會嚴重影響zk的性能,當zk吞吐量較大的時候,產生的事物日誌、快照日誌太多 #clientPort: 這個端口就是客戶端鏈接 Zookeeper 服務器的端口,Zookeeper 會監聽這個端口,接受客戶端的訪問請求。修改他的端口改大點

  #autopurge.purgeInterval  這個參數指定了日誌清理頻率,單位是小時,須要填寫一個1或更大的整數,默認是0,表示不開啓本身清理功能。

 

  #autopurge.snapRetainCount 這個參數和上面的參數搭配使用,這個參數指定了須要保留的文件數目。默認是保留3個。

 

 

4.建立myid文件

mkdir -p /opt/software/zookeeper-3.4.12/data  #建立數據目錄,該目錄在zoo.cfg中配置
cd /opt/software/zookeeper-3.4.12/data #上面配置的zookeeper數據保存目錄
touch myid   #建立myid文件
echo "1">>myid   #往myid中寫入1,對應server.X={IP}:2888:3888 中的x數字

 

5. 將上面在192.168.1.101機器上配置好的zookeeper複製到102,103兩臺機器上去

scp -r /opt/software/zookeeper-3.4.12/  192.168.1.102:/opt/software/  #將配置好的zookeeper複製到192.168.1.102
scp -r /opt/software/zookeeper-3.4.12/  192.168.1.103:/opt/software/  #將配置好的zookeeper複製到192.168.1.103

修改102,103機器上/opt/software/zookeeper-3.4.12/data/myid爲對應的值

192.168.1.102:

cd /opt/software/zookeeper-3.4.12/data
rm -f ./myid
echo "2">>myid   #往myid中寫入2,對應server.X={IP}:2888:3888 中的x數字,此處爲2

192.168.1.103:

cd /opt/software/zookeeper-3.4.12/data
rm -f ./myid
echo "3">>myid   #往myid中寫入3,對應server.X={IP}:2888:3888 中的x數字,此處爲3

 

6. 開放zookeeper端口

firewall-cmd --zone=public --add-port=2888/tcp --permanent  #添加2888防火牆例外
firewall-cmd --zone=public --add-port=3888/tcp --permanent  #添加3888防火牆例外
firewall-cmd --zone=public --add-port=2181/tcp --permanent  #添加2181防火牆例外
firewall-cmd --reload   #重啓防火牆

注意:若是所在機器上防火牆沒有關閉,上面的操做天天機器都須要作;有些hadoop或CDH集羣安裝的時候要求把防火牆關閉的,若是已經關閉了防火牆的,能夠跳過該步驟,不用執行。

 

7. 添加環境變量

vim /etc/profile

在文件最後添加:

# zookeeper
export ZK_HOME=/opt/software/zookeeper-3.4.12
export PATH=$ZK_HOME/bin:$PATH

使環境變量生效:

source /etc/profile

注意:三臺機器都要作這個操做。

 

8. 啓動zookeeper

8.1啓動

zkServer.sh start   #三臺機器都要作此操做,不然經過zkServer.sh status查看啓動狀態時,   
#可能會有Error contacting service. It is probably not running.錯誤信息。
#具體查看能夠在$ZK_HOME/zookeeper.out查看詳細的日誌信息

8.2 查看狀態

zkServer.sh status #查看當前機器的zookeeper狀態

192.168.1.101

[root@zoo101 zookeeper-3.4.12]# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/software/zookeeper-3.4.12/bin/../conf/zoo.cfg
Mode: follower

192.168.1.102

[root@zoo102 zookeeper-3.4.12]# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/software/zookeeper-3.4.12/bin/../conf/zoo.cfg
Mode: leader

192.168.1.103

[root@zoo103 zookeeper-3.4.12]# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/software/zookeeper-3.4.12/bin/../conf/zoo.cfg
Mode: follower

 

9. 客戶端鏈接zookeeper

zkCli.sh -server 192.168.1.101:2181

若是出現以下內容,則代表zookeeper已經安裝成功

 

參考:

http://www.cnblogs.com/luotianshuai/p/5206662.html

相關文章
相關標籤/搜索