1. 程式人生 > >Zookeeper集群安裝部署

Zookeeper集群安裝部署

機器 apr comm aps 請求 com ron build 增刪改


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 設置即可。


Zookeeper集群安裝部署