zookeeper伪集群设置

作者: 江江的大猪 | 来源:发表于2018-02-12 15:47 被阅读12次

    单机多实例

    因为zk集群通过选举算法选出leader,所以集群中的实例个数最好是奇数个,当过半的节点都崩了,整个集群就连不上了

    • dubbo需要的zkclient的jar包现在最新版本是16年的0.10,依赖的zookeeper是3.4.8版本,所以这里使用该版本的zookeeper。
    • 最新的3.5(现在还都是测试版)以上的会有一个内嵌的web服务,通过访问http://localhost:8080/commands来查看zk的命令,所以和tomcat的默认端口冲突
    • 看一下目录结构,在zookeeper-3.4.8文件夹下新增deploy目录,里面的123分别对应一会要用的3个zk实例,123中分别拷贝一份zoo_sample.cfg并重命名为zoo.cfg


      目录结构
    1. 修改zoo.cfg:
    # zk服务器之间或zk服务器和客户端之间的心跳时间间隔,每隔tickTime就会发送一次心跳
    tickTime=2000
    # zk集群的follower连接到leader初始化连接时能够忍受的最多tickTime,超过initLimit个tickTime还没有连上,则认为连接失败
    initLimit=10
    # zk集群中leader和follower之间通信时间不能超过syncLimit个tickTime
    syncLimit=5
    # 必须不同  
    dataDir=/usr/local/zookeeper-3.4.8/deploy/1/data
    # 必须不同
    clientPort=2181  
    # 必须不同,事务日志存放目录,事务日志的写入速度严重影响zookeeper的性能
    dataLogDir=/usr/local/zookeeper-3.4.8/deploy/1/logs
    # 真正的集群环境(多机多实例),端口设为一样。2889端口是 集群中follower和leader通信的接口,3889是leader挂掉后选举leader的端口。server.x中x和myid中的编号要一样
    server.1=127.0.0.1:2889:3889
    server.2=127.0.0.1:2890:3890
    server.3=127.0.0.1:2891:3891
    
    1. 分别在dataDir指定的目录下创建myid文件,对应server.x的编号
    2. 分别启动:
    zkServer.sh start zoo1.cfg
    zkServer.sh start zoo2.cfg
    zkServer.sh start zoo3.cfg
    
    1. 分别查看状态,可以查看对应配置文件的实例是leader还是follower:
    zkServer.sh status zoo1.cfg 
    zkServer.sh status zoo2.cfg 
    zkServer.sh status zoo3.cfg 
    
    1. 用客户端同时连接:
    zkCli.sh -server localhost:2183,localhost:2182,localhost:2181
    
    1. 分别关闭:
    zkServer.sh stop zoo1.cfg
    zkServer.sh stop zoo2.cfg
    zkServer.sh stop zoo3.cfg
    
    • echo ruok | nc localhost 2181或telnet localhost 2181输入ruok,如果zk正常会返回imok

    • 修改bin下的zkEnv.sh中ZOO_LOG_DIR="/usr/local/zookeeper-3.4.8/deploy",否则在哪个路径启动zk就会在哪输出zookeeper.out

    • 在zk的/dubbo下存放着所有注册的服务,以接口全路径名称存储。再下一级有providers和consumers

    相关文章

      网友评论

        本文标题:zookeeper伪集群设置

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