三台服务器搭建zookeeper集群

    ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等。Zookeeper是hadoop的一个子项目,在分布式应用中,由于工程师不能很好地使用锁机制,以及基于消息的协调机制不适合在某些应用中使用,因此需要有一种可靠的、可扩展的、分布式的、可配置的协调机制来统一系统的状态。

运行原理:Zookeeper的核心是原子广播,这个机制保证了各个Server之间的同步。实现这个机制的协议叫做Zab协议。Zab协议有两种模式,它们分别是恢复模式(选主)和广播模式(同步)。当服务启动或者在领导者崩溃后,Zab就进入了恢复模式,当领导者被选举出来,且大多数Server完成了和leader的状态同步以后,恢复模式就结束了。状态同步保证了leader和Server具有相同的系统状态。为了保证事务的顺序一致性,zookeeper采用了递增的事务id号(zxid)来标识事务。所有的提议(proposal)都在被提出的时候加上了zxid。实现中zxid是一个64位的数字,它高32位是epoch用来标识leader关系是否改变,每次一个leader被选出来,它都会有一个新的epoch,标识当前属于那个leader的统治时期。低32位用于递增计数。
每个Server在工作过程中有三种状态:
    LOOKING:当前Server不知道leader是谁,正在搜寻
    LEADING:当前Server即为选举出来的leader
    FOLLOWING:leader已经选举出来,当前Server与之同步

环境:

    192.9.200.130    192.9.200.159    192.9.200.160

解压及安装:

    zookeeper下载地址:http://mirror.bit.edu.cn/apache/zookeeper/

    我下载的是zookeeper-3.5.3

    将zookeeper压缩包复制到linux下。

    1、解压:

        tar -xvf zookeeper-3.53.tar.gz(注意:解压的时候参数不要用zxf,要用xvf)

    2、将解压后的zookeeper移动到/usr/local/目录下。

        mv zookeeper-3.5.3 /usr/local/

    3、修改名称

        mv zookeeper-3.53 zookeeper

    4、复制zookeeper/conf/zoo_sample.cfg为zoo.cfg

        cp zoo_sample.cfg zoo.cfg

    5、修改zoo.cfg

        vi zoo.cfg

        1)、修改dataDir=/usr/local/zookeeper/data

        2)、添加dataLogDir=/usr/local/zookeeper/log

        3)、最后面添加

            server.1=192.9.200.130:2888:3888

            server.2=192.9.200.159:2888:3888

            server.3=192.9.200.160:2888:3888

             解释:ip地址:心跳端口:服务端口

    6、在zookeeper目录下新建data和log目录

        mkdir data    mkdir log

    7、在data目录下新建myid文件

            touch myid    (第1个服务器的myid为1,第2个为2,第3个为3.   分别对应server.1、server.2、server.3

3台服务器以上步骤都相同。

    =======================我是一条华丽的分割线===============================

    8、分别启动3台服务器。

        1)、进入zookeeper/bin目录

            ./zkServer.sh start

        2)、查看启动是否成功,三台服务器会选择一台作为leader,另外两台作为follower

            ./zkServer.sh status

    9、OK,集群搭建成功。

注意事项:

    1、需要关闭防火墙。

    2、当我们启动第一个zookeeper的时候,查看状态会出现

        

        查看zookeeper/logs/zookeeper.out日志,发现另外两个服务器拒绝链接,这是因为另外两个服务器zookeeper没有启动,不用管,然后启动另外两个服务器,之后将第一个服务器重启下就可以。


猜你喜欢

转载自blog.csdn.net/qq_39244264/article/details/80408354