ZooKeeper集羣部署

**

ZooKeeper集羣部署

**

一、環境
服務器:

IP地址 操作系統
192.168.241.11 CentOs7-1804
192.168.241.12 CentOs7-1611
192.168.241.13 CentOs7-1804

JDK版本:1.8.0_151
ZooKeeper版本:3.4.12

二、軟件安裝
三臺服務器均需要安裝Java JDK和ZooKeeper,Java JDK的安裝本文不再贅述。

1、下載ZooKeeper
官網下載地址:https://www.apache.org/dyn/closer.cgi/zookeeper/
本文下載到的安裝包名爲:zookeeper-3.4.12.tar.gz

2、將安裝包拷貝到服務器上解壓,本文解壓到了/usr/local/lib目錄下。
在這裏插入圖片描述

三、服務和集羣配置
如無特殊說明,以下配置操作均需要在集羣的所有節點執行相同操作。

1、將/usr/local/lib/zookeeper-3.4.12/conf目錄下的zoo_sample.cfg文件重命名或複製爲zoo.cfg文件,編輯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/lib/zookeeper-3.4.12/data

# 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=192.168.241.11:2888:3888
server.2=192.168.241.12:2888:3888
server.3=192.168.241.13:2888:3888

與zoo_sample.cfg相比,修改了dataDir的值,以及增加了最後三行:
server.1=192.168.241.11:2888:3888
server.2=192.168.241.12:2888:3888
server.3=192.168.241.13:2888:3888
這幾行是集羣中所有節點的信息,格式爲:server.A=B:C:D,其中A是節點在集羣中的ID,必須是一個整數,如果用“node1”之類的字符串,啓動zookeeper時會報錯;B是節點的IP地址;C是集羣中節點與leader交換信息所用的端口,實測表明,只有leader節點啓動了這個端口;D是當集羣中的leader節點掛掉時,選舉新leader所用的端口。

zoo.cfg中其他配置項的作用,本文不再贅述,不瞭解的讀者請自行百度。
注意:網上大部分文章都配置了dataLogDir配置項,說是指定zookeeper日誌的輸出目錄,但本文實測時,如果配置了這個目錄,zookeeper就會啓動失敗,原因不詳。本文有其他方法指定zookeeper的日誌輸出路徑,下文會提到。

2、創建標識文件。
此步驟在各節點中的操作略有不同,請讀者注意!
首先需要創建配置文件中dataDir配置項指定的目錄:

mkdir /usr/local/lib/zookeeper-3.4.12/data

然後在dataDir配置項指定的目錄下創建myid文件,文件內容爲當前節點在集羣中的ID,即配置文件zoo.cfg中,配置的節點信息“server.A=B:C:D”中,A的值。如本文有三個節點,根據zoo.cfg中的配置信息:
server.1=192.168.241.11:2888:3888
server.2=192.168.241.12:2888:3888
server.3=192.168.241.13:2888:3888
需要在節點192.168.241.11上執行:

echo "1" > /usr/local/lib/zookeeper-3.4.12/data/myid

在節點192.168.241.12上執行:

echo "2" > /usr/local/lib/zookeeper-3.4.12/data/myid

在節點192.168.241.13上執行:

echo "3" > /usr/local/lib/zookeeper-3.4.12/data/myid

四、ZooKeeper的啓動和停止
使用zookeeper安裝目錄下的bin目錄裏的zkServer.sh文件來啓停zookeeper服務,以本文爲例:
啓動命令

/usr/local/lib/zookeeper-3.4.12/bin/zkServer.sh start

停止命令

/usr/local/lib/zookeeper-3.4.12/bin/zkServer.sh stop

狀態查看命令

/usr/local/lib/zookeeper-3.4.12/bin/zkServer.sh status

注意:需要啓動了兩個節點以後,通過上述命令查看時才能看到正常的狀態。
由於沒有指定日誌輸出目錄,默認會在zookeeper安裝目錄下的bin目錄裏生成日誌文件,名爲zookeeper.out,如果遇到問題,可在日誌文件中查看詳細信息。

五、配置使用systemd啓停ZooKeeper
本文對systemd相關知識不再贅述,不瞭解的讀者請自行百度。

1、創建並編輯/usr/lib/systemd/system/zkServer.service文件,文件內容如下:

[Unit]
Description=ZooKeeper Server
Documentation=https://zookeeper.apache.org/
After=network-online.target
Wants=network-online.target

[Service]
Type=forking
User=zookeeper
Group=zookeeper
WorkingDirectory=/usr/local/lib/zookeeper-3.4.12
Environment=ZOO_LOG_DIR=/usr/local/lib/zookeeper-3.4.12/logs
ExecStart=/usr/local/lib/zookeeper-3.4.12/bin/zkServer.sh start
ExecStop=/usr/local/lib/zookeeper-3.4.12/bin/zkServer.sh stop
Restart=on-failure
RestartSec=10s

[Install]
WantedBy=multi-user.target

配置簡要說明:
Type:這個配置項的值需要設置爲“forking”,我一開始配置爲“notify”,結果無法通過systemd啓動,原因不詳。
User和Group:顯然,這是指定啓動zookeeper的用戶和組,如果不指定,默認使用root用戶啓動。如果設置了用戶和組,需要注意zookeeper相關目錄和文件的權限問題,否則可能導致啓動失敗。
Environment:這個配置項定義環境變量,這裏定義了環境變量“ZOO_LOG_DIR”,這個變量指定了zookeeper運行日誌的輸出目錄。網上有教程說這個配置必須指定,經過實測,不指定也可以正常啓動,也許是因爲我配置了WorkingDirectory的緣故,日誌會生成在WorkingDirectory指定的目錄下。

2、使用systemd啓停zookeeper。
啓動

systemctl start zkServer

在這裏插入圖片描述
停止

systemctl stop zkServer

設置爲開機啓動

systemctl enable zkServer.service
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章