• 二、Zookeeper安装


    一、安装部署

    1.1、安装前准备 

    [root@jdy develop_tools]# tar -zxvf zookeeper-3.4.14.tar.gz -C /usr/local/
    [root@jdy local]# mv zookeeper-3.4.14/  zookeeper

    1.2、配置修改

    • 将/usr/local/jdy/zookeeper/conf这个路径下的zoo_sample.cfg修改为zoo.cfg;

    #备份&改名
    [root@jdy conf]# cp zoo_sample.cfg zoo.cfg 
    • 打开zoo.cfg文件,修改dataDir路径:

    [root@jdy zookeeper]# mkdir -p /opt/zookeeper/data
    [root@jdy zookeeper]# mkdir -p /opt/zookeeper/logs
    ​[root@jdy zookeeper]# vim conf/zoo.cfg
    
    # 修改数据存放目录
    dataDir=/opt/zookeeper/data
    #修改日志存放目录
    dataLogDir=/opt/zookeeper/logs

    1.3、操作Zookeeper

    • 启动Zookeeper

    [root@jdy zookeeper]# bin/zkServer.sh start
    ZooKeeper JMX enabled by default
    Using config: /usr/local/jdy/zookeeper/bin/../conf/zoo.cfg
    Starting zookeeper ... STARTED
    • 查看进程是否启动

    [root@jdy zookeeper]# jps
    26453 Jps
    26423 QuorumPeerMai
    • 查看状态:

    [root@jdy zookeeper]# bin/zkServer.sh status
    ZooKeeper JMX enabled by default
    Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
    Mode: standalone
    • 启动客户端:

    [root@jdy zookeeper]# bin/zkCli.sh
    • 退出客户端:

    [zk: localhost:2181(CONNECTED) 2] quit
    • 停止Zookeeper

    [root@jdy zookeeper]# bin/zkServer.sh stop
    ZooKeeper JMX enabled by default
    Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
    Stopping zookeeper ... STOPPED
    • 配置环境变量

    [root@m zookeeper]# vim /etc/profile
    #将下面路径写入profile文件
    export ZOOKEEPER_HOME=/usr/local/zookeeper
    export PATH=$PATH:$ZOOKEEPER_HOME/bin#让配置生效
    [root@m zookeeper]# source /etc/profile#可以在任意路径下启动Zookeeper
    zkServer.sh start

    1.4、设置开机自启

    (1)、方式一

    • 修改vim  /etc/rc.d/rc.local文件
    export JAVA_HOME=/usr/local/jdk8   
    /data/zookeeper-3.4.11/bin/zkServer.sh start
    •  添加执行权
    chmod +x /etc/rc.d/rc.local

      重启后生效

      不生效查看:https://www.cnblogs.com/kevingrace/p/8387827.html

    (2)、方式二

      建立zookeeper服务

    • 进入到/etc/rc.d/init.d目录下,新建一个zookeeper脚本
    cd  /etc/init.d
    vim zookeeper
    #!/bin/bash
    #chkconfig:2345 20 90
    #description:zookeeper
    #processname:zookeeper
    export JAVA_HOME=/usr/local/jdk8
    case $1 in
              start) su root /usr/local/zookeeper/bin/zkServer.sh start;; 
              stop) su root /usr/local/zookeeper/bin/zkServer.sh stop;;
              status) su root /usr/local/zookeeper/bin/zkServer.sh status;;
              restart) su root /usr/local/zookeeper/bin/zkServer.sh restart;;
              *) echo "require start|stop|status|restart" ;; 
    esac
    • 添加执行权限
    chmod +x zookeeper
    • service zookeeper start/stop/status命令启动、停止或查看状态
    • 添加到开机自启
    chkconfig --add zookeeper

     chkconfig --list #查看是否添加成功

      集群启动报错解决方法:https://www.cnblogs.com/yangxianyang/p/13675616.html

    二、配置参数解读

      Zookeeper中的配置文件zoo.cfg中参数含义解读如下:

    • tickTime =2000
      • 通信心跳数,Zookeeper服务器与客户端心跳时间,单位毫秒

      • Zookeeper使用的基本时间,服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个tickTime时间就会发送一个心跳,时间单位为毫秒。

      • 它用于心跳机制,并且设置最小的session超时时间为两倍心跳时间。(session的最小超时时间是2*tickTime)

    • initLimit =10:LF初始通信时限
      • 集群中的Follower跟随者服务器与Leader领导者服务器之间初始连接时能容忍的最多心跳数(tickTime的数量),用它来限定集群中的Zookeeper服务器连接到Leader的时限。

    • syncLimit =5:LF同步通信时限
      • 集群中Leader与Follower之间的最大心跳数心跳数,假如响应超过syncLimit * tickTime,Leader认为Follwer死掉,从服务器列表中删除Follwer。

    • dataDir
      • 数据文件目录+数据持久化路径

      • 主要用于保存Zookeeper中的数据。

    • clientPort =2181:客户端连接端口
      • 监听客户端连接的端口。

    三、zookeeper 集群搭建

      zookeeper的集群一般是奇数台,本次3台服务器,

    • 修改zookeeper配置文件。
    #服务器对应端口号
    clientPort=2181
    #数据快照文件所在路径
    dataDir=/home/zookeeper/zookeeper2181/data
    #集群配置信息
    #server.A=B:C:D    
    #A:是一个数字,表示这个是服务器的编号    
    #B:是这个服务器的ip地址    
    #C:Zookeeper服务器之间的通信端口    
    #D:Leader选举的端口    
    server.0=192.168.126.140:2888:3888
    server.1=192.168.126.141:2888:3888
    server.2=192.168.126.142:2888:3888
    • 在上一步 dataDir 指定的目录下,创建 myid 文件,然后在该文件添加上一步server 配置的对应 A 数字。
    #zookeeper2181对应的数字为1
    #/home/zookeeper/zookeeper2181/data目录下执行命令
    echo "1" > myid

       一台机器搭建好后,克隆服务器。修改myid中的数字

    • zookeeperAPI连接集群
    ZooKeeper(String connectionString, int sessionTimeout, Watcher watcher)
    • connectionString:zooKeeper集合主机。

    • sessionTimeout:会话超时(以毫秒为单位)。

    • watcher:实现“监视器”界面的对象。ZooKeeper集合通过监视器对象返回连接状态。

    public class ZookeeperConnection {
        public static void main(String[] args) {
            try {
                // 计数器对象
                CountDownLatch countDownLatch=new CountDownLatch(1);
                // arg1:服务器的ip和端口
                // arg2:客户端与服务器之间的会话超时时间  以毫秒为单位的
                // arg3:监视器对象
                ZooKeeper zooKeeper=new ZooKeeper("192.168.60.130:2181,192.168.60.130:2182,192.168.60.130:2183", 5000, new Watcher() {
                    @Override
                    public void process(WatchedEvent event) {
                        if(event.getState()==Event.KeeperState.SyncConnected)
    {
                            System.out.println("连接创建成功!");
                            countDownLatch.countDown();
                        }
                    }
                });
                // 主线程阻塞等待连接对象的创建成功
                countDownLatch.await();
                // 会话编号
                System.out.println(zooKeeper.getSessionId());
                zooKeeper.close();
            } catch (Exception ex) {
                ex.printStackTrace();
            }
        }
    }
  • 相关阅读:
    webpack4入门配置
    RequireJs的理解
    js一次控制 多个style样式
    vue中封装一个全局的弹窗js
    地理位置索引 2d索引
    索引属性 稀疏索引,定时索引
    索引属性 unique指定
    索引属性 name指定
    mongodb索引 全文索引使用限制
    mongodb索引 全文索引之相似度查询
  • 原文地址:https://www.cnblogs.com/jdy1022/p/13846761.html
Copyright © 2020-2023  润新知