Zookeeper啟動后,有時候沒有真正的啟動,那我們如何查找錯誤呢,就可以查看zookeeper目錄下面的zookeeper.out文件,就可以查看到錯誤了。zookeeper.out文件比較的重要,對於錯誤的排查,是必不可少的,還有服務器上,如果連接不通,有可能是防火牆的問題

搭建的時候,數據存儲的目錄結構,每一個zookeeper里面,需要有logs(日志存儲)和data(數據存儲)目錄、myid文件都是在data目錄下面的。

My id 333 not in the peer list
這個問題的產生是因為服務的id,也就是myid里面配置的,服務的id,需要和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/zookeeper1/data
#日志文件
dataLogDir=/tmp/zookeeper1/logs
# the port at which the clients will connect
clientPort=2181
#server.NUM=IP:port1:port2 NUM表示本機為第幾號服務器;IP為本機ip地址;
#port1為leader與follower通信端口;port2為參與競選leader的通信端口
#多個實例的端口配置不能重復
server.1=127.0.0.1:2222:2225
server.2=127.0.0.1:3333:3335
server.3=127.0.0.1:4444:4445
server.A=B:C:D:其中 A 是一個數字,就是myid里的那個數字,表示這個是第幾號服務器;B 是這個服務器的 ip 地址,C和D是兩個端口。
配置文件 myid文件配置有問題和zoo.cfg不統一導致的

Caused by: java.lang.IllegalArgumentException: /usr/local/zookeeper/zookeeper-3.4.10/data/data/myid file is missing
出現這個問題的原因是,myid文件配置有問題,所導致的,可能是路徑不對,也有可能是文件沒有,需要在自己的data目錄下創建一個myid的文件,里面的編號需要和自己定義的路徑配置好

Cannot open channel to 1 at election address /127.0.0.1:2225
導致這個問題的原因是,沒有完全啟動所有的zookeeper節點所導致的問題,所有節點都啟動,就不會有這個問題了
#獲取zookeeper啟動信息
cat zookeeper.out
- 1
- 2

只有部分節點在集群中
在啟動的集群中,只有 2、3兩個節點在集群中,但是1節點卻是standalone
#查看節點信息
zkServer.sh status

可能導致這個問題的原因是端口占用

#查看端口
netstat -lnp|grep 2181
#殺死進程 ,然后重啟zookeeper就好了
kill 進程號

