ZooKeeper是一個分散式開源框架,提供了協調分散式應用的基本服務,它向外部應用暴露一組通用服務——分散式同步(Distributed Synchronization).命名服務(Naming Service).集群維護(Group Maintenance)等,簡化分散式應用協調及其管理的難度, ...
ZooKeeper是一個分散式開源框架,提供了協調分散式應用的基本服務,它向外部應用暴露一組通用服務——分散式同步(Distributed Synchronization).命名服務(Naming Service).集群維護(Group Maintenance)等,簡化分散式應用協調及其管理的難度,提供高性能的分散式服務。ZooKeeper本身可以以Standalone模式安裝運行,不過它的長處在於通過分散式ZooKeeper集群(一個Leader,多個Follower),基於一定的策略來保證ZooKeeper集群的穩定性和可用性,從而實現分散式應用的可靠性。(我是網上抄寫的,方便大家學習,請勿吐槽!!)
Dubbo 建議使用 Zookeeper 作為服務的註冊中心。
Zookeeper 集群中只要有過半的節點是正常的情況下,那麼整個集群對外就是可用的。
正是基於這個 特性,要將 zookeeper集群的節點數量要為奇數(2n+1:如 3、5、7 個節點)
聲明:以上都是官網的原話,此教程主要是供大家學習,請各位不要吐槽
根據您自己的業務來決定伺服器配置,我這邊定義了三台伺服器,如下:
伺服器1:xxx.xxx.xxx.xx1 埠:2181、2881、3881
伺服器2:xxx.xxx.xxx.xx2 埠:2182、2882、3882
伺服器3:xxx.xxx.xxx.xx3 埠:2183、2883、3883
1、 修改操作系統的/etc/hosts 文件,添加 IP 與主機名映射:
[root@cloud ~]# vi /etc/hosts
# zookeeper servers
xxx.xxx.xxx.xx1 jeesz-zk-01
xxx.xxx.xxx.xx2 jeesz-zk-02
xxx.xxx.xxx.xx3 jeesz-zk-03
2、 下載或上傳 zookeeper-3.4.6.tar.gz 到/home/jeesz/zookeeper 目錄:
[root@cloud ~]# cd/home/jeesz/zookeeper
$ wgethttp://apache.fayea.com/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz
3、 由於我已經下載並上傳了文件,故這邊直接記錄詳細的安裝過程,解壓 zookeeper 安裝包,並按節點號對 zookeeper 目錄重命名:
[root@cloud zookeeper]# tar -zxvfzookeeper-3.4.6.tar.gz
在xxx.xxx.xxx.xx1伺服器:
[root@cloud zookeeper]# mvzookeeper-3.4.6 node-01
在xxx.xxx.xxx.xx2伺服器:
[root@cloud zookeeper]# mvzookeeper-3.4.6 node-02
在xxx.xxx.xxx.xx3伺服器:
[root@cloud zookeeper]# mvzookeeper-3.4.6 node-03
4、 分別在 zookeeper 節點目錄下創建以下目錄:
[root@cloud ~]# /home/jeesz/zookeeper/node-0X (X 代表節點號 1、2、3)
[root@cloud node-0X]# mkdirdata
[root@cloud node-0X] # mkdirlogs
5、 將 zookeeper/node-0X/conf 目錄下的 zoo_sample.cfg 文件拷貝一份,命名為 zoo.cfg:
[root@cloud conf] cp zoo_sample.cfgzoo.cfg
6、 修改 zoo.cfg 配置文件:
[root@cloud conf] # vi zoo.cfg
zookeeper/node-01 的配置(/home/jeesz/zookeeper/node-01/conf/zoo.cfg)如下:
dataDir=/home/jeesz/zookeeper/node-01/data
dataLogDir=/home/jeesz/zookeeper/node-01/logs
clientPort=2181
server.1=jeesz-zk-01:2881:3881
server.2=jeesz-zk-02:2882:3882
server.3=jeesz-zk-03:2883:3883
zookeeper/node-02 的配置(/home/jeesz/zookeeper/node-02/conf/zoo.cfg)如下:
dataDir=/home/jeesz/zookeeper/node-02/data
dataLogDir=/home/jeesz/zookeeper/node-02/logs
clientPort=2182
server.1=jeesz-zk-01:2881:3881
server.2= jeesz -zk-02:2882:3882
server.3= jeesz -zk-03:2883:3883
zookeeper/node-03 的配置(/home/jeesz/zookeeper/node-03/conf/zoo.cfg)如下:
dataDir=/home/jeesz/zookeeper/node-03/data
dataLogDir=/home/jeesz/zookeeper/node-03/logs
clientPort=2183
server.1= jeesz-zk-01:2881:3881
server.2= jeesz-zk-02:2882:3882
server.3= jeesz-zk-03:2883:3883
7、 在dataDir=/home/jeesz/zookeeper/node-0X/data 下創建 myid 文件
編輯 myid 文件,併在對應的IP 的機器上輸入對應的編號。如在 node-01 上,myid文件內容就是
1,node-02 上就是 2,node-03 上就是 3:
[root@cloud ~]# vi/home/jeesz/zookeeper/node-01/data/myid
1
[root@cloud ~]# vi/home/jeesz/zookeeper/node-02/data/myid
2
[root@cloud ~]# vi/home/jeesz/zookeeper/node-03/data/myid
3
8、 在防火牆中打開要用到的埠 218X、288X、388X
[root@cloud ~]# vi/etc/sysconfig/iptables
如伺服器 01 增加以下 3 行:
## zookeeper
-A INPUT -m state --state NEW -m tcp -p tcp--dport 2181 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp--dport 2881 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp--dport 3881 -j ACCEPT
重啟防火牆:
[root@cloud ~]# serviceiptables restart
查看防火牆埠狀態:
[root@cloud ~]# serviceiptables status
註意:centos7中使用方法不同,大家可以上網查詢一下
9、 啟動並測試 zookeeper(要用 jeesz 用戶啟動,不要用 root):
(1) 到/home/jeesz/zookeeper/node-0X/bin 目錄中執行:
[root@cloud ~]# /home/jeesz/zookeeper/node-01/bin/zkServer.shstart
[root@cloud ~]# /home/jeesz/zookeeper/node-02/bin/zkServer.shstart
[root@cloud ~]# /home/jeesz/zookeeper/node-03/bin/zkServer.shstart
(2) 輸入 jps 命令查看進程:
[root@cloud ~]# jps
1456 QuorumPeerMain
其中,QuorumPeerMain 是 zookeeper 進程,說明啟動正常
(3) 查看狀態:
[root@cloud ~]# /home/jeesz/zookeeper/node-01/bin/zkServer.sh status
(4) 查看 zookeeper 服務輸出信息:
由於服務信息輸出文件在/home/jeesz/zookeeper/node-0X/bin/zookeeper.out
[root@cloud ~]# tail-500f zookeeper.out
10、停止 zookeeper 進程:
[root@cloud ~]# zkServer.shstop
11、配置 zookeeper 開機使用 jeesz 用戶啟動:
編輯 node-01、node-02、node-03 中的/etc/rc.local 文件,分別加入:
[root@cloud ~]# vi/etc/rc.local
su - root -c'/home/jeesz/zookeeper/node-01/bin/zkServer.sh start'
su - root -c '/home/jeesz/zookeeper/node-02/bin/zkServer.shstart'
su - root -c'/home/jeesz/zookeeper/node-03/bin/zkServer.sh start'
源碼地址獲取:mingli
有興趣的朋友們可以前往球球哦~一起分享學習技術:2042849237
請大家持續關註搭建分散式架構7--Zookeeper註冊中心安裝