Zookeeper安装与使用-01

738 阅读2分钟

Java环境安装

  • 搜索安装包
    yum -y list java-11*
    
  • 安装jdk11
    yum -y install java-11*
    
  • 查看当前版本
    java -version
    
  • 配置环境变量
    • 编辑配置文件: vim /etc/profile
      export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.0.10.0.9-0.el7_9.x86_64
      export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
      export PATH=$PATH:$JAVA_HOME/bin
      
    • 刷新配置到内存,使其生效: source /etc/profile
    • 测试是否生效: echo $JAVA_HOME

Zookeeper的安装

  • 下载bin压缩包:
    wget https://archive.apache.org/dist/zookeeper/zookeeper-3.5.6/apache-zookeeper-3.5.6-bin.tar.gz
    
  • 解压:
    tar  -zxvf apache-zookeeper-3.5.6-bin.tar.gz 
    
  • 移动到指定文件并重命名目录:
    mv apache-zookeeper-3.5.6-bin/ /opt/zookeeper
    
  • 配置环境变量:
    • 编辑配置文件: vim /etc/profile
      export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.0.10.0.9-0.el7_9.x86_64
      export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
      export ZOOKEEPER_HOME=/opt/zookeeper
      export PATH=$PATH:$JAVA_HOME/bin:$ZOOKEEPER_HOME/bin
      
    • 刷新配置到内存,使其生效: source /etc/profile
    • 测试是否生效: echo $ZOOKEEPER_HOME

单机模式

  • 配置文件:
    • 切换到指定目录: cd /opt/zookeeper/conf/
    • 拷贝一份配置文件,一定得命名为zoo.cfg:
      cp zoo_sample.cfg zoo.cfg
      
  • 启动服务:
    zkServer.sh start
    
  • 验证服务:
    • 使用telnetstat两个命令验证服务是否正常
      • yum install telnet

        telnet 127.0.0.1 2181
        输入 stat
        

        image.png

      • 解决白名单问题:

        • 打开vim /opt/zookeeper/bin/zkServer.sh并添加一行代码:
          ZOOMAIN="-Dzookeeper.4lw.commands.whitelist=* ${ZOOMAIN}"
          

        image.png

        • zkServer.sh restart重启服务:
        • 再次验证服务:
          image.png

配置文件

# The number of milliseconds of each tick
# Zookeeper服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。tickTime以毫秒为单位。
tickTime=2000
# The number of ticks that the initial 
# synchronization phase can take
# 集群中的follower服务器(F)与leader服务器(L)之间初始连接时能容忍的最多心跳数(tickTime的数量)
initLimit=10
# The number of ticks that can pass between 
# sending a request and getting an acknowledgement
# 集群中的follower服务器与leader服务器之间请求和应答之间能容忍的最多心跳数(tickTime的数量)
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just 
# example sakes.
# 配置持久化的文件目录
dataDir=/var/zookeeper
# 配置日志文件目录
dataLogDir=/opt/zookeeper/logs
# 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

集群模式

  • 配置文件调整:
    • 配置文件底部增加
      # 服务器名称与地址:集群信息(服务器编号,服务器地址,LF通信端口,选举端口)
      server.1=node01:2888:3888
      server.2=node02:2888:3888
      server.3=node03:2888:3888
      server.4=node04:2888:3888
      
    • /var/zookeeper目录下增加myid文件,内容如下:
      1
      
  • 前台阻塞启动服务:
     zkServer.sh start-foreground
    
    • node01先启动,观察现象:报错,但是并未退出 image.png
    • node02第二个启动,LOOKING状态 image.png
    • node03第三个启动,leader产生,node01,node02也随之running起来了 image.png image.png image.png
    • node03挂掉,node04选举出leader image.png
    • cZxid在每一个session连接的时候也算了一次 image.png image.png