zookeeper集群安装

zookeeper集群安装

文档

  1. linux安装java -centos安装java -linux配置java环境变量
  2. zookeeper单机安装

说明

  1. 版本选择:apache-zookeeper-3.5.7-bin.tar.gz
  2. 下载地址:https://archive.apache.org/dist/zookeeper/zookeeper-3.5.7/apache-zookeeper-3.5.7-bin.tar.gz
  3. 先安装单机版,参考zookeeper单机安装,然后调整配置文件,即可转为集群安装

安装前准备

  1. 在linux上安装,centos7上安装
  2. 安装java环境,参考:linux安装java -centos安装java -linux配置java环境变量

集群安装

  1. 在三台服务器上安装3个zookeeper服务,组成集群,先在一台服务器上安装好,然后复制到另外两台服务器上,修改配置即可

  2. 安装单机版,参考zookeeper单机安装

  3. 配置服务器编号

    在单机版安装中,已创建/opt/module/zookeeper-3.5.7/zkData目录,用来存放zookeeper数据,在该目录下,创建myid文件,文件内容为服务器编号,设置一个数字即可

    cd cd /opt/module/zookeeper-3.5.7/zkData
    vi myid
    

    在文件中添加内容,即服务器编号,保证集群内唯一即可,可以以服务器ip的最后一位做为服务器编号

    # 数字,添加server对应的编号,唯一标识,集群内唯一,例如:当前服务器ip末尾是2,这里就设置为2
    2
    
  4. 修改配置文件zoo.cfg

    在单机安装中,已修改配置文件,指定了数据的存储路径,如下

    # dataDir=/tmp/zookeeper
    dataDir=/opt/module/zookeeper-3.5.7/zkData
    

    在此基础上,增加集群配置,在配置文件zoo.cfg后面增加内容

    # cluster集群配置
    server.2=192.168.145.132:2888:3888
    server.3=192.168.145.133:2888:3888
    server.4=192.168.145.134:2888:3888
    

    集群配置说明

    配置参数说明
    server.A=B:C:D
    server.服务器编号=服务器地址:集群中Follower与Leader服务器交换信息的端口:集群中Leader挂了,重新进行选举,执行选举时服务器相互通信的端口
    A:服务器编号,就是myid文件中的值
    B:服务器地址
    C:交换信息端口
    D:选举通信端口
    

    完整的配置文件

    # The number of milliseconds of each tick
    # 通信心跳时间,zookeeper服务器与客户端及服务端与服务端心跳时间,单位毫秒 
    tickTime=2000
    # The number of ticks that the initial 
    # synchronization phase can take
    # LF(Leader与Follower)初始化时的通信时间,10表示10个心跳时间(tickTime),20s未建立连接,通信失败
    initLimit=10
    # The number of ticks that can pass between 
    # sending a request and getting an acknowledgement
    # LF同步通信时限,5个心跳,10s
    syncLimit=5
    # the directory where the snapshot is stored.
    # 快照数据
    # do not use /tmp for storage, /tmp here is just 
    # 不要存放在 /tmp 下
    # example sakes.
    # 自定义路径存放快照数据,改动处1
    # dataDir=/tmp/zookeeper
    dataDir=/opt/module/zookeeper-3.5.7/zkData
    # 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
    
    # 添加以下内容,改动处2
    # cluster集群配置
    server.2=192.168.145.132:2888:3888
    server.3=192.168.145.133:2888:3888
    server.4=192.168.145.134:2888:3888
    
    # 配置参数说明
    # server.A=B:C:D
    # server.服务器编号=服务器地址:集群中Follower与Leader服务器交换信息的端口:集群中Leader挂了,重新进行选举,执行选举时服务器相互通信的端口
    # A:服务器编号,就是myid文件中的值
    # B:服务器地址
    # C:交换信息端口
    # D:选举通信端口
    
    # 整体就2处改动
    
  5. 以上在一台服务器上的zookeeper集群配置就完成了,将zookeeper整体文件目录复制到另外两台服务器,注意复制到新服务器后,调整zookeeper的服务器编号,即myid文件中的值

  6. 配置文件中的集群配置应与实际情况对应,即集群配置中的服务器编号、服务器地址应调整为实际情况中的服务器编号、服务器地址

关闭防火墙

​ 如果存在防火墙,应保证服务之间正常通信,可以先关闭防火墙

  1. 查看防火墙状态

    systemctl status firewalld
    
  2. 关闭防火墙

    systemctl stop firewalld
    

启动zookeeper服务端

  1. 在3台服务器中,分别启动zookeeper

    cd /opt/module/zookeeper-3.5.7/bin
    ./zkServer.sh start
    
  2. 注意事项

    集群启动成功,应满足半数以上节点启动,所以启动第一个zookeeper后,观察状态,是失败的
    
    启动第一个zookeeper后,查看状态,是失败的,因为此时不满足集群最小服务器数量
    启动第二个zookeeper后,查看状态,是成功的,第一个zookeeper也成功了,而且选出了Leader
    启动第三个zookeeper后,查看状态,是成功的,当前节点为Follower
    
  3. 查看zookeeper进程,jps是java命令

    jps -l
    
  4. 查看zookeeper状态

    ./zkServer.sh status
    
  5. 停止zookeeper

    ./zkServer.sh stop
    

启动zookeeper客户端

  1. 启动客户端,默认服务器为localhost

    ./zkCli.sh
    

    输出信息:[zk: localhost:2181(CONNECTED) 0]

  2. 启动客户端,指定服务器

    ./zkCli.sh -server 192.168.145.132:2181
    

    输出信息:[zk: 192.168.145.132:2181(CONNECTED) 0]

  3. 退出

    quit
    

zookeeper集群启动停止脚本

  1. 使用集群启动脚本,可一键启动集群中的所有服务

  2. 注意事项

    • 脚本中连接其它服务器未使用密码,所有应提前设置ssh免密登录
    • ssh远程登录可能会出现找不到JAVA_HOME的问题,可以将java的配置信息配置到/etc/bashrc
  3. 具体脚本内容

    脚本名称:zk.sh

    #!/bin/bash
    
    case $1 in
    "start"){
    	for i in [email protected] [email protected] [email protected]
    	do
    		# 提前设置免密登录
    		echo ------ zookeeper $i 启动 ------
    		ssh $i "/opt/module/zookeeper-3.5.7/bin/zkServer.sh start"
    	done
    }
    ;;
    "stop"){
    	for i in [email protected] [email protected] [email protected]
    	do
    		# 提前设置免密登录
    		echo ------ zookeeper $i 停止 ------
    		ssh $i "/opt/module/zookeeper-3.5.7/bin/zkServer.sh stop"
    	done
    }
    ;;
    "status"){
    	for i in [email protected] [email protected] [email protected]
    	do
    		# 提前设置免密登录
    		echo ------ zookeeper $i 状态 ------
    		ssh $i "/opt/module/zookeeper-3.5.7/bin/zkServer.sh status"
    	done
    }
    ;;
    esac
    
  4. 启动zookeeper集群各个节点

    ./zk.sh start
    
  5. 查看zookeeper集群各个节点状态

    ./zk.sh status
    
  6. 关闭zookeeper集群各个节点

    ./zk.sh stop
    

参考资料

  • 尚硅谷

你可能感兴趣的:(zookeeper,zookeeper)