CentOS下安裝Zookeeper僞集羣,以及集羣中的配置

單機搭建Zookeeper集羣並用dubbo訪問

Zookeeper簡介
**(一) Zookeeper基礎知識、體系結構、數據模型 **

  1. zookeeper是一個類似hdfs的樹形文件結構,zookeeper可以用來保證數據在(zk)集 羣之間的數據的事務性一致、
  2. zookeeper有watch事件,是一次性觸發的,當watch監視的數據發生變化時,通 知設置了該watch的client,即watcher
  3. zookeeper有三個角色:
    Learder,Follower,Observer 4 zookeeper應用場景:
    統一命名服務(Name Service)
    配置管理(Configuration Management)
    集羣管理(Group Membership)
    共享鎖(Locks)
    隊列管理

(二) Zookeeper配置(搭建zookeeper服務器集羣)

  1. 結構:一共三個節點 (zk服務器集羣規模不小於3個節點),要求服務器之間系統時間保持一致。

創建文件存放目錄

[root@han software]# mkdir -p /usr/local/software

進入到文件存放目錄

[root@han software]# cd /usr/local/software/

下載Zookeeper-3.4.5

[root@han software]# wget http://archive.apache.org/dist/zookeeper/zookeeper-3.4.5/zookeeper-3.4.5.tar.gz

創建zokeeper node節點安裝位置

[root@han software]# mkdir -p /usr/local/zookeeper-3.4.5

把文件解壓到/usr/local/zookeeper-3.4.5

[root@han software]# tar -zxvf /usr/local/software/zookeeper-3.4.5.tar.gz -C /usr/local/zookeeper-3.4.5/

進入到zookeeper節點總目錄

[root@han zookeeper-3.4.5]# cd /usr/local/zookeeper-3.4.5

ls -l 顯示當前文件夾

[root@han zookeeper-3.4.5]# ls -l
total 4
drwxr-xr-x 10 501 games 4096 Nov  5  2012 zookeeper-3.4.5

對zookeeper文件名進行更改 更改爲node1(其中一個子節點)

mv /usr/local/zookeeper-3.4.5/zookeeper-3.4.5/ /usr/local/zookeeper-3.4.5/node1

更改後文件顯示如下:

[root@han zookeeper-3.4.5]# ls -l
total 4
drwxr-xr-x 10 501 games 4096 Nov  5  2012 node1

進入到其中一個node節點

[root@han zookeeper-3.4.5]# cd /usr/local/zookeeper-3.4.5/node1/

在node1節點下創建date目錄 data目錄是用來存放myid文件的 在其後的zoo.cfg中會用到(後面有介紹)

[root@han node1]# mkdir -p /usr/local/zookeeper-3.4.5/node1/data

在node1節點下創建logs目錄 logs目錄用來存放zookeeper文件輸出

mkdir -p /usr/local/zookeeper-3.4.5/node1/logs

在data下創建myid文件 myid爲了標識zookeeper的節點

[root@han node1]# vim /usr/local/zookeeper-3.4.5/node1/data/myid

服務器標識配置: myid (內容爲服務器標識 : 1)
在myid文件中 添加一個字"1"

[root@han node1]# vim /usr/local/zookeeper-3.4.5/node1/data/myid
1

查看是否添加成功

[root@han node1]# cat /usr/local/zookeeper-3.4.5/node1/data/myid
1

進入到zookeeper node1中的conf文件夾

cd /usr/local/zookeeper-3.4.5/node1/conf/

copy zookeeper node1的配置 然後對其進行修改

[root@han conf]# cp /usr/local/zookeeper-3.4.5/node1/conf/zoo_sample.cfg /usr/local/zookeeper-3.4.5/node1/conf/zoo.cfg

修改zoo.cfg文件

[root@han conf]# sudo vim /usr/local/zookeeper-3.4.5/node1/conf/zoo.cfg 

注: 也可把之前的zoo.cfg文件全部刪除 然後把下面的代碼直接copy到zoo.cfg
總體如下: 因爲代碼不能顯示高亮(好糾結…) 所有把圖貼出來了
這裏寫圖片描述

# 服務器之間或客戶端與服務器之間維持心跳的時間間隔(基本事件單元,以毫秒爲單位),也就是每隔 tickTime時間就會發送一個心跳。
tickTime=2000

# 這個配置項是用來配置 Zookeeper 接受客戶端初始化連接時最長能忍受多少個心跳時間間隔數,當已經超過 10 個心跳的時間(也就是 tickTime)長度後 Zookeeper 服務器還沒有收到客戶端的返回信息,那麼表明這個客戶端連接失敗。總的時間長度就是10*2000=20 秒。
initLimit=10

# 這個配置項標識 Leader 與 Follower之間發送消息,請求和應答時間長度,最長不能超過多少個 tickTime的時間長度,總的時間長度就是 5*2000=10 秒
syncLimit=5

# 存儲內存中數據庫快照的位置,顧名思義就是 Zookeeper 保存數據的目錄,默認情況下,Zookeeper 將寫數據的日誌文件也保存在這個目錄裏。
dataDir=/usr/local/zookeeper-3.4.5/node1/data

# 存儲內存中數據庫快照的位置 顧名思義就是日誌文件存放目錄
dataLogDir=/usr/local/zookeeper-3.4.5/node1/logs

# 這個端口就是客戶端連接 Zookeeper 服務器的端口,Zookeeper 會監聽這個端口,接受客戶端的訪問請求
clientPort=3210

# 注: 以下ip爲內網ip即可
# server.A = B:C:D
# A表示這個是第幾號服務器
# B 是這個服務器的ip地址
# C 表示的是這個服務器與集羣中的Leader服務器交換信息的端口
# D 表示的是萬一集羣中的Leader服務器掛了,需要一個端口來重新進行選舉,選出一個新的Leader
server.1=ip:3211:3212
server.2=ip:3221:3222
server.3=ip:3231:3232

ok, 目前爲至, 其中一個節點已經搭建好了
注意: 現在不能啓動該節點, 會報錯, 目前該節點還不能找到集羣中的其他兩個節點

把node1節點複製一份到node2 並修改node2的相關配置

把當前node1節點copy到node2

[root@han conf]# cp -r /usr/local/zookeeper-3.4.5/node1/ /usr/local/zookeeper-3.4.5/node2

到node2節點路徑下

[root@han zookeeper-3.4.5]# cd /usr/local/zookeeper-3.4.5/node2/

修改data文件中的myid 把當前myid爲1的值 修改爲2

[root@han node2]# sudo vim /usr/local/zookeeper-3.4.5/node2/data/myid 
[root@han node2]# sudo vim /usr/local/zookeeper-3.4.5/node2/data/myid 
2

用cat命令打印 如果輸出結果爲2 則說明正確

[root@han node2]# cat /usr/local/zookeeper-3.4.5/node2/data/myid 
2

修改zookeeper中node2的zoo.cfg配置

[root@han node2]# sudo vim /usr/local/zookeeper-3.4.5/node2/conf/zoo.cfg 
# 注意把之前dataDir中的node1 換成了node2
dataDir=/usr/local/zookeeper-3.4.5/node2/data
# 注意把之前dataLogDir中的node1 換成了node2
dataLogDir=/usr/local/zookeeper-3.4.5/node2/logs
# 把端口號從3210換爲了3220
clientPort=3220

ok, 到此zookeepr第二個節點搭建完畢

把node1節點複製一份到node3 並修改node3的相關配置

[root@han node2]# cp -r /usr/local/zookeeper-3.4.5/node1/ /usr/local/zookeeper-3.4.5/node3

到node3節點路徑下

[root@han zookeeper-3.4.5]# cd /usr/local/zookeeper-3.4.5/node3/

修改data文件中的myid 把當前myid爲1的值 修改爲3

[root@han node3]# sudo vim /usr/local/zookeeper-3.4.5/node3/data/myid 
[root@han node3]# sudo vim /usr/local/zookeeper-3.4.5/node3/data/myid 
3

用cat命令打印 如果輸出結果爲3 則說明正確

[root@han node3]# cat /usr/local/zookeeper-3.4.5/node3/data/myid
3

修改zookeeper中node3的zoo.cfg配置

[root@han node3]# sudo vim /usr/local/zookeeper-3.4.5/node3/conf/zoo.cfg 

注意把之前dataDir中的node1 換成了node3

dataDir=/usr/local/zookeeper-3.4.5/node3/data

注意把之前dataLogDir中的node1 換成了node3

dataLogDir=/usr/local/zookeeper-3.4.5/node3/logs

把端口號從3210換爲了3230

clientPort=3230


ok, 到此zookeepr第三個節點搭建完畢

啓動zookeeper集羣:
**注意:** 這裏3臺機器都要進行啓動

/usr/local/zookeeper-3.4.5/node1/bin/zkServer.sh start
/usr/local/zookeeper-3.4.5/node2/bin/zkServer.sh start
/usr/local/zookeeper-3.4.5/node3/bin/zkServer.sh start

停止zookeeper集羣:

/usr/local/zookeeper-3.4.5/node1/bin/zkServer.sh stop
/usr/local/zookeeper-3.4.5/node2/bin/zkServer.sh stop
/usr/local/zookeeper-3.4.5/node3/bin/zkServer.sh stop


查看zookeeper集羣狀態
**注意:**  查看三個zookeeper節點的status時,一個leader和倆個follower(如下圖)

/usr/local/zookeeper-3.4.5/node1/bin/zkServer.sh status
/usr/local/zookeeper-3.4.5/node2/bin/zkServer.sh status
/usr/local/zookeeper-3.4.5/node3/bin/zkServer.sh status


![這裏寫圖片描述](https://img-blog.csdn.net/20180105203849481?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaGFud3VxaWEwMzcw/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)

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