美文网首页
zookeeper使用

zookeeper使用

作者: 北海北_6dc3 | 来源:发表于2020-03-21 22:26 被阅读0次

    安装zookeeper单机模式

    下载地址:Apache ZooKeeper™版本
    入门文档:ZooKeeper入门指南
    参考资料:
    Zookeeper入门看这篇就够了

    • 先决条件:
      ZooKeeper在Java 1.7或更高版本(JDK 7或更高版本,FreeBSD支持需要openjdk7)中运行。它作为ZooKeeper服务器的整体运行。建议三个最小的ZooKeeper服务器是一个整体的最小大小,我们也建议它们在单独的计算机上运行。

    • 下载并解压
      由于生产环境一般都是linux,且linux命令和windows有所区别,我们就在你windows中使用。
      检查是否安装java环境并进入相应目录

    [root@izm5e11cqeaucml4d3vumbz ~]# java -version
    openjdk version "1.8.0_232"
    OpenJDK Runtime Environment (build 1.8.0_232-b09)
    OpenJDK 64-Bit Server VM (build 25.232-b09, mixed mode)
    [root@izm5e11cqeaucml4d3vumbz apache-zookeeper-3.6.0-bin]# cd /opt/apache-zookeeper-3.6.0-bin
    [root@izm5e11cqeaucml4d3vumbz apache-zookeeper-3.6.0-bin]# 
    
    
    • 设置配置文件并启动
    [root@izm5e11cqeaucml4d3vumbz apache-zookeeper-3.6.0-bin]# cp conf/zoo_sample.cfg conf/zoo.cfg
    [root@izm5e11cqeaucml4d3vumbz apache-zookeeper-3.6.0-bin]# bin/zkServer.sh start
    -bash: bin/zkServer.sh: Permission denied
    

    出现一个小问题,拒绝执行。我们对目录授个权,再次执行

    [root@izm5e11cqeaucml4d3vumbz apache-zookeeper-3.6.0-bin]# chmod 755 -R /opt/apache-zookeeper-3.6.0-bin
    [root@izm5e11cqeaucml4d3vumbz apache-zookeeper-3.6.0-bin]# bin/zkServer.sh start
    /usr/bin/java
    ZooKeeper JMX enabled by default
    Using config: /opt/apache-zookeeper-3.6.0-bin/bin/../conf/zoo.cfg
    Starting zookeeper ... STARTED
    [root@izm5e11cqeaucml4d3vumbz apache-zookeeper-3.6.0-bin]# 
    
    • 验证
    [root@izm5e11cqeaucml4d3vumbz apache-zookeeper-3.6.0-bin]# bin/zkCli.sh
    /usr/bin/java
    Connecting to localhost:2181
    ....
    WATCHER::
    
    WatchedEvent state:SyncConnected type:None path:null
    [zk: localhost:2181(CONNECTED) 0] 
    

    使用客户端命令操作zookeeper

    • 查看
    [zk: localhost:2181(CONNECTED) 1] ls 
    ls [-s] [-w] [-R] path
    [zk: localhost:2181(CONNECTED) 5] ls /
    [zookeeper]
    
    • 创建
    [zk: localhost:2181(CONNECTED) 6] create
    create [-s] [-e] [-c] [-t ttl] path [data] [acl]
    [zk: localhost:2181(CONNECTED) 7] create /zkPro myData
    Created /zkPro
    [zk: localhost:2181(CONNECTED) 8] ls /
    [zkPro, zookeeper]
    
    • 获取数据
    [zk: localhost:2181(CONNECTED) 9] get
    get [-s] [-w] path
    [zk: localhost:2181(CONNECTED) 11] get /zkPro
    myData
    
    • 数据设置
    [zk: localhost:2181(CONNECTED) 12] set
    set [-s] [-v version] path data
    [zk: localhost:2181(CONNECTED) 13] set /zkPro myData123
    [zk: localhost:2181(CONNECTED) 14] get /zkPro
    myData123
    
    • 删除节点
    [zk: localhost:2181(CONNECTED) 15] delete
    delete [-v version] path
    [zk: localhost:2181(CONNECTED) 16] delete /zkPro
    [zk: localhost:2181(CONNECTED) 17] ls /
    

    分析下配置文件

    # The number of milliseconds of each tick
    tickTime=2000
    # The number of ticks that the initial 
    # synchronization phase can take
    initLimit=10
    # The number of ticks that can pass between 
    # sending a request and getting an acknowledgement
    syncLimit=5
    # the directory where the snapshot is stored.
    # do not use /tmp for storage, /tmp here is just 
    # example sakes.
    dataDir=/tmp/zookeeper
    # the port at which the clients will connect
    clientPort=2181
    # the maximum number of client connections.
    # increase this if you need to handle more clients
    #maxClientCnxns=60
    #
    # Be sure to read the maintenance section of the 
    # administrator guide before turning on autopurge.
    #
    # http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
    #
    # The number of snapshots to retain in dataDir
    #autopurge.snapRetainCount=3
    # Purge task interval in hours
    # Set to "0" to disable auto purge feature
    #autopurge.purgeInterval=1
    
    ## Metrics Providers
    #
    # https://prometheus.io Metrics Exporter
    #metricsProvider.className=org.apache.zookeeper.metrics.prometheus.PrometheusMetricsProvider
    #metricsProvider.httpPort=7000
    #metricsProvider.exportJvmInfo=true
    

    参考资料:
    https://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_configuration
    zookeeper配置文件zoo.cfg详细讲解
    Zookeeper配置文件

    java连接操作

    快速创建个精简的spring mvc,参考:https://www.jianshu.com/p/e878756fb75c

    1. 创建zookeeper文件夹
    2. 使用git获取代码https://code.aliyun.com/liyi1314/quicklyCreateSpringMvc.git
    3. 打开pom.xml修改 ,并导入maven
     <artifactId>mini.Spring1</artifactId>
    

     <artifactId>mini.Spring1.zookeeper</artifactId>
    

    引入pom.xml

            <dependency>
                <groupId>org.apache.zookeeper</groupId>
                <artifactId>zookeeper</artifactId>
                <version>3.6.0</version>
            </dependency>
    

    写入ZooKeeperProSync.java

    public class ZooKeeperProSync implements Watcher {
        private static CountDownLatch connectedSemaphore = new CountDownLatch(1);
        private static ZooKeeper zk = null;
        private static Stat stat = new Stat();
    
        public static void main(String[] args) throws Exception {
            //zookeeper配置数据存放路径
            String path = "/username";
            //连接zookeeper并且注册一个默认的监听器
            zk = new ZooKeeper("xxxx:2181", 1000, new ZooKeeperProSync());
            //等待zk连接成功的通知
            connectedSemaphore.await();
            //获取path目录节点的配置数据,并注册默认的监听器
            System.out.println(new String(zk.getData(path, true, stat)));
    
            Thread.sleep(Integer.MAX_VALUE);
        }
    
        public void process(WatchedEvent event) {
            if (Watcher.Event.KeeperState.SyncConnected == event.getState()) {  //zk连接成功通知事件
                if (Watcher.Event.EventType.None == event.getType() && null == event.getPath()) {
                    connectedSemaphore.countDown();
                } else if (event.getType() == Watcher.Event.EventType.NodeDataChanged) {  //zk目录节点数据变化通知事件
                    try {
                        System.out.println("配置已修改,新值为:" + new String(zk.getData(event.getPath(), true, stat)));
                    } catch (Exception e) {
                    }
                }
            }
        }
    }
    

    Zookeeper集群模式安装

    进入目录设置conf文件

    配置文件
    [root@izm5e11cqeaucml4d3vumbz apache-zookeeper-3.6.0-bin]# cd /opt/apache-zookeeper-3.6.0-bin
    [root@izm5e11cqeaucml4d3vumbz apache-zookeeper-3.6.0-bin]# cp conf/zoo.cfg conf/zoo1.cfg
    [root@izm5e11cqeaucml4d3vumbz apache-zookeeper-3.6.0-bin]# vim conf/zoo1.cfg 
    

    修改配置,配置服务器1

    # vim conf/zoo-1.cfg
    dataDir=/tmp/zookeeper-1
    clientPort=2181
    server.1=127.0.0.1:2888:3888
    server.2=127.0.0.1:2889:3889
    server.3=127.0.0.1:2890:3890
    

    配置服务器2、3

    [root@izm5e11cqeaucml4d3vumbz apache-zookeeper-3.6.0-bin]# cp conf/zoo1.cfg conf/zoo2.cfg
    [root@izm5e11cqeaucml4d3vumbz apache-zookeeper-3.6.0-bin]# cp conf/zoo1.cfg conf/zoo3.cfg
    

    修改配置2、3

    dataDir=/tmp/zookeeper-2
    clientPort=2182
    # vim conf/zoo-2.cfg
    dataDir=/tmp/zookeeper-3
    clientPort=2183
    
    标识Server ID
    # cd /tmp/zookeeper-1
    # vim myid
    1
    # cd /tmp/zookeeper-2
    # vim myid
    2
    # cd /tmp/zookeeper-3
    # vim myid
    3
    
    启动三个zookeeper实例
    # bin/zkServer.sh start conf/zoo-1.cfg
    # bin/zkServer.sh start conf/zoo-2.cfg
    # bin/zkServer.sh start conf/zoo-3.cfg
    
    检测集群状态
    [root@izm5e11cqeaucml4d3vumbz apache-zookeeper-3.6.0-bin]# bin/zkServer.sh status  conf/zoo2.cfg 
    /usr/bin/java
    ZooKeeper JMX enabled by default
    Using config: conf/zoo2.cfg
    Client port found: 2182. Client address: localhost.
    Mode: leader
    [root@izm5e11cqeaucml4d3vumbz apache-zookeeper-3.6.0-bin]# bin/zkServer.sh status  conf/zoo1.cfg 
    /usr/bin/java
    ZooKeeper JMX enabled by default
    Using config: conf/zoo1.cfg
    Client port found: 2181. Client address: localhost.
    Mode: follower
    [root@izm5e11cqeaucml4d3vumbz apache-zookeeper-3.6.0-bin]# bin/zkServer.sh status  conf/zoo3.cfg 
    /usr/bin/java
    ZooKeeper JMX enabled by default
    Using config: conf/zoo3.cfg
    Client port found: 2183. Client address: localhost.
    Mode: follower
    

    参考资料:
    Zookeeper入门看这篇就够了

    Zookeeper—学习笔记(一)

    相关文章

      网友评论

          本文标题:zookeeper使用

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