1. 程式人生 > >centos7安裝zookeeper3.4.12集群

centos7安裝zookeeper3.4.12集群

hadoop 表示 準備 sla core ip地址 一個 操作系統 disable

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

centos7安裝zookeeper3.4.12集群