1、下載下傳與安裝
1.1、準備 Java 運作環境
1.2、下載下傳 ZooKeeper 安裝包
下載下傳位址: http://zookeeper.apache.org/releases.html
1.3、安裝與配置
解壓至某目錄,以$ZK_HOME表示zookeeper安裝目錄
參考:
http://blog.csdn.net/morning99/article/details/40426133
http://zookeeper.apache.org/doc/current/index.html
https://cwiki.apache.org/confluence/display/ZOOKEEPER/HowToContribute
2、日志配置
2.1、編輯zookeeper環境變量
編輯$ZK_HOME/bin/zkEnv.sh,找到配置ZOO_LOG_DIR以及ZOO_LOG4J_PROP的位置(大概在Line56,Line61)
if [ "x${ZOO_LOG_DIR}" = "x" ]
then
#配置zookeeper日志輸出存放路徑
ZOO_LOG_DIR="/home/xxx/zookeeper-2181/logs"
fi
if [ "x${ZOO_LOG4J_PROP}" = "x" ]
then
#配置日志輸出級别,這裡把幾個級别一并配上
ZOO_LOG4J_PROP="INFO,CONSOLE,ROLLINGFILE,TRACEFILE"
fi
2.2、編輯Log4J配置檔案log4j.properties
此部分參考Log4J配置
# Define some default values that can be overridden by system properties
zookeeper.root.logger=INFO, CONSOLE, ROLLINGFILE, TRACEFILE
zookeeper.console.threshold=INFO
zookeeper.log.dir=.
zookeeper.log.file=zookeeper.log
zookeeper.log.threshold=ERROR
zookeeper.tracelog.dir=.
zookeeper.tracelog.file=zookeeper_trace.log
log4j.rootLogger=${zookeeper.root.logger}
3、運作模式與叢集搭建
分為以下三種模式:
- 單機模式
- 僞叢集模式
- 叢集模式
參考http://developer.51cto.com/art/201702/529953.htm
3.1、單機模式
zoo.cfg配置檔案如下:
tickTime= ##Zookeeper最小時間單元,機關毫秒(ms),預設值為3000
dataDir=/var/lib/zookeeper ##Zookeeper伺服器存儲快照檔案的目錄,必須配置
dataLogDir=/var/lib/log ##Zookeeper伺服器存儲事務日志的目錄,預設為dataDir
clientPort= ##伺服器對外服務端口,一般設定為2181
initLimit= ##Leader伺服器等待Follower啟動并完成資料同步的時間,預設值10,表示tickTime的10倍
syncLimit= ##Leader伺服器和Follower之間進行心跳檢測的最大延時時間,預設值5,表示tickTime的5倍
3.2、僞叢集模式
這是一種特殊的叢集模式,即叢集的所有伺服器都部署在一台機器上。當你手頭上有一台比較好的機器,如果作為單機模式進行部署,就會浪費資源,這種情況下,ZooKeeper允許你在一台機器上通過啟動不同的端口來啟動多個 ZooKeeper 服務執行個體,以此來以叢集的特性來對外服務。
- 叢集數量最低3個(必須是奇數,便于投票)
- 複制已安裝的zookeeper,修改日志輸出配置
- 修改zoo.cfg,三個zookeeper分别對應2181,2182,2183
#配置啟動時的資料存放路徑
dataDir=/tmp/zookeeper/
#啟動端口
clientPort=
#三個zookeeper的server.id=host:port1:port2
#其中,id 被稱為 Server ID,用來辨別該機器在叢集中的機器序号(在每台機器的 dataDir 目錄下建立 myid 檔案,檔案内容即為該機器對應的 Server ID 數字)。
#host 為機器 IP,port1 用于指定 Follower 伺服器與 Leader 伺服器進行通信和資料同步的端口,port2用于進行 Leader 選舉過程中的投票通信。
#注意,同一台機器上,為避免端口号占用,需要設定不同的端口
server=localhost::
server=localhost::
server=localhost::
- 在 dataDir 目錄下建立名為 myid 的檔案,在檔案第一行寫上對應的 Server ID(即1,2,3)
3.3、叢集模式
此模式與僞叢集不同的地方就是,多個 ZooKeeper 叢集通常由一組機器組成,一般 3 台(假設IP為IP1,IP2,IP3)以上就可以組成一個可用的 ZooKeeper 叢集了。組成 ZooKeeper 叢集的每台機器都會在記憶體中維護目前的伺服器狀态,并且每台機器之間都會互相保持通信。隻要叢集中存在超過一半的機器能夠正常工作,那麼整個叢集就能夠正常對外服務。ZooKeeper 的用戶端程式會選擇和叢集中的任意一台伺服器建立一個 TCP 連接配接,一旦用戶端和伺服器斷開連接配接,用戶端就會自動連接配接到叢集中的其他伺服器。
在三台機器上都安裝一個zookeeper,配置可以完全一樣,先配置一台,其餘可直接模仿。
- 按照之前的說明,配置日志
- 修改zoo.cfg,三台機器配置不變,可全部使用2181端口
#配置啟動時的資料存放路徑
dataDir=/tmp/zookeeper/
#啟動端口
clientPort=
#三個zookeeper的server.id=host:port1:port2
#其中,id 被稱為 Server ID,用來辨別該機器在叢集中的機器序号(在每台機器的 dataDir 目錄下建立 myid 檔案,檔案内容即為該機器對應的 Server ID 數字)。
#host 為機器 IP,port1 用于指定 Follower 伺服器與 Leader 伺服器進行通信和資料同步的端口,port2用于進行 Leader 選舉過程中的投票通信。
server=IP1::
server=IP2::
server=IP3::
- 在 dataDir 目錄下建立名為 myid 的檔案,在檔案第一行寫上對應的 Server ID