搭建集群的步骤

  1. 学习搭建zk集群,准备了三台虚拟机,node01、node02、node03
  2. 提前安装好JDK
  3. 下载并解压zk
  4. 将zk的bin目录添加到PATH,编辑/etc/profile文件,添加两行。其中ZK_HOME设置为你的zk所在目录
export ZK_HOME=/opt/zookeeper-3.6.3
export PATH=$PATH:$ZK_HOME/bin

退出编辑后,输入命令,使配置生效

source /etc/profile
  1. 复制zk配置文件:zoo_sample.cfg 为 zoo.cfg作为正式的配置文件
  2. 修改配置文件:
#修改目录路径(若目录不存在,注意提前创建好)
dataDir=/var/zk

# 添加如下服务器配置
# node01、node02、node03需要提前做好host解析
# 3888端口用于无主节点时进行投票选主;2888端口是选主完成后用于主从节点的同步/通讯;
# 注意防火墙开放端口;云服务器注意在安全组添加开放端口
server.1=node01:2888:3888
server.2=node02:2888:3888
server.3=node03:2888:3888

  1. 在/var/zk目录创建myid文件,并写入server id。如node01,则文件写入1;node02则2;node03则3
  2. 三台机都准备好上面的步骤后,开始依次启动zk集群
    start-foreground,为前台启动,默认不加这个参数是后台启动,这里第一次启动方便看日志,所以前台启动zk
zkServer.sh start-foreground
  1. 查看zk的状态
zkServer.sh status

在这里插入图片描述

遇到的问题

三台机都是一样的环境,但是我的node02始终没有启动成功。

zkServer.sh status 查看zk状态时,提示Error contacting service. It is probably not running.
zkCli.sh也无法连接zkServer。

说明zk没有启动成功。

经过排查,发现我这是因为/etc/hosts配置的问题:
原来是这样的:
127.0.0.1 node02 localhost

根据一些博主的建议,注销掉node02的host解析,问题神奇滴解决了!

具体原因暂时还不是很确定,知道的可以评论补充下

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐