zookeeper集羣搭建

1.因爲是第一次搭建zk的集羣,過程當中遇到些問題,給本身也給遇到問題的人提供一種可能解決問題的方法。html

第一步:下載zk的最新版,我下的是3.4.9,在zk的官網,下載後解壓到/usr/localweb

tar -zxvf zookeeper-3.4.9apache

第二部:在conf 目錄下,複製zoo_sample.cfg 另起名zoo.cfg(爲何叫這個名字我也不清楚,應該是zk的程序檢測須要這個文件),配置zoo.cfgsocket

mv zoo_sample.cfg /usr/local/zookeeper-3.4.9/conf/zoo.cfgide

gedit 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=/tmp/zookeeper
dataLogDir=/tmp/zookeeperLogs
# 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.154.129:2888:3888
server.2=192.168.154.133:2888:3888
server.3=192.168.154.132:2888:3888ui

 

上圖中的紅色部分是集羣須要配置的,this

集羣中的每臺機器都須要感知整個集羣是由哪幾臺機器組成的,在配置文件中,能夠按照這樣的格式,每行寫一個機器配置:server.id=host:port:port. 關於這個id,咱們稱之爲Server ID,標識host機器在集羣中的機器序號,在每一個ZK機器上,咱們須要在數據目錄(數據目錄就是dataDir參數指定的那個目錄)下建立一個myid文件,myid中就是這個Server ID數字。spa

 

在ZooKeeper的設計中,集羣中任意一臺機器上的zoo.cfg文件的內容都是一致的。所以最好是用SVN把這個文件管理起來,保證每一個機器都能共享到一份相同的配置。設計

關於myid文件。myid文件中只有一個數字,即一個Server ID。例如,server.1 的myid文件內容就是“1”。注意,請確保每一個server的myid文件中id數字不一樣,而且和server.id=host:port:port中的id一致。另外,id的範圍是1~255。

 

 

我就是由於以前不知道  myid 在哪裏建立的,致使用bin/zkServer.sh 啓動後輸入jps 後找不到 zk的啓動進程QuorumPeerMain,而後用bin/zkCli.sh -server 192.168.154.129:2181

一直報錯:Session 0x0 for server null, unexpected error, closing socket connection and attempting reconnect 鏈接拒絕,就是由於myid 建的位置必定要和 dataDir 指定的目錄沒匹配上。

 

找到 dataDir指定的/tmp/zookeeper目錄,vi myid ,爲1

 

配置完後 配置環境變量,gedit /etc/hosts 加上

export ZOOKEEPER_HOME=/usr/local/zookeeper-3.4.9

 

 

第三步 :遠程複製到另外兩臺機器,scp zookeeper-3.4.9.tar.gz root@192.168.154.132:/usr/local 輸入密碼 ,另一臺一樣,解壓文件,複製zoo.cfg,配置集羣,新建dataDirLogs 指定的目錄,並vi myid ,每一個機器的myid 不一樣,且值在1-255。

第四部:啓動

按照上面的配置後,正常狀況下能夠啓動了 ,進入/usr/local/zookeeper-3.4.9,輸入bin/zkServer.sh start  ,輸入jps 如圖表示啓動成功

用bin/zkCli.sh   -server 192.168.154.129:2181 測試 輸入以下:

 

啓動成功。另外兩臺機器同樣。

 另外,第二次重啓後,本機提示找不到主機的路由,一個是查看/etc/hosts 有沒有更改過(碰到過關機斷電引發出現.host.swf的狀況),再就是防火牆是否關閉;

相關文章
相關標籤/搜索