Zookeeper集群安裝部署



 zookeeper集群:

zookeeper作為一個開源的分布式應用協調系統,已經用到了許多分布式項目中,用來狀態同步服務、集群管理、分布式應用配置項的管理等工作。

ZooKeeper的工作模式有三種:單機模式、集群模式、偽集群模式。

  •   單機模式:Zookeeper只運行在一台服務器上,適合測試用;
  •   偽集群模式:就是在一台機器上運行多個Zookeeper 實例;
  •   集群模式:運行於一個至少有三個節點以上集群中,適合生產環境;

Zookkeeper 集群中有三種角色,leader -主節點 、follower -從節點 、observer-觀察節點 ,一個zookeeper集群中,可以有多個follower、observer服務器,但是必需只能有一個leader服務器。如果leader服務器掛掉了,剩下的服務器集群會通過半數以上投票選出一個新的leader服務器。Zookeeper通過復制來實現高可用性,只要集群中半數以上的節點處於可用狀態,它就能夠保證服務繼續。為什么一定要超過半數呢?半數以上投票通過:可以這樣理解。客戶端的增刪改操作無論訪問到了哪台zookeeper服務器,最終都會被轉發給leader服務器,再由leader服務器分給zookeeper集群中所有follower服務器去投票(投票指的是在內存中做增刪改操作),半數投票通過就被認為操作可執行(commit),否則不可執行,因此在生產場集群中至少要三個節點以上,一般節點是單數,如3、5、7 。


 

下面介紹一下搭建Zookeeper集群(3台server)

1. 安裝環境

1)  操作系統為三台linux虛擬機,其IP地址分別為:

      uatzp01:10.168.18.97

      uatzp02:10.168.18.98

      uatzp03:10.168.18.99

2)   服務器配置:

     2 Core / 4G Mem / 60G HDD

3)   服務器軟件版本:

       linux:CentOS6.6

      zookeeper: zookeeper-3.4.8

      jdk: jdk1.7.0_80

2. 下載

1)  zookeeper下載地址:

    http://apache.01link.hk/zookeeper/zookeeper-3.4.8/zookeeper-3.4.8.tar.gz

2)  jdk下載地址:

    http://download.oracle.com/otn/java/jdk/7u80-b15/jdk-7u80-linux-x64.tar.gz

3. 安裝與配置jdk和zookeeper

3.1. jdk安裝與配置

1)  解壓jdk安裝包

     $ sudo tar -zxvf jdk-7u80-linux-x64.tar.gz

2)  修改配置文件/etc/profile添加如下內容:

    export JAVA_HOME=/usr/local/jdk1.7.0_80

    export PATH=$JAVA_HOME/bin:$PATH

    export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

3)  使配置立即生效

    $ . /etc/profile

4)  測試是否安裝成功

 執行java -version出現如下內容說明安裝成功

    java version "1.7.0_80"

    Java(TM) SE Runtime Environment (build 1.7.0_80-b15)

    Java HotSpot(TM) 64-Bit Server VM (build 24.80-b11, mixed mode)

 

3.2. zookeeper安裝與配置(10.168.18.97)

1)  修改/etc/hosts文件加入如下配置

   10.168.18.97    uatzp01.uaf.com.cn uat-zookeeper01  uatzp01

   10.168.18.98    uatzp02.uaf.com.cn uat-zookeeper02  uatdzp02

   10.168.18.99     uatzp03.uaf.com.cn uat-zookeeper03 uazp03

 

2)  解壓zookeeper安裝包

    $ sudo tar -zxvf zookeeper-3.4.8.tar.gz

3)  在/usr/local/zp/zookeeper-3.4.8目錄下創建以下目錄

   $ cd /usr/local/zk/zookeeper-3.4.8

   $ sudo mkdir data

   $ sudo mkdir logs

4)  將zookeeper-3.4.8目錄下的zoo_sample.cfg文件拷貝一份,命名為zoo.cfg

   $ sudo cp zoo_sample.cfg zoo.cfg

5)  修改zoo.cfg配置文件

   $ sudo vi 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 directory where the snapshot is stored.

# do not use /tmp for storage, /tmp here is just

# example sakes.

dataDir=/usr/local/zp/zookeeper-3.4.8/data

dataLogDir=/usr/local/zp/zookeeper-3.4.8/logs

# 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

server.1= uatzp01:2888:3888

server.2= uatzp02:2888:3888

server.3= uatzp03:2888:3888

配置參數詳解:

參數名

說明

tickTime

ZK中的一個時間單元(心跳時間間隔)。單位:毫秒

initLimit

初始化時最長能忍受多少個心跳時間間隔數。

syncLimit

配置項標識 Leader 與 Follower 之間發送消息,請求和應答時間長度,最長不能超過多少個 tickTime 的時間長度。

dataDir

存儲快照文件snapshot的目錄。

dataLogDir

事務日志輸出目錄。

clientPort

對外服務端口號

server.1= uatzp01:2888:3888

server后面的數字代表第幾號服務器,uatzp01,uatzp02為集群服務器IP地址映射,2888端口號是zk服務之間通信的端口,3888是zookeeper與其他應用程序通信的端口。

server.2= uatzp02:2888:3888

 

server.3= uatzp03:2888:3888

 

6)  在dataDir=/usr/local/zp/zookeeper-3.4.8/data目錄下創建myid文件

  $ sudo vi myid

    編輯myid文件,10.168.18.97 服務器設置內容為1,10.168.18.98 服務器設置內容為2,10.168.18.99 服務器設置內容為3。

 

7)  zpuser用戶下修改sudo vi /home/zpuser/.bash_profile,增加如下zookeeper配置

  #zookeeper env

   export ZOOKEEPER_HOME=/usr/local/zp/zookeeper-3.4.8

   export PATH=$ZOOKEEPER_HOME/bin:$PATH

 執行source /home/zpuser/.bash_profile使設置立即生效。

8)  設置zookeeper開機使用user用戶啟動相關服務

編輯 sudo vi /etc/rc.local添加如下配置:

   su - zpuser -c '/usr/local/zp/zookeeper-3.4.8/bin/zkServer.sh start'

9)  測試是否配置成功

  • 切換到zookeeper安裝目錄

      $ cd /usr/local/zpzookeeper-3.4.8

  • 執行zookeeper啟動命令

        $ zkServer.sh start

   出現如下則說明成功:

    $ zkServer.sh status


      ZooKeeper JMX enabled by default

      Using config: /usr/local/zp/zookeeper-3.4.8/bin/../conf/zoo.cfg

     Starting zookeeper ... STARTED

通過此命令查看zk狀態


   ZooKeeper JMX enabled by default

   Using config: /usr/local/zp/zookeeper-3.4.8/bin/../conf/zoo.cfg

   Mode: leader

 


   ZooKeeper JMX enabled by default

   Using config: /usr/local/zp/zookeeper-3.4.8/bin/../conf/zoo.cfg

   Mode: follower

 

  • 通過ps -ef|grep zookeeper命令查看進程。

3.3. zookeeper安裝與配置(10.168.18.98、99)

參照以上10.168.18.98、99 設置即可。

 


 

 


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com