ZooKeeper故障處理

@Author  : Spinach | GHB
@Link    : http://blog.csdn.net/bocai8058

Zookeeper一般會出現以下兩種故障

  1. Zookeeper進程掛掉;
  2. Zookeeper進程還在,但不提供服務;(提示:This ZooKeeper instance is not currently serving requests)

Zookeeper故障監控

  1. 針對zookeeper進程的監控,直接監控器進程是否存在即可;(zookeeper進程名字:QuorumPeerMain)
  2. 針對zookeeper不能提供服務,需要通過linux shell命令監控;
# 當在linux下輸入以下命令並得到下面的結果時,說明zookeeper還活着,但不提供服務了。(這種情況機率大)
[[email protected] bin]# echo stat | nc localhost 2181
This ZooKeeper instance is not currently serving requests


# 當在linux下輸入以下命令並得到下面的結果時,說明zookeeper服務正常。
[[email protected] bin]# echo stat | nc localhost 2181
Zookeeper version: 3.4.6-1569965, built on 02/20/2014 09:09 GMT
Clients:
 /192.168.1.12:29432[1](queued=0,recved=13,sent=13)
 /127.0.0.1:43448[0](queued=0,recved=1,sent=0)
Latency min/avg/max: 0/1/11
Received: 235
Sent: 17
Connections: 2
Outstanding: 0
Zxid: 0x100000004
Mode: leader
Node count: 4

Zookeeper故障處理

  1. 當zookeeper出現以上兩種故障或未知故障時,請先嚐試重啓zookeeper;
(啓動命令:/usr/zookeeper-3.4.6/bin/ 目錄下執行 ./zkServer.sh start )
  1. 重啓之後首先要輸入命令jps,看zookeeper進程(QuorumPeerMain)是否起來;
  2. 如果zookeeper進程起來,再輸入命令echo stat | nc localhost 2181,看服務是否正常(如果數據量大可能需要等幾分鐘才能顯示正確);
  3. 如果第2步的進程沒有起來,或者第3步的顯示不能提供服務,則需要清除以下數據後再試1、2、3步;
# 需要清除下面兩個文件夾下的所有數據(最好將數據備份到別的地方或重命名文件夾名字):
/var/zookeeper/data/version-2
/var/zookeeper/logs/version-2
  1. 如果不幸走到了這一步,則意味着第4步重試後第2步進程還是沒有起來或第3步不能提供服務,這時需要重新搭建一套zookeeper服務,並修改所有使用zookeeper服務的hosts。

Zookeeper服務搭建

  1. 將附件中的安裝包解壓到linux機器上的 /usr/ 目錄下;如:/usr/zookeeper-3.4.6

  2. 修改附件中的zoo.cfg文件,將文件中的的ip修改爲新機器的ip;

server.1=192.168.1.1:2888:3888
server.2=192.168.1.2:2888:3888
server.3=192.168.1.3:2888:3888
  1. 將修改完的zoo.cfg文件拷貝到解壓目錄 /usr/zookeeper-3.4.6/conf/ ;

  2. 在新機器上創建以下目錄和文件:

/var/zookeeper/data/
/var/zookeeper/logs/
/var/zookeeper/data/myid
該文件下要寫上第2步中ip對應的server.後面的數字,比如192.168.1.1 ip對應的是server.1,則該機器上的myid中的內容就是1。其他的都類似。
  1. 到此爲止zookeeper服務就搭建完畢了,下面就需要啓動zookeeper了。(啓動命令:/usr/zookeeper-3.4.6/bin/ 目錄下執行 ./zkServer.sh start )

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