美文网首页Spring全家桶架构师之路
ZooKeeper详解1.安装及使用

ZooKeeper详解1.安装及使用

作者: 卢卡斯哔哔哔 | 来源:发表于2019-03-06 12:17 被阅读0次

    1 ZooKeeper简介

    ZooKeeper是一个开源分布式应用程序协调服务,最初是作为Hadoop的一个副产品,但现在已经成为分布式应用的一个重要组件,像Hadoop、Dubbo、Kafka都是基于ZooKeeper构建的。
    官方文档
    ZooKeeper 3.4 Documentation

    2 ZooKeeper安装

    Mac安装

    brew install zookeeper

    启动和关闭

    ZooKeeper提供了zkServer来管理ZooKeeper,默认使用/usr/local/etc/zookeeper/zoo.cfg配置文件中的配置来启动,主要命令如下:

    • 启动:zkServer start [配置文件]
    • 关闭:zkServer stop [配置文件]
    • 重启:zkServer restart [配置文件]
    • 查看状态:zkServer status [配置文件]
    # 其他命令如下
    Using config: /usr/local/etc/zookeeper/zoo.cfg
    Usage: ./zkServer.sh {start|start-foreground|stop|restart|status|upgrade|print-cmd}
    
    配置文件详解

    ZooKeeper 配置文件(zoo.cfg)详解

    # 心跳时间
    # Leader与Follower之间发送消息时,请求和应答时间长度。
    tickTime=2000
    # Follower与Leader初始连接时能容忍的最多心跳数
    initLimit=10
    # Follower与Leader请求和答应最多能容忍的心跳数   
    syncLimit=5
    # 存放myid、版本、日志等信息
    dataDir=/usr/local/var/run/zookeeper/data
    # 客户端连接的端口
    clientPort=2181
    # 最大连接数
    # maxClientCnxns=60
    
    # 指定了需要保留的文件数目。默认是保留3个。
    # autopurge.snapRetainCount=3
    
    # 3.4.0及之后版本,ZK提供了自动清理事务日志和快照文件的功能
    # 这个参数指定了清理频率,单位是小时,需要配置一个1或更大的整数,默认是0,表示不开启自动清理功能。
    # autopurge.purgeInterval=1
    

    3 ZooKeeper集群搭建

    修改配置文件
    1. 在zoo.cfg的目录下增加3个配置文件,分别命名为cluster_zoo1.cfg、cluster_zoo2.cfg、cluster_zoo3.cfg(随便起名字也可以)。
    2. 编辑配置文件,分别修改其端口和dataDir,保证三个文件使用不同的端口和dataDir目录。
    3. 增加集群配置。
    # cluster_zoo1.cfg配置文件内容
    dataDir=/usr/local/var/run/zookeeper/cluster_data_1
    clientPort=2182
    # server.A=B:C:D
    # A:其中 A 是一个数字,表示这个是服务器的编号;
    # B:是这个服务器的 ip 地址;
    # C:Leader选举的端口;
    # D:Zookeeper服务器之间的通信端口。
    server.1=localhost:2881:3881
    server.2=localhost:2882:3882
    server.3=localhost:2883:3883
    
    # cluster_zoo1.cfg配置文件内容
    dataDir=/usr/local/var/run/zookeeper/cluster_data_2
    clientPort=2183
    # server.A=B:C:D
    # A:其中 A 是一个数字,表示这个是服务器的编号;
    # B:是这个服务器的 ip 地址;
    # C:Leader选举的端口;
    # D:Zookeeper服务器之间的通信端口。
    server.1=localhost:2881:3881
    server.2=localhost:2882:3882
    server.3=localhost:2883:3883
    
    # cluster_zoo3.cfg配置文件内容
    dataDir=/usr/local/var/run/zookeeper/cluster_data_3
    clientPort=2184
    # server.A=B:C:D
    # A:其中 A 是一个数字,表示这个是服务器的编号;
    # B:是这个服务器的 ip 地址;
    # C:Leader选举的端口;
    # D:Zookeeper服务器之间的通信端口。
    server.1=localhost:2881:3881
    server.2=localhost:2882:3882
    server.3=localhost:2883:3883
    
    配置myid的文件

    myid文件配置在dataDir的目录下,该文件里面只有一个数据就是server.A=B:C:D中A的值,ZooKeeper启动时会读取这个文件,拿到里面的数据与zoo.cfg里面的配置信息比较从而判断到底是那个server。

    /usr/local/var/run/zookeeper > echo 1 > cluster_data_1/myid
    /usr/local/var/run/zookeeper > echo 2 > cluster_data_2/myid
    /usr/local/var/run/zookeeper > echo 3 > cluster_data_3/myid
    
    使用三个配置文件分别启动
    /usr/local/etc/zookeeper > zkServer start cluster_zoo1.cfg
    /usr/local/etc/zookeeper > zkServer start cluster_zoo2.cfg
    /usr/local/etc/zookeeper > zkServer start cluster_zoo3.cfg
    
    查看集群状态
    # 节点1
    /usr/local/etc/zookeeper   master > zkServer status cluster_zoo1.cfg
    ZooKeeper JMX enabled by default
    Using config: /usr/local/etc/zookeeper/cluster_zoo1.cfg
    Mode: follower
    # 节点2
    /usr/local/etc/zookeeper   master > zkServer status cluster_zoo2.cfg
    ZooKeeper JMX enabled by default
    Using config: /usr/local/etc/zookeeper/cluster_zoo2.cfg
    Mode: leader
    # 节点3
    /usr/local/etc/zookeeper   master > zkServer status cluster_zoo3.cfg
    ZooKeeper JMX enabled by default
    Using config: /usr/local/etc/zookeeper/cluster_zoo3.cfg
    Mode: follower
    
    连接集群
    /usr/local/etc/zookeeper > zkCli -server localhost:2182,localhost:2183,localhost:214
    Connecting to localhost:2182,localhost:2183,localhost:214
    Welcome to ZooKeeper!
    JLine support is enabled
    [zk: localhost:2182,localhost:2183,localhost:214(CONNECTING) 0]
    WATCHER::
    
    WatchedEvent state:SyncConnected type:None path:null
    

    相关文章

      网友评论

        本文标题:ZooKeeper详解1.安装及使用

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