2.ZooKeeper集群的安装

六眼飞鱼酱① 提交于 2019-12-05 04:56:11

前提:①Linux服务器(3台)    ②已安装JDK    ③安装路径:/usr/local/bin目录下


目前3.5.5版本启动会报:找不到或无法加载主类 org.apache.zookeeper.server.quorum.QuorumPeerMain,   因为3.5.5解压缩之后,zookeepr文件夹里面这个jar包没了(网友都有这问题,好像是解压缩之类的问题),此教程故由3.5.5降版本至3.4.14)


1.ZooKeeper的安装

    1.官网下载ZooKeeper安装包

        下载地址:https://mirrors.cnnic.cn/apache/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz

    2.使用命令 rz 将ZooKeeper安装包上传至Linux服务器;

    3.使用命令 tar -zxvf apache-zookeeper-3.4.14.tar.gz -C /usr/local/bin,解压缩tar.gz包至 /usr/local/bin 目录下

    4.解压后可删除tar.gz包

    5.进入源码包,可以删除一部分数据 rm -rf *.txt *.md 文件

       删除后目录如图所示:

    6.接下来,cd conf,修改配置文件

       conf目录下,有一个zoo_sample.cfg文件,该文件为示例文件,复制该文件,去掉sample即可(zookeeper只认zoo.cfg配置文件)

    7.对zoo.cfg配置文件进行修改

    8.将myid记录到数据文件夹(/tmp/zookeeper,如没有,需手动创建)中去(myid即为:上图②中1,2,3)

      每一台服务器myid都不一样,则数据文件夹中记录的也都不一样  

      命令:mkdir -p /tmp/zookeeper(-p 递归创建)

                 echo 1 >> myid(将1写入192.168.204.201服务器myid文件中)

    9.至此,第一台服务器zookeeper安装完毕


   10.zookeeper集群安装开始

        使用命令scp,将zookeeper的安装目录,发送至其他俩服务器(scp命令使用方法,请点击查看)

        命令:scp -r /usr/local/lib/apache-zookeeper-3.4.14 root@192.168.204.202:/usr/local/lib

                   scp -r /usr/local/lib/apache-zookeeper-3.4.14 root@192.168.204.203:/usr/local/lib

         将/tmp/zookeeper目录下的内容,也发送至其他俩服务器

                   scp -r /tmp/zookeeper root@192.168.204.202:/tmp

                   scp -r /tmp/zookeeper root@192.168.204.203:/tmp

   11.进入192.168.204.202服务器,修改/tmp/zookeeper目录下的myid文件

               echo 2 >> myid(将2写入192.168.204.202服务器myid文件中)

       同理,将3写入192.168.204.203服务器中

               echo 3 >> myid(将3写入192.168.204.203服务器myid文件中)

   12.至此,zookeeper集群安装完毕


   13.通过如下命令,启动zookeeper服务

./zkServer.sh start

        在启动zookeeper服务之前,先关闭防火墙(或者允许指定开放端口访问(推荐)),未关闭防火墙会报如下错误:

java.net.NoRouteToHostException: 没有到主机的路由
	at java.net.PlainSocketImpl.socketConnect(Native Method)
	at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
	at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
	at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
	at java.net.Socket.connect(Socket.java:589)
	at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectOne(QuorumCnxManager.java:558)
	at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectAll(QuorumCnxManager.java:610)
	at org.apache.zookeeper.server.quorum.FastLeaderElection.lookForLeader(FastLeaderElection.java:838)
	at org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:958)

建议生产上,不关闭防火墙,打开指定端口即可!!!

 

     ①通过如下命令,关闭防火墙

service iptables stop

     ②开放2888、3888端口

    如何开放指定端口,请移步:Linux开放指定端口

  14.端口开放完毕,使用如下命令,查看zookeeper服务开启状态

./zkServer.sh status

如下图可以看到:一主(leader)两从(follower)。这是通过选举机制产生的。 

  

   15.通过如下命令,可以关闭ZooKeeper服务

sh zkServer.sh stop 或./zkServer.sh stop

   16.至此,ZooKeeper集群安装完毕

   17.附:ZooKeeper常用命令

1. 启动ZK 服务:bin/zkServer.sh start
2. 查看ZK 服务状态:bin/zkServer.sh status
3. 停止ZK 服务:bin/zkServer.sh stop
4. 重启ZK 服务:bin/zkServer.sh restart


   END

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!