centos7安裝zookeeper3.4.12集群


zookeeper的三要素:

1、一致,能夠保證數據的一致性

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

3、數據樹,樹狀結構且每個樹必須有數據

1. 環境准備

操作系統:CentOS Linux release 7.2.1511 (Core)

JDK版本:1.8.0_121

具體安裝jdk的配置請參見本人的博客https://www.cnblogs.com/lenmom/p/9152947.html中關於jdk安裝部分的內容,本文假設jdk已經安裝好了

服務器 

192.168.1.101;

192.168.1.102;

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM