zookeeper偽集群模式搭建

在學習zookeeper的過程中,常常受制于環境限制,沒有足夠多的硬件資源以供自己玩耍,通常情況下只有自己的16G內存的筆記本,因此,在這種情況下,我們需要通過搭建偽集群環境來體驗zookeeper的集群模式。

1.環境準備

操作系統: fedora25
硬件配置: thinkpad X230  i5  16G   500G
依賴軟件: jdk  1.8.0_121 (官方版本,非openjdk)
下載: zookeeper-3.4.10.tar.gz
cd /opt
wget http://www-us.apache.org/dist/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gz

安裝目錄:/opt/zookeeper
mkdir /opt/zookeeper
cd /opt/zookeeper 
tar -zxvf  /opt/zookeeper-3.4.10.tar.gz 
cp -rf /opt/zookeeper/zookeeper-3.4.10   /opt/zookeeper/zoo-node1
cp -rf /opt/zookeeper/zookeeper-3.4.10   /opt/zookeeper/zoo-node2
cp -rf /opt/zookeeper/zookeeper-3.4.10   /opt/zookeeper/zoo-node3
rm -rf  /opt/zookeeper/zookeeper-3.4.10 
這樣,zookeeper的三個節點運行目錄分別為:
 /opt/zookeeper/zoo-node1
 /opt/zookeeper/zoo-node2
 /opt/zookeeper/zoo-node3

2.配置

2.1 zoo.cfg配置文件

zookeeper的運行,需要在conf目錄配置zoo.cfg文件。我們可以參考zoo_sample.cfg進行配置。
節點1配置如下:

#zookeeper時間單元,單位為毫秒
tickTime=2000
#集群中的follower服務器(F)與leader服務器(L)之間 初始連接 時能容忍的最多心跳數(tickTime的數量)。
initLimit=10
# 集群中的follower服務器(F)與leader服務器(L)之間 請求和應答 之間能容忍的最多心跳數(tickTime的數量)。
syncLimit=5
# data數據目錄
dataDir=/opt/zookeeper/zoo-node1/data
# 客戶端連接端口
clientPort=2181
# 客戶端最大連接數
#maxClientCnxns=60
# 需要保留的快照數目
#autopurge.snapRetainCount=3
# 是否開啟自動清理事務日志和快照功能 0 不開啟,1表示開啟
#autopurge.purgeInterval=1
#集群配置 
server.1=127.0.0.1:2888:3888
server.2=127.0.0.1:2889:3889
server.3=127.0.0.1:2890:3890

節點2配置

#zookeeper時間單元,單位為毫秒
tickTime=2000
#集群中的follower服務器(F)與leader服務器(L)之間 初始連接 時能容忍的最多心跳數(tickTime的數量)。
initLimit=10
# 集群中的follower服務器(F)與leader服務器(L)之間 請求和應答 之間能容忍的最多心跳數(tickTime的數量)。
syncLimit=5
# data數據目錄
dataDir=/opt/zookeeper/zoo-node2/data
# 客戶端連接端口
clientPort=2182
# 客戶端最大連接數
#maxClientCnxns=60
# 需要保留的快照數目
#autopurge.snapRetainCount=3
# 是否開啟自動清理事務日志和快照功能 0 不開啟,1表示開啟
#autopurge.purgeInterval=1
#集群配置 
server.1=127.0.0.1:2888:3888
server.2=127.0.0.1:2889:3889
server.3=127.0.0.1:2890:3890

節點3配置

#zookeeper時間單元,單位為毫秒
tickTime=2000
#集群中的follower服務器(F)與leader服務器(L)之間 初始連接 時能容忍的最多心跳數(tickTime的數量)。
initLimit=10
# 集群中的follower服務器(F)與leader服務器(L)之間 請求和應答 之間能容忍的最多心跳數(tickTime的數量)。
syncLimit=5
# data數據目錄
dataDir=/opt/zookeeper/zoo-node3/data
# 客戶端連接端口
clientPort=2183
# 客戶端最大連接數
#maxClientCnxns=60
# 需要保留的快照數目
#autopurge.snapRetainCount=3
# 是否開啟自動清理事務日志和快照功能 0 不開啟,1表示開啟
#autopurge.purgeInterval=1
#集群配置 
server.1=127.0.0.1:2888:3888
server.2=127.0.0.1:2889:3889
server.3=127.0.0.1:2890:3890

分別將上述配置文件放置在三個節點對應的conf目錄下。
另外,需要新建data目錄

mkdir /opt/zookeeper/zoo-node1/data
mkdir /opt/zookeeper/zoo-node2/data
mkdir /opt/zookeeper/zoo-node3/data

2.2 myid配置文件

zookeeper還需要在data目錄中配置myid文件。myid文件中存放對應節點的序號。

echo '1'  >  /opt/zookeeper/zoo-node1/data/myid
echo '2'  >  /opt/zookeeper/zoo-node2/data/myid
echo '3'  >  /opt/zookeeper/zoo-node3/data/myid

2.3 日志路徑配置

修改 bin 目錄下的zkEnv.sh
將ZOO_LOG_DIR 修改為:

 ZOO_LOG_DIR="../logs/"

按上述方法分別修改三個節點中的zkEnv.sh文件

3.啟動

/opt/zookeeper/zoo-node1/bin/zkServer.sh start
/opt/zookeeper/zoo-node2/bin/zkServer.sh start
/opt/zookeeper/zoo-node2/bin/zkServer.sh start

如此分別啟動三個節點即可。
啟動效果如下:

[root@localhost bin]# /opt/zookeeper/zoo-node1/bin/zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper/zoo-node1/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

查看日志:


日志

4.客戶端連接

運行 zkCli.sh 連接到默認的端口

4.1 create

使用create 可以創建一個zookeeper節點。

命令格式
create [-s] [-e] path data acl
create  /zk-book 123
create

4.2 ls

列出zookeeper指定節點下的所有子節點。

命令格式
ls path [watch]
ls /
ls

4.3 get

get 可以獲取zookeeper指定節點的數據內容和屬性信息。

get path [watch]
get /zk-book
get

4.4 set

更新指定節點的數據內容

set path data [vresion]
set /zk-book 456
set

4.5 delete

delete 刪除zookeeper上指定節點內容

delete path [version]
delete /zk-book
delete

不過需要注意的是,刪除的節點必須為空,否則無法刪除。

create /zk-book 123
create /zk-book/child 12345
delete /zk-book
delete 非空
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容