zookeeper之一 安裝和配置(單機+集群)


這里我以zookeeper3.4.10.tar.gz來演示安裝,安裝到/usr/local/soft目錄下。

一.單機版配置

1.安裝和配置

#1.下載
wget http://apache.fayea.com/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gz
#2.解壓
tar -zxvf zookeeper3.4.10.tar.gz

#3.在zookeeper-3.4.10/conf目錄下創建目錄: 
mkdir data 
mkdir logs

#4.將zookeeper3.4.10/conf目錄下的zoo_sample.cfg 文件拷貝一份,命名為為zoo.cfg
cp zoo_sample.cfg zoo.cfg

#5.修改zoo.cfg配置文件
vim zoo.cfg
#修改為上面創建的目錄
dataDir=/usr/local/soft/zookeeper-3.4.10/data 
#【該配置項為優化項,用於單獨存放事務日志。參考官方文檔】
dataLogDir=/usr/local/soft/zookeeper-3.4.10/logs

說明: 
dataDir是快照存儲的目錄。配置文件中已經明確說明不要使用/tmp來存儲,/tmp在這里僅僅是為了演示的目的。 
dataLogDir是一個優化項,可以參考官方說明:優化

大致意思是:指明一個明確的事務日志目錄可以在更新時降低延遲。默認的事務日志存放位置與data快照和myid文件存放位置相同。使用dataLogDir參數就可以指定一個不同的目錄。

2.配置環境變量(可選) 

配置環境變量后,則可在bin目錄之外直接使用相應的命令。

#打開配置
vim /etc/profile

#在文件尾加入以下內容
export ZOOKEEPER_HOME=/usr/local/soft/zookeeper-3.4.10
export PATH=$PATH:$ZOOKEEPER_HOME/bin

#刷新配置
source /etc/profile

3.啟動(不要使用root用戶啟動)

#啟動
zkServer.sh start
#停止
zkServer.sh stop
#查看運行狀態
zkServer.sh status

運行狀態中standalone表明當前為單節點模式。

4.設置開機啟動(可選。生產環境下需要) 
設置開機啟動有兩種方式,分別對應/etc/rc.d目錄下的init.d目錄和rc.local文件。

說明: 由於linux建立了軟鏈接init.d -> rc.d/init.d,rc.local -> rc.d/rc.local的緣故,所以/etc/rc.d/init.d可以簡寫為/etc/init.d,同樣/etc/rc.d/rc.local可簡寫為/etc/rc.local
①方式一:開機啟動腳本 
該方式類似於windows的’啟動’目錄,里面的批處理文件會在系統啟動后自動運行。對應/etc/rc.d/init.d目錄。 
打開/etc/rc.d/rc.local文件,加入以下內容

#以非root用戶來啟動腳本
su - 用戶名 -c '/usr/local/soft/zookeeper-3.4.10/zkServer.sh start'

然后,重啟試試。

②方式二:開機自啟動服務服務 

另一種是做成開機自啟動服務,這類似於windows中的系統服務,這些服務會在系統啟動時自動啟動。對應/etc/rc.d/rc.local文件。

#進入/etc/rc.d/init.d目錄
cd /etc/rc.d/init.d
#創建zookeeper文件(每個服務對應一個文件),並授予執行權限
touch zookeeper
chomod +x zookeeper

#編輯zookeeper文件(創建zookeeper服務)
vim zookeeper
加入如下內容(這里使用的是root用戶)
    #!/bin/bash
    #chkconfig:2345 20 90
    #description:zookeeper
    #processname:zookeeper
    case $1 in
              start) su root /usr/local/soft/zookeeper-3.4.10/bin/zkServer.sh start;;
              stop) su root /usr/local/soft/zookeeper-3.4.10/bin/zkServer.sh stop;;
              status) su root /usr/local/soft/zookeeper-3.4.10/bin/zkServer.sh status;;
              restart) su root /usr/local/soft/zookeeper-3.4.10/bin/zkServer.sh restart;;
              *)  echo "require start|stop|status|restart"  ;;
    esac

#將zookeeper服務添加到開機啟動項
chkconfig –add zookeeper
#查看開機自啟項中是否已有zookeeper服務
chkconfig --list
#重啟系統試試
#測試服務
service zookeeper start/stop/restart/status

二、配置參數說明

1.tickTime:
Zookeeper服務器之間或客戶端與服務器之間維持心跳的時間間隔,也就是每個 tickTime 時間就會發送一個心跳。tickTime以毫秒為單位。
tickTime=2000

2.initLimit:Leader-Follow初始通信時限
集群中的follower服務器(F)與leader服務器(L)之間初始連接時能容忍的最多心跳數(tickTime的數量)。啟動有快有慢,超過該值則認為啟動失敗。
initLimit=5

3.syncLimit:LF同步通信時限
集群中的follower服務器與leader服務器之間請求和應答之間能容忍的最多心跳數(tickTime的數量)。
syncLimit=2

4.dataDir:數據文件目錄
Zookeeper保存數據的目錄,默認情況下,Zookeeper將寫數據的日志文件也保存在這個目錄里。
dataDir=/home/michael/opt/zookeeper/data

5.clientPort:客戶端連接端口
客戶端連接 Zookeeper 服務器的端口,Zookeeper 會監聽這個端口,接受客戶端的訪問請求。
clientPort=2181

6.服務器名稱與地址:集群信息(服務器編號,服務器地址,LF通信端口,選舉端口)
這個配置項的書寫格式比較特殊,規則如下:
server.N=YYY:A:B

server.1=test05:2888:3888
server.2=test06:2888:3888
server.3=test07:2888:3888

三、集群版配置

為了高可用,通常會配置zookeeper集群。Zookeeper集群中只要有過半的節點是正常的情況下,那么整個集群對外就是可用的。正是基於這個特性,要將ZK集群的節點數量要為奇數(2n+1:如3、5、7個節點)較為合適。

以下是由三台zookeeper組成的集群的配置。
1.添加配置
只需要在前面單機配置的基礎上,在配置文件追加如下內容

#服務器編號,服務器地址,Leader-Follow通信端口,選舉端口
server.1=test01:2888:3888
server.2=test02:2888:3888
server.3=test03:2888:3888

說明:服務器地址可以直接寫成ip形式,但推薦使用了ip與主機名綁定形式。 
只需在/etc/hosts文件中添加:

# zookeeper servers 
192.168.8.88   test01

2.驗證集群 
分別啟動三個zookeeper節點,查看運行狀態。

zkServer.sh status

如果集群正常,則三台zookeeper都不再是standalone模式,而是會有一個leader模式和兩個follower模式。其中leader是由zookeeper的選舉策略選舉產生的。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM