ZooKeeper-3.4.6叢集安裝配置
ZooKeeper是一個分散式開源框架,提供了協調分散式應用的基本服務,它向外部應用暴露一組通用服務——分散式同步(Distributed Synchronization)、命名服務(Naming Service)、叢集維護(Group Maintenance)等,簡化分散式應用協調及其管理的難度,提供高效能的分散式服務。ZooKeeper本身可以以Standalone模式安裝執行,不過它的長處在於通過分散式ZooKeeper叢集(一個Leader,多個Follower),基於一定的策略來保證ZooKeeper叢集的穩定性和可用性,從而實現分散式應用的可靠性。
有關ZooKeeper的介紹,網上很多,也可以參考文章後面,我整理的一些相關連結。
下面,我們簡單說明一下ZooKeeper的配置。
cd /usr/local/zookeeper
2.解壓到指定目錄
準備三臺Linux伺服器,每臺伺服器都放zookeeper壓縮檔案。解壓zookeeper-3.4.6.tar.gz到一個目錄下,比如解壓到根目錄下/zookeeper
資料夾
解壓命令:
tar zxvf zookeeper-3.4.6.tar.gz
3.cp zoo_sample.cfg zoo.cfg
vim zoo.cfg
4.# 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=/home/zookeeper/data dataLogDir=/home/zookeeper/log # the port at which the clients will connect clientPort=2181 server.1=192.168.10.249:2888:3888 server.2=192.168.10.244:2888:3888
設定myid
在我們配置的dataDir指定的目錄下面,建立一個myid檔案,裡面內容為一個數字,用來標識當前主機,conf/zoo.cfg檔案中配置的server.X中X為什麼數字,則myid檔案中就輸入這個數字,例如:
5.啟動ZooKeeper叢集
在ZooKeeper叢集的每個結點上,執行啟動ZooKeeper服務的指令碼,如下所示:
[[email protected] bin]# ./zkServer.sh start
JMX enabled by default
Using config: /usr/local/zookeeper/zookeeper-3.4.6/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[[email protected] bin]# ./zkServer.sh status
JMX enabled by default
Using config: /usr/local/zookeeper/zookeeper-3.4.6/bin/../conf/zoo.cfg
Mode: follower
測試成功。
6.
[[email protected] bin]# ./zkCli.sh -server 192.169.10.249:2181
Connecting to 192.169.10.249:2181
2017-07-20 00:18:40,235 [myid:] - INFO [main:[email protected]] - Client environment:zookeeper.version=3.4.6-1569965, built on 02/20/2014 09:09 GMT
2017-07-20 00:18:40,240 [myid:] - INFO [main:[email protected]] - Client environment:host.name=node8
2017-07-20 00:18:40,240 [myid:] - INFO [main:[email protected]] - Client environment:java.version=1.8.0_102
2017-07-20 00:18:40,244 [myid:] - INFO [main:[email protected]] - Client environment:java.vendor=Oracle Corporation
2017-07-20 00:18:40,244 [myid:] - INFO [main:[email protected]] - Client environment:java.home=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.102-4.b14.el7.x86_64/jre
2017-07-20 00:18:40,244 [myid:] - INFO [main:[email protected]] - Client environment:java.class.path=/usr/local/zookeeper/zookeeper-3.4.6/bin/../build/classes:/usr/local/zookeeper/zookeeper-3.4.6/bin/../build/lib/*.jar:/usr/local/zookeeper/zookeeper-3.4.6/bin/../lib/slf4j-log4j12-1.6.1.jar:/usr/local/zookeeper/zookeeper-3.4.6/bin/../lib/slf4j-api-1.6.1.jar:/usr/local/zookeeper/zookeeper-3.4.6/bin/../lib/netty-3.7.0.Final.jar:/usr/local/zookeeper/zookeeper-3.4.6/bin/../lib/log4j-1.2.16.jar:/usr/local/zookeeper/zookeeper-3.4.6/bin/../lib/jline-0.9.94.jar:/usr/local/zookeeper/zookeeper-3.4.6/bin/../zookeeper-3.4.6.jar:/usr/local/zookeeper/zookeeper-3.4.6/bin/../src/java/lib/*.jar:/usr/local/zookeeper/zookeeper-3.4.6/bin/../conf:
2017-07-20 00:18:40,244 [myid:] - INFO [main:[email protected]] - Client environment:java.library.path=/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
2017-07-20 00:18:40,244 [myid:] - INFO [main:[email protected]] - Client environment:java.io.tmpdir=/tmp
2017-07-20 00:18:40,244 [myid:] - INFO [main:[email protected]] - Client environment:java.compiler=<NA>
2017-07-20 00:18:40,244 [myid:] - INFO [main:[email protected]] - Client environment:os.name=Linux
2017-07-20 00:18:40,244 [myid:] - INFO [main:[email protected]] - Client environment:os.arch=amd64
2017-07-20 00:18:40,245 [myid:] - INFO [main:[email protected]] - Client environment:os.version=3.10.0-514.el7.x86_64
2017-07-20 00:18:40,245 [myid:] - INFO [main:[email protected]] - Client environment:user.name=root
2017-07-20 00:18:40,245 [myid:] - INFO [main:[email protected]] - Client environment:user.home=/root
2017-07-20 00:18:40,245 [myid:] - INFO [main:[email protected]] - Client environment:user.dir=/usr/local/zookeeper/zookeeper-3.4.6/bin
2017-07-20 00:18:40,247 [myid:] - INFO [main:[email protected]] - Initiating client connection, connectString=192.169.10.249:2181 sessionTimeout=30000 [email protected]
Welcome to ZooKeeper!
2017-07-20 00:18:40,289 [myid:] - INFO [main-SendThread(192.169.10.249:2181):[email protected]] - Opening socket connection to server 192.169.10.249/192.169.10.249:2181. Will not attempt to authenticate using SASL (unknown error)
JLine support is enabled
[zk: 192.169.10.249:2181(CONNECTING) 0] 2017-07-20 00:19:10,410 [myid:] - INFO [main-SendThread(192.169.10.249:2181):[email protected]] - Client session timed out, have not heard from server in 30127ms for sessionid 0x0, closing socket connection and attempting reconnect
2017-07-20 00:19:11,515 [myid:] - INFO [main-SendThread(192.169.10.249:2181):[email protected]] - Opening socket connection to server 192.169.10.249/192.169.10.249:2181. Will not attempt to authenticate using SASL (unknown error)
啟動Zookeeper
啟動Zookeeper命令:
./zkServer.sh start
檢視叢集的狀態:
./zkServer.sh status