1、下載zookeeper安裝包
下載地址:http://zookeeper.apache.org/releases.html
2、創(chuàng)建存放的目錄解壓:
mkdir /usr/local/zookeeper
tar -zxvf zookeeper-3.4.11.tar.gz
3、進入zookeeper/conf/目錄下蜜托,將改目錄下的zoo_sample.cfg配置文件拷貝4份禾酱,依次為zoo.cfg? zoo1.cfg? zoo2.cfg? zoo3.cfg
4微酬、使用vim編輯zoo1.cfg? zoo2.cfg?zoo3.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/zookeeper/zookeeper-3.4.11/server1/data
dataLogDir=/usr/local/zookeeper/zookeeper-3.4.11/server1/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=127.0.0.1:8881:7771
server.2=127.0.0.1:8882:7772
server.3=127.0.0.1:8883:7773
配置說明
tickTime:這個時間是作為 Zookeeper 服務器之間或客戶端與服務器之間維持心跳的時間間隔绘趋,也就是每個 tickTime 時間就會發(fā)送一個心跳。
initLimit:這個配置項是用來配置 Zookeeper 接受客戶端(這里所說的客戶端不是用戶連接 Zookeeper 服務器的客戶端颗管,而是 Zookeeper 服務器集群中連接到 Leader 的 Follower 服務器)初始化連接時最長能忍受多少個心跳時間間隔數(shù)陷遮。當已經超過 10個心跳的時間(也就是 tickTime)長度后 Zookeeper 服務器還沒有收到客戶端的返回信息,那么表明這個客戶端連接失敗垦江∶辈觯總的時間長度就是 10*2000=20 秒
syncLimit:這個配置項標識 Leader 與 Follower 之間發(fā)送消息,請求和應答時間長度比吭,最長不能超過多少個 tickTime 的時間長度绽族,總的時間長度就是 5*2000=10秒
dataDir:顧名思義就是 Zookeeper 保存數(shù)據(jù)的目錄,默認情況下梗逮,Zookeeper 將寫數(shù)據(jù)的日志文件也保存在這個目錄里项秉。
clientPort:這個端口就是客戶端連接 Zookeeper 服務器的端口,Zookeeper 會監(jiān)聽這個端口慷彤,接受客戶端的訪問請求娄蔼。
server.A=B:C:D:其中 A 是一個數(shù)字,表示這個是第幾號服務器底哗;B 是這個服務器的 ip 地址岁诉;C 表示的是這個服務器與集群中的 Leader 服務器交換信息的端口;D 表示的是萬一集群中的 Leader 服務器掛了跋选,需要一個端口來重新進行選舉涕癣,選出一個新的 Leader,而這個端口就是用來執(zhí)行選舉時服務器相互通信的端口前标。如果是偽集群的配置方式坠韩,由于 B 都是一樣,所以不同的 Zookeeper 實例通信端口號不能一樣炼列,所以要給它們分配不同的端口號只搁。
5、使用vim修改zoo2.cfg的dataDir=dataDir=/usr/local/zookeeper/zookeeper-3.4.11/server2/data
dataLogDir=/usr/local/zookeeper/zookeeper-3.4.11/server2/logs
,clientPort=2182,修改zoo3.cfg的dataDir=/usr/local/zookeeper/zookeeper-3.4.11/server3/data
dataLogDir=/usr/local/zookeeper/zookeeper-3.4.11/server3/logs
clientPort=2183俭尖。dataDir目錄開始不存在氢惋,需要手動創(chuàng)建,并在各data文件下創(chuàng)建名為myid的文件稽犁,文件內容對應服務器編號
6焰望、啟動
進入目錄/usr/local/zookeeper/zookeeper-3.4.11/bin目錄,執(zhí)行命令:
7已亥、聯(lián)通測試
Connecting to 127.0.0.1:21822018-04-15 11:37:12,454 [myid:] - INFO [main:Environment@100] - Client environment:zookeeper.version=3.4.11-37e277162d567b55a07d1755f0b31c32e93c01a0, built on 11/01/2017 18:06 GMT2018-04-15 11:37:12,457 [myid:] - INFO [main:Environment@100] - Client environment:host.name=izbp1a3y9d1a133g371xe3z2018-04-15 11:37:12,458 [myid:] - INFO [main:Environment@100] - Client environment:java.version=1.8.0_1612018-04-15 11:37:12,459 [myid:] - INFO [main:Environment@100] - Client environment:java.vendor=Oracle Corporation2018-04-15 11:37:12,460 [myid:] - INFO [main:Environment@100] - Client environment:java.home=/usr/java/jdk1.8.0_161/jre2018-04-15 11:37:12,460 [myid:] - INFO [main:Environment@100] - Client environment:java.class.path=/usr/local/zookeeper/zookeeper-3.4.11/bin/../build/classes:/usr/local/zookeeper/zookeeper-3.4.11/bin/../build/lib/*.jar:/usr/local/zookeeper/zookeeper-3.4.11/bin/../lib/slf4j-log4j12-1.6.1.jar:/usr/local/zookeeper/zookeeper-3.4.11/bin/../lib/slf4j-api-1.6.1.jar:/usr/local/zookeeper/zookeeper-3.4.11/bin/../lib/netty-3.10.5.Final.jar:/usr/local/zookeeper/zookeeper-3.4.11/bin/../lib/log4j-1.2.16.jar:/usr/local/zookeeper/zookeeper-3.4.11/bin/../lib/jline-0.9.94.jar:/usr/local/zookeeper/zookeeper-3.4.11/bin/../lib/audience-annotations-0.5.0.jar:/usr/local/zookeeper/zookeeper-3.4.11/bin/../zookeeper-3.4.11.jar:/usr/local/zookeeper/zookeeper-3.4.11/bin/../src/java/lib/*.jar:/usr/local/zookeeper/zookeeper-3.4.11/bin/../conf:2018-04-15 11:37:12,460 [myid:] - INFO [main:Environment@100] - Client environment:java.library.path=/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib2018-04-15 11:37:12,460 [myid:] - INFO [main:Environment@100] - Client environment:java.io.tmpdir=/tmp2018-04-15 11:37:12,460 [myid:] - INFO [main:Environment@100] - Client environment:java.compiler=2018-04-15 11:37:12,460 [myid:] - INFO [main:Environment@100] - Client environment:os.name=Linux
2018-04-15 11:37:12,460 [myid:] - INFO? [main:Environment@100] - Client environment:os.arch=amd64
2018-04-15 11:37:12,460 [myid:] - INFO? [main:Environment@100] - Client environment:os.version=3.10.0-693.2.2.el7.x86_64
2018-04-15 11:37:12,460 [myid:] - INFO? [main:Environment@100] - Client environment:user.name=lzb
2018-04-15 11:37:12,460 [myid:] - INFO? [main:Environment@100] - Client environment:user.home=/home/lzb
2018-04-15 11:37:12,460 [myid:] - INFO? [main:Environment@100] - Client environment:user.dir=/usr/local/zookeeper/zookeeper-3.4.11/bin
2018-04-15 11:37:12,461 [myid:] - INFO? [main:ZooKeeper@441] - Initiating client connection, connectString=127.0.0.1:2182 sessionTimeout=30000 watcher=org.apache.zookeeper.ZooKeeperMain$MyWatcher@446cdf90
2018-04-15 11:37:12,500 [myid:] - INFO? [main-SendThread(127.0.0.1:2182):ClientCnxn$SendThread@1035] - Opening socket connection to server 127.0.0.1/127.0.0.1:2182. Will not attempt to authenticate using SASL (unknown error)
Welcome to ZooKeeper!
JLine support is enabled
2018-04-15 11:37:12,624 [myid:] - INFO? [main-SendThread(127.0.0.1:2182):ClientCnxn$SendThread@877] - Socket connection established to 127.0.0.1/127.0.0.1:2182, initiating session
2018-04-15 11:37:12,665 [myid:] - INFO? [main-SendThread(127.0.0.1:2182):ClientCnxn$SendThread@1302] - Session establishment complete on server 127.0.0.1/127.0.0.1:2182, sessionid = 0x20000c043e90000, negotiated timeout = 30000
WATCHER::
WatchedEvent state:SyncConnected type:None path:null
[zk: 127.0.0.1:2182(CONNECTED) 0]
出現(xiàn)以上信息就表示成功了