搭建分佈式架構6--ZooKeeper 集羣的安裝

ZooKeeper是一個分佈式開源框架,提供了協調分佈式應用的基本服務,它向外部應用暴露一組通用服務——分佈式同步(Distributed Synchronization).命名服務(Naming Service).集羣維護(Group Maintenance)等,簡化分佈式應用協調及其管理的難度,提供高性能的分佈式服務。ZooKeeper自己能夠以Standalone模式安裝運行,不過它的長處在於經過分佈式ZooKeeper集羣(一個Leader,多個Follower),基於必定的策略來保證ZooKeeper集羣的穩定性和可用性,從而實現分佈式應用的可靠性。(我是網上抄寫的,方便你們學習,請勿吐槽!!)node

Dubbo 建議使用 Zookeeper 做爲服務的註冊中心。 apache

Zookeeper 集羣中只要有過半的節點是正常的狀況下,那麼整個集羣對外就是可用的。centos

正是基於這個 特性,要將 zookeeper集羣的節點數量要爲奇數(2n+1:如 三、五、7 個節點)服務器

聲明:以上都是官網的原話,此教程主要是供你們學習,請各位不要吐槽架構

根據您本身的業務來決定服務器配置,我這邊定義了三臺服務器,以下:框架

服務器1:xxx.xxx.xxx.xx1  端口:218一、288一、3881 tcp

服務器2:xxx.xxx.xxx.xx2  端口:218二、288二、3882 分佈式

服務器3:xxx.xxx.xxx.xx3  端口:218三、288三、3883性能

一、 修改操做系統的/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

二、 下載或上傳 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

三、 因爲我已經下載並上傳了文件,故這邊直接記錄詳細的安裝過程,解壓 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

四、 分別在 zookeeper 節點目錄下建立如下目錄:

[root@cloud  ~]# /home/jeesz/zookeeper/node-0X (X 表明節點號 一、二、3)

[root@cloud  node-0X]# mkdirdata

[root@cloud  node-0X] # mkdirlogs

五、 將 zookeeper/node-0X/conf 目錄下的 zoo_sample.cfg 文件拷貝一份,命名爲 zoo.cfg:

[root@cloud  conf] cp zoo_sample.cfgzoo.cfg

六、 修改 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

七、 在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

八、 在防火牆中打開要用到的端口 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中使用方法不一樣,你們能夠上網查詢一下

九、 啓動並測試 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

十、中止 zookeeper 進程:

[root@cloud  ~]# zkServer.shstop

十一、配置 zookeeper 開機使用 jeesz 用戶啓動:

編輯 node-0一、node-0二、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註冊中心安裝

相關文章
相關標籤/搜索