搭建zk集群,起码保证3台虚拟机的配置,本人使用的虚拟机环境为wm14+centos7+jdk1.8
下载地址
zk的tar包下载地址:http://mirror.bit.edu.cn/apache/zookeeper/
安装方式
下载好tar包后上传到自己的虚拟机文件夹中,这里我自己创建了一个专门存放tar包的目录soft
使用命令:tar -zxvf zookeeper-3.4.13.tar.gz -C /usr/local/installsoft
将tar包解压到另一个目录installsoft中。
为了方便后续直接使用脚本启动不必进入bin目录启动,我们配置一下环境变量。
使用命令:vim /etc/profile
环境变量中增加:
export ZK_HOME=/usr/local/installsoft/zookeeper-3.4-13
export PATH=$ZK_HOME/bin:$PATH
集群配置
进入zk目录
具体每个目录每个文件什么含义就不在此多说,有兴趣的可以上网找到,我们这里配置集群主要关注conf文件夹。进入该文件夹。
这里要提一句,因为本日志是在整个集群都搭建好之后才过来记录的,所以这个部分有个小步骤省略掉了,就是修改配置文件的名称,将原配置文件重命名成了zoo.cfg。
命令:mv 原文件.cfg zoo.cfg
打开配置文件看看内容:命令:vim zoo.cfg
其实里面的配置内容有很多,但是为了快速的搭建集群,此配置文件只写了一点点,比如:
dataDir=/usr/local/installsoft/zookeeper-3.4.13/data (数据存储目录,一定要记得按照路径在外面建立文件夹,不然会启动报错)
dataLogDir=/usr/local/installsoft/zookeeper-3.4.13/log(日志存储目录,一定要记得按照路径在外面建立文件夹,不然会启动报错)
server.1=ip:2888:3888(集群节点1的配置,包括集群节点的IP,以及zk内部通讯的端口,对外通讯的端口)
server.2=ip:2888:3888(集群节点2的配置,包括集群节点的IP,以及zk内部通讯的端口,对外通讯的端口)
server.3=ip:2888:3888(集群节点3的配置,包括集群节点的IP,以及zk内部通讯的端口,对外通讯的端口)
当然,集群节点可以选择配置多个,因为机器原因,我虚拟机最多启动3个就已经卡炸,所以只有3个节点。另外的配置条目具体意思可以自行网上查找,挺多的,这里不做赘述。
zk目录下新建两个文件夹。
另外重点说一下,这里的data目录是一定要存在的,但是log文件夹其实可以不用,zk会将日志自动存储到默认位置,但是我没有发现该默认日志文件的位置,如有知晓的同学,可以告知我一下,万分感谢。
进入data文件夹。
使用命令:vim myid
linux默认机制,没有文件创建文件并打开,省略一个创建的步骤。
该文件内容填什么?其实内容很简单,就是刚刚配置的集群部分,server.X的X,类似用来表明身份的意思,也就是身份证,表示我这个zk服务器是集群中的第几个节点,比如我这台机器IP是192.168.131.101,集群配置为server.1=192.168.131.101:2888:3888,那么我的myid文件就写个1即可。
其余的集群机器可以照着这个路数完全复制过去,仅仅需要注意myid部分的值。
- 启动zk集群
因为我们前面配置了环境变量,所以就不用像启动别的脚本那样还要进入到bin目录下去执行,任意位置,输入:
zkServer.sh start
等输出完毕之后,可以看到
代表启动完毕。
之后输入:
zkServer.sh status
可以查看集群节点状态。
其余命令:
zkServer.sh restart(重启)
zkServer.sh stop (停止)
- 问题
在搭建完成之后,启动集群,命令zkServer.sh start启动正常输出,但是使用zkServer.sh status就在报错,本想通过日志查看一下具体报错问题,但是因为上面也说过,没找到日志文件,导致该问题困扰了很久,网上也搜了不少,总结一下:
- 防火墙问题,记得关闭防火墙。
- zoo.cfg文件配置内容,仔细检查,特别是上面我说的文件夹的创建,一旦忘记或者指定到了zk读取不到的目录,就会导致启动失败。
- myid内容写错或文件位置错误。
- 一定要把集群的机器全部启动之后再来看status,不然就报错,因为配置了集群,但是其余的节点没启动起来,选举没法执行,会导致当前启动的节点一直观望,也就获取不到具体的节点状态了。(这也是我这次解决问题的使用方法)