zookeeper 集群安装配置启动
一、准备
1、在VMware中安装三台虚拟机;
2、三台机器/etc/hosts分别为luxiangzhou1(192.168.200.101)、luxiangzhou2(192.168.200.102、luxiangzhou3(192.168.200.103);
3、可以ssh免登陆访问;
4、安装jdk(jdk_1.6.0_45);
5、解压zookeeper到/user/java目录下(zookeeper-3.3.6);
6、将三台机器下面的/usr/java/zookeeper-3.3.6/conf/zoo_sample.cfg文件重命名为zoo.cfg;
7、将zoo.cfg文件中dataDir改为/usr/java/zookeeper/data;
添加server.1=luxiangzhou1:2888:3888
server.2=luxiangzhou2:2888:3888
server.3=luxiangzhou3:2888:3888
6、创建/usr/java/zookeeper文件夹,用来放zookpeeper数据;
/usr/java/zookeeper文件夹下创建data、log文件夹;
/usr/java/zookeeper/data文件夹下创建myid文件,注意myid内容和zoo.cfg配置文件中server.id=host:port:port的id一致;
二、启动zookeeper
启动zookeeper:/usr/java/zookeeper-3.3.6/bin/zkServer.sh start
关闭zookeeper:/usr/java/zookeeper-3.3.6/bin/zkServer.sh stop
查看zookeeper角色,是leader还是foller:/usr/java/zookeeper-3.3.6/bin/zkServer.sh status
查看zookeeper是否启动成功:jps ,看是否含有QuorumPeerMain进程
查看zookeeper启动日志:/usr/java/zookeeper-3.3.6/bin/zookeeper.out
三、zookeeper启动错误
zookeeper启动错误1:创建/usr/java/zookeeper/daya/myid文件
[[email protected] bin]# more zookeeper.out
2017-10-10 14:00:59,143 - INFO [main:[email protected]] - Reading configuration from: /usr/java/zookeeper-3.3.6/bin/../conf/zoo.cfg
2017-10-10 14:00:59,148 - INFO [main:[email protected]] - Defaulting to majority quorums
2017-10-10 14:00:59,149 - FATAL [main:[email protected]] - Invalid config, exiting abnormally
org.apache.zookeeper.server.quorum.QuorumPeerConfig$ConfigException: Error processing /usr/java/zookeeper-3.3.6/bin/../conf/zoo.cfg
at org.apache.zookeeper.server.quorum.QuorumPeerConfig.parse(QuorumPeerConfig.java:110)
at org.apache.zookeeper.server.quorum.QuorumPeerMain.initializeAndRun(QuorumPeerMain.java:99)
at org.apache.zookeeper.server.quorum.QuorumPeerMain.main(QuorumPeerMain.java:76)
Caused by: java.lang.IllegalArgumentException: /usr/java/zookeeper/data/myid file is missing
at org.apache.zookeeper.server.quorum.QuorumPeerConfig.parseProperties(QuorumPeerConfig.java:320)
at org.apache.zookeeper.server.quorum.QuorumPeerConfig.parse(QuorumPeerConfig.java:106)
... 2 more
Invalid config, exiting abnormally
zookeeper启动错误2:修改/usr/java/zookeeper/daya/myid里面内容为1,注意集群时myid内容和zoo.cfg配置文件中server.id=host:port:port的id一致
[[email protected] bin]# more zookeeper.out
2017-10-10 14:17:59,146 - INFO [main:[email protected]] - Reading configuration from: /usr/java/zookeeper-3.3.6/bin/../conf/zoo.cfg
2017-10-10 14:17:59,150 - INFO [main:[email protected]] - Defaulting to majority quorums
2017-10-10 14:17:59,151 - FATAL [main:[email protected]] - Invalid config, exiting abnormally
org.apache.zookeeper.server.quorum.QuorumPeerConfig$ConfigException: Error processing /usr/java/zookeeper-3.3.6/bin/../conf/zoo.cfg
at org.apache.zookeeper.server.quorum.QuorumPeerConfig.parse(QuorumPeerConfig.java:110)
at org.apache.zookeeper.server.quorum.QuorumPeerMain.initializeAndRun(QuorumPeerMain.java:99)
at org.apache.zookeeper.server.quorum.QuorumPeerMain.main(QuorumPeerMain.java:76)
Caused by: java.lang.IllegalArgumentException: serverid null is not a number
at org.apache.zookeeper.server.quorum.QuorumPeerConfig.parseProperties(QuorumPeerConfig.java:333)
at org.apache.zookeeper.server.quorum.QuorumPeerConfig.parse(QuorumPeerConfig.java:106)
... 2 more
Invalid config, exiting abnormally
zookeeper启动错误3:集群中的每台机器都需要感知整个集群是由哪几台机器组成的,在配置文件中,可以按照这样的格式,每行写一个机器配置:server.id=host:port:port. 关于这个id,我们称之为Server ID,
标识host机器在集群中的机器序号,在每个ZK机器上,我们需要在数据目录(数据目录就是dataDir参数指定的那个目录)下创建一个myid文件,myid中就是这个Server ID数字。
2017-10-10 22:30:29,410 - WARN [Thread-34:[email protected]] - Send worker leaving thread
2017-10-10 22:30:56,106 - WARN [Thread-37:[email protected]] - Connection broken for id 1, my id = 1, error = java.io.IOException: Channel eof
2017-10-10 22:30:56,107 - WARN [Thread-37:[email protected]] - Interrupting SendWorker
2017-10-10 22:30:56,108 - WARN [Thread-36:[email protected]] - Interrupted while waiting for message on queue
java.lang.InterruptedException
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.reportInterruptAfterWait(AbstractQueuedSynchronizer.java:1961)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2038)
at java.util.concurrent.ArrayBlockingQueue.poll(ArrayBlockingQueue.java:347)
at org.apache.zookeeper.server.quorum.QuorumCnxManager$SendWorker.run(QuorumCnxManager.java:622)