Zookeeper的配置文件不多,环境搭建的时候只需要修改一个文件:conf目录下的zoo.cfg (把templete文件改下名字),下面是一个简单的例子:
tickTime=2000
initLimit=5
syncLimit=2
dataDir=/home/zookeeper/data
dataLogDir=/home/zookeeper/logs
clientPort=4180
server.43=10.1.39.43:2888:3888
server.47=10.1.39.47:2888:3888
server.48=10.1.39.48:2888:3888
在这之后需要在每一台机器上配置的 dataDir 目录(上例中为/home/zookeeper/data )下新建一个myid文件,例:echo "43" > /home/zookeeper/data/myid, 43根据机器的不同对应配置文件 (0-255)
然后 去bin目录下 zkServer.sh start-foreground 就可以了,没用start是因为这个参数可以输出启动信息。
遇到的坑
1. Address Already in use...
这个没什么好说的,clientPort改成一个空闲的就可以了。当直接zkServer.sh start的时候 ,会显示zookeeper启动成功,但是是standalone模式。
2. WARN [WorkerSender[myid=4]:QuorumCnxManager@400] - Cannot open channel to 1 at election address hostname/ip:7020
java.net.ConnectException: Connection refused
被这个坑了好久,但是这个异常可以忽略,原因是还有节点没有启动zookeeper,全部启动之后,自然就不会出异常了,亲测确实是这样。靠,操蛋,就不能给点友好的提示吗??
3. Zookeeper 启动完成没有error, 但是zkServer.sh status 显示 probably not running, 有可能是 JAVA_HOME没有配置.