zookeeper提供了单机、分布式和伪分布式三种模式。
1 | #zookeeper的默认配置文件zoo.cfg: |
条件有限,以伪分布式为例,将zookeeper文件夹复制三份,基本配置如下:
1 | #第一个 |
1 | #第二个 |
1 | #第三个 |
伪分布式和分布式配置的区别在于,伪分布式配置IP地址相同,端口号不同。
其中,localhost:7889:8890,第一个端口号用来通信,第二个端口号用来进行leader选举。
windows系统使用%zk_home%/bin目录下的zkServer.cmd启动zookeeper。由于在伪分布式下部署了三个节点,所以依次进入每个文件夹中,启动zookeeper。启动的时候可能会报错。
1 | 2017-02-09 14:21:38,871 [myid:] - ERROR [main:QuorumPeerMain@85] - Invalid confi |
错误原因是没有找到myid这个文件(如11、12行),需要在配置文件dataDir指定的目录下面(我的是:D:\zookeeper\zookeeper-3.4.9-1\data)建立一个myid文件,内容为1。依次在剩下的两个文件夹中也建立一个myid的文件,内容分别为2和3。
保存后,再次启动,发现又出现异常了,异常比较多,仅截取部分:
1 | 2017-02-09 14:32:32,467 [myid:1] - WARN [QuorumPeer[myid=1]/0:0:0:0:0:0:0:0:218 |
这个异常其实可以忽略,仔细看2、3、31、32行打印出的信息就明白了。出现这个异常的原因是因为,现在只启动了一个zk节点,而在配置文件中却写了三个zk的地址,第一个zk节点还无法与剩下的两个节点进行通信,所以只要把三个zk节点都启动就没问题了。