zookeeper集群(二)

      经过前一篇文章《zookeeper伪集群一》的阅读,相信大家对zookeeper集群已经有一定的了解了,接下来我们再谈谈zookeeper真集群。其实真集群和伪集群还是有很多相似的部分的,我将模拟3台集群服务并且对其中一台集群服务的配置进行讲解,接下来两台操作基本一模一样。

     铺垫:

    1、 本人创建3台虚拟机,Linux版本为CentOS7,工具为vmware12

              2、外部链接虚拟机的工具为小xmanager5,这个工具只是方便一些,你也可以不用

     3、需要提前在虚拟机上装好jdk1.7及以上版本,我使用的是1.8版本的,如果不会装jdk,可以参照我的另一篇文章《Linux下的jdk安装》

              4、本人将3台虚拟机创建好,获取到的外网地址分别为192.168.0.124,192.168.0.129,192.168.0.127,我分别取别名为CentOS1,CentOS3,CentOS4

       5、接下来的说明中,如果有关联关系的地方,我会加粗并且用相同颜色进行标注

  搭建:

     1、修改zookeeper下的zoo.cfg文件,具体内容如下: 

tickTime=2000
syncLimit=10
initLimit=5
dataDir=/home/d5000/zk/data
clientPort=3001
dataLogDir=/home/d5000/zk/log
server.1 = 192.168.0.124:2887:3887
server.2 = 192.168.0.129:2887:3887
server.3 = 192.168.0.127:2887:3887

因为是集群,所以3台机器的端口号可以完全一致,可以共用一个zoo.cfg文件

              2、在3台虚拟机上分别创建/home/d5000/zk目录,并且在zk下创建data目录,用于存放dataDir配置的映射文件;接下来将zookeeper也传到zk目录下,这一点与伪集群一致

              3、在CentOS1机器的/home/d5000/zk/data下创建myid文件,内容是1

                   在CentOS3机器的/home/d5000/zk/data下创建myid文件,内容是2

                   在CentOS4机器的/home/d5000/zk/data下创建myid文件,内容是3; 

      4、分别给3台机器zookeeper权限,否则如何启动呢?可以先给zookeeper一个启动权限,进入/home/d5000/zk/zookeeper/bin,执行chmod 777  zkServer.sh

 

至此,集群创建完毕,真叫那个简单呀,开开心心的进行测试,分别进行启动,   ./ zkServer.sh start ,第一台报错,第二台报错,第三台还是报错,而且错误信息一致,都是zookeeper no route to host,上网一查发现,有2个可能导致这个问题的出现,一个是防火墙,另一个是hostname。

 排查问题:

         1、分别查看3台机器防火墙是否关闭:firewall-cmd --state,发现防火墙确实没有关闭,果断执行关闭systemctl stop firewalld.service

         2、修改CentOS1机器,执行hostname  server.1 命令

     修改CentOS3机器,执行hostname  server.2 命令

               修改CentOS4机器,执行hostname  server.3 命令

         3、重启虚拟机,init 6     接下来重启服务

         4,结果还是报一样的错误  zookeeper no route to host,瞬间懵逼

    

                                                    

  -----------------------------------------------------------------------以下都是心碎,省略一万字-------------------------------------------------------------------------

 

经过多方努力,最终在掌握一定的虚拟机知识后才发现,systemctl stop firewalld.service关闭的防火墙是暂时的,只要服务一重启防火墙立马又生效,还有那个hostname也一样:

    最终修改     

      1、彻底禁用防火墙:systemctl disable firewalld.service 

              2、修改CentOS1机器/etc/hostname文件,内容为server.1

         修改CentOS3机器/etc/hostname文件,内容为server.2

                   修改CentOS4机器/etc/hostname文件,内容为server.3(永久修改)

               3、启动第一台、第二台发现还是有错误信息,但是现在的错误信息意见转变为connect refuesd(拒绝链接),继续启动第三台服务器,发现没有报错信息,而且测试后发现集群服务正常,第一                     台报错是因为第二第三台服务器没有启动导致,第二台报错是因为第三台集群服务没启动导致。这些错误完全不妨碍集群

    

       下面提供一下最简单的测试,在192.168.0.124执行  telent  192.168.0.127 3001       telent  192.168.0.129 3001   如果都能链接成功,说明各自的服务已经能够正常运行,并且可以进行通信,接下来可以通过代码进行更加完善的测试。

效果如图:

 

                                    完毕

 

转载于:https://www.cnblogs.com/chen1-kerr/p/6902206.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值