Zookeeper学习及伪集群搭建

作者: z七夜 | 来源:发表于2018-08-10 11:38 被阅读2次

    写在前面,

    由于学习分布式,需要搭建zookeeper,单机版就不介绍了,介绍一下集群的搭建,但是本人很穷,只有一台服务器,就搭建一下伪集群,出了一些问题,特此记录与分享一下

    1.zookeeper

    zookeeper是一个开源的分布式协调服务,由雅虎创建的,基于Google chubby

    是什么

    分布式数据一致性的解决方案

    能做什么

    数据的发布订阅,负载均衡,命名服务,master选举,分布式队列,分布式锁

    特性

    • 顺序一致性
      严格按照请求顺序来应用到zookeeper中
    • 原子性
      所有的事务请求的处理结果在真个集群中的所有机器上的应用情况是一致的,也就是说,要整个集群中的所有机器都成功应用了某一个事务,要么全部不应用
    • 可靠性
      一旦服务器成功的应用了某一个事务,并且响应了客户端,那么这个数据在整个集群中一定是同步并且保留下来的
    • 实时性
      一旦一个事务被成功应用,客户端就能够立即从服务端读取到事务变更后的最新数据状态,(在一段时间内,近实时)

    2.zookeeper集群

    有三个角色,leader/follower/observer

    leader接受所有follower的提案请求并统一协调发起提案的投票,负责与follower交换数据

    事务请求唯一的调度者和处理者,保证集群事务处理的顺序性,集群内部各个服务器的调度者

    follower:直接为客户端服务并参与提案的投票,同时与leader进行数据交换

    observer:直接为客户端服务,但不参与提案的投票,也与leader数据交换,是一种特殊的zookeeper节点,可以帮助解决zookeeper的扩展性(如果大量客户端访问集群,需要增加集群机器数量,从而导致zookeeper集群的性能,导致zookeeper的写性能下降,zookeeper的数据变更需要半数以上服务器投票通过,造成网络消耗增加投票成本)

    观察zookeeper集群中最新的状态的变化并将这个状态同步到observer中,

    增加observer不影响集群中事务处理能力,同时还能提升集群的非事务处理能力

    1.zookeeper的集群组成

    zookeeper一般都是有2n+1台

    开始搭建

    1.下载压缩包,上传到服务器

    这个可以百度,实在不会,就联系我

    2.解压

    我自己新建了一个文件夹,zookeeper-cluster,用于存放zookeeper集群

    将压缩包解压三分,放在这里面


    image.png

    这面三个脚本一会再说

    3.修改配置

    首先我们进入文件夹中,进入conf目录,可以看到


    image.png

    zoo.cfg是没有,我们需要执行

    cp zoo_sample.cfg zoo.cfg
    

    需要拷贝一份,

    然后修改zoo.cfg中的配置

    4.配置文件

    image.png

    tickTIme= 2000 zookeeper中最小的时间单位长度

    initLimit = 10 follower节点与leader节点进行数据同步的时间

    syncLimit=5 follower节点与leader节点之间心跳通信的最大延迟时间

    dataDir 表示zookeeper服务器存储快照文件的目录

    dataLogDir 表示配置zookeeper事务日志的存储路径,默认

    clientPort 客户端连接的端口

    我们在三个文件夹做同样的事

    ,我们需要执行三件事
    1.修改clientport,因为我们是伪集群,连接的是同一台服务器,所以需要改变客户端连接端口,
    我的三台分别是,2182,2181,2183
    2.修改dataDir 。这个是存放快照的目录,还有我们要在这个目录下新建一个myid文件,在里面分别写入1,2,3,这个是指定,执行这个目录的zookeeper的id,
    3.在配置文件的最后加入

    server.1=47.106.64.158:2887:3887
    
    server.2=47.106.64.158:2888:3888
    
    server.3=47.106.64.158:2889:3889
    
    server.4=47.106.64.158:2890:3890
    

    server.id=ip:follow与leader通信的端口:选举leader时候的端口

    分别配置不同的端口,以防同一台服务器出现端口占用的问题,

    还需要添加一行

    quorumListenOnAllIPs=true
    

    先加上,功能后面说

    这样,我们就做好了集群,

    我们就可以通过命令启动
    进入zookeeper的bin目录下
    ./zkServer.sh start启动
    每个都启动之后,即可在bin目录下./zkServer.sh status查看该节点是follower还是leader,
    每次启动比较麻烦。

    我们可以自己写个简单的脚本,启动多个zookeeper实例,和查看zookeeper的角色,
    我们前面文件夹新建的脚本,


    image.png

    将这个文件,赋可执行的权限,chmod 777 文件,就可以执行
    查看也是一样,


    image.png

    错误处理

    前面还说了加了一行,是因为,没加,会出现
    无法连接的错误
    我们查看bin目录下的zookeeper.out日志文件


    image.png

    无法通信,与连接,
    加上这一行就可以了

    需要安装包,或者共同交流可以加群:552113611

    相关文章

      网友评论

        本文标题:Zookeeper学习及伪集群搭建

        本文链接:https://www.haomeiwen.com/subject/krlkbftx.html