• zookeeper三种模式安装详解(centos 7+zookeeper-3.4.9)


    zookeeper有单机、伪集群、集群三种部署方式,可根据自己实际情况选择合适的部署方式。下边对这三种部署方式逐一进行讲解。

    一 单机模式

    1.下载

    进入要下载的版本的目录,选择.tar.gz文件下载
    下载链接:http://archive.apache.org/dist/zookeeper/
    注意:点击进入之后,会显示zookeeper文件的下载目录,如图所示,显示了多个版本可以下载。alpha版本是内测,功能不是很完全的,能够满足一定的需要,这里我们不建议选择;beta是公测版本,基本上可以满足要求,可以适当的根据需要选择;如果是对稳定性要求非常高的话,最好是选择正式发布的版本。

    2.上传安装包到usr/local目录下,并解压缩,重命名,配置环境变量

    [root@hadoop ~]# cd /usr/local/
    [root@hadoop local]# tar xzvf zookeeper-3.4.9.tar.gz #解压缩
    [root@hadoop local]# mv zookeeper-3.4.9 zookeeper #重命名
    [root@hadoop local]# vi /etc/profile #添加环境变量
    添加变量:export ZOO_HOME=/usr/local/zookeeper
    然后在PATH变量后面添加::$ZOO_HOME/bin
    [root@hadoop local]# source /etc/profile #生成环境变量

    3.配置zookeeper。将配置模板生成为配置文件,生成dataDir目录,修改参数

    [root@hadoop local]# cd /usr/local/zookeeper/conf
    [root@hadoop conf]# ls
    configuration.xsl  log4j.properties  zoo_sample.cfg
    [root@hadoop conf]# cp zoo_sample.cfg zoo.cfg #生成配置文件
    [root@hadoop conf]# mkdir -p /usr/local/zookeeper/data #生成dataDir目录
    [root@hadoop conf]# vi zoo.cfg  #添加如下参数
    dataDir=/usr/local/zookeeper/data #已有,修改即可
    dataLogDir=/usr/local/zookeeper/data/log 
    server.1=hadoop:2888:3888

    附zoo.cfg文件

    # The number of milliseconds of each tick
    #表示每2s心跳一次,zookeeper的服务器之间或者客户端与服务器之间维持着一种心跳机制
    tickTime=2000
    # The number of ticks that the initial 
    # synchronization phase can take
    #集群中的follower和leader之间初始连接时能够容忍的最大心跳数
    initLimit=10 
    # The number of ticks that can pass between 
    # sending a request and getting an acknowledgement
    #leader和follower之间同步的实现,follower和leader之间请求和应答能容忍的最大心跳数
    #也就是说在5个心跳之后判断对方死亡
    syncLimit=5 
    # the directory where the snapshot is stored.
    # do not use /tmp for storage, /tmp here is just 
    # example sakes.
    #zookeeper数据存放的目录
    dataDir=/usr/local/zookeeper/data
    #zookeeper数据的日志文件存放的目录
    dataLogDir=/usr/local/zookeeper/data/log
    # the port at which the clients will connect
    #客户端连接zookeeper的端口号
    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
    #此处指的是你有多少台zookeeper,每台zookeeper的服务器主机名叫什么以及相应的端口
    #服务器名称与地址,包括服务器编号,地址,leader与follower通讯端口,选举端口等
    server.1=hadoop:2888:3888
    View Code

    4.在dataDir目录下生成myid文件
    myid文件告诉zookeeper我是该集群中的第几号机器,然后在myid文件中从1开始填入对应的数字

    [root@hadoop conf]# echo 1 > /usr/local/zookeeper/data/myid #单机模式只有一台机器,故它是集群中的1号机器

    5.开启zookeeper集群节点

    [root@hadoop conf]# zkServer.sh start
    ZooKeeper JMX enabled by default
    Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
    Starting zookeeper ... STARTED

    6.检查集群状态或者节点角色

    [root@hadoop conf]# jps #出现QuorumPeerMain代表zookeeper正常运转
    116422 Jps
    116254 QuorumPeerMain
    
    [root@hadoop conf]# zkServer.sh status #单机模式,只有一种角色standalone
    ZooKeeper JMX enabled by default
    Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
    Mode: standalone

    7.关闭zookeeper集群节点

    [root@hadoop conf]# zkServer.sh stop
    ZooKeeper JMX enabled by default
    Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
    Stopping zookeeper ... STOPPED
    
    [root@hadoop conf]# jps
    116564 Jps
    
    [root@hadoop conf]# zkServer.sh status
    ZooKeeper JMX enabled by default
    Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
    Error contacting service. It is probably not running.

    二 伪集群模式

    伪集群模式就是在同一主机启动多个zookeeper并组成集群,下边以在hadoop主机上创建3个zookeeper组集群为例。

    1.将通过单机模式安装的zookeeper,复制成zoo1/zoo2/zoo3三份

    [root@hadoop ~]# mkdir /zoo
    [root@hadoop ~]# cp -r /usr/local/zookeeper /zoo/zoo1
    [root@hadoop ~]# cp -r /usr/local/zookeeper /zoo/zoo2
    [root@hadoop ~]# cp -r /usr/local/zookeeper /zoo/zoo3
    [root@hadoop ~]# cd /zoo/
    [root@hadoop zoo]# ls
    zoo1  zoo2  zoo3

    2.分别修改3个节点的配置文件

    [root@hadoop zoo]# vi /zoo/zoo1/conf/zoo.cfg #节点1
    dataDir=/zoo/zoo1/data 
    dataLogDir=/zoo/zoo1/data/log
    clientPort=2181 
    #由于我们用的同一个主机hadoop,为了防止端口冲突,设置端口号均不同
    #如果是3个节点分别在3台机器上,端号可以一样
    #此处主机名hadoop也可以写成主机IP地址
    server.1=hadoop:2888:3888
    server.2=hadoop:4888:5888
    server.3=hadoop:6888:7888
    
    [root@hadoop zoo]# vi /zoo/zoo2/conf/zoo.cfg #节点2
    dataDir=/zoo/zoo2/data 
    dataLogDir=/zoo/zoo2/data/log
    clientPort=2281 
    server.1=hadoop:2888:3888
    server.2=hadoop:4888:5888
    server.3=hadoop:6888:7888
    
    [root@hadoop zoo]# vi /zoo/zoo3/conf/zoo.cfg #节点3
    dataDir=/zoo/zoo3/data 
    dataLogDir=/zoo/zoo3/data/log
    clientPort=2381 
    server.1=hadoop:2888:3888
    server.2=hadoop:4888:5888
    server.3=hadoop:6888:7888

    3.分别修改3个节点的myid文件

    [root@hadoop zoo]# echo 1 > /zoo/zoo1/data/myid
    [root@hadoop zoo]# echo 2 > /zoo/zoo2/data/myid
    [root@hadoop zoo]# echo 3 > /zoo/zoo3/data/myid

    4.依次启动3个zookeeper集群节点
    由于没加环境变量,启动方式为$ZOO_HOME/bin/zkServer.sh start

    [root@hadoop /]# /zoo/zoo1/bin/zkServer.sh start #启动节点1
    ZooKeeper JMX enabled by default
    Using config: /zoo/zoo1/bin/../conf/zoo.cfg
    Starting zookeeper ... STARTED
    
    [root@hadoop /]# jps #1个QuorumPeerMain代表1个节点启动成功
    QuorumPeerMain
    Jps
    
    [root@hadoop /]# /zoo/zoo1/bin/zkServer.sh status #此时节点1是LOOKING状态
    ZooKeeper JMX enabled by default
    Using config: /zoo/zoo1/bin/../conf/zoo.cfg
    Error contacting service. It is probably not running.
    
    
    [root@hadoop /]# /zoo/zoo2/bin/zkServer.sh start #启动节点2
    ZooKeeper JMX enabled by default
    Using config: /zoo/zoo2/bin/../conf/zoo.cfg
    Starting zookeeper ... STARTED
    
    [root@hadoop /]# jps #2个QuorumPeerMain代表2个节点启动成功
    QuorumPeerMain
    Jps
    QuorumPeerMain
    
    [root@hadoop /]# /zoo/zoo2/bin/zkServer.sh status #通过选举节点2为leader
    ZooKeeper JMX enabled by default
    Using config: /zoo/zoo2/bin/../conf/zoo.cfg
    Mode: leader
    [root@hadoop /]# /zoo/zoo1/bin/zkServer.sh status #节点1为follower
    ZooKeeper JMX enabled by default
    Using config: /zoo/zoo1/bin/../conf/zoo.cfg
    Mode: follower
    
    
    [root@hadoop /]# /zoo/zoo3/bin/zkServer.sh start #启动节点3
    ZooKeeper JMX enabled by default
    Using config: /zoo/zoo3/bin/../conf/zoo.cfg
    Starting zookeeper ... STARTED
    
    [root@hadoop /]# jps #3个QuorumPeerMain代表3个节点启动成功
    QuorumPeerMain
    Jps
    QuorumPeerMain
    QuorumPeerMain
    
    [root@hadoop /]# 
    [root@hadoop /]# /zoo/zoo3/bin/zkServer.sh status #leader已被选举出来,节点3只能当follower了
    ZooKeeper JMX enabled by default
    Using config: /zoo/zoo3/bin/../conf/zoo.cfg
    Mode: follower
    [root@hadoop /]# /zoo/zoo1/bin/zkServer.sh status
    ZooKeeper JMX enabled by default
    Using config: /zoo/zoo1/bin/../conf/zoo.cfg
    Mode: follower
    [root@hadoop /]# /zoo/zoo2/bin/zkServer.sh status
    ZooKeeper JMX enabled by default
    Using config: /zoo/zoo2/bin/../conf/zoo.cfg
    Mode: leader
    View Code

    5.如何同时关闭zookeeper所有节点?

    [root@hadoop data]# kill -9 `ps -ef|grep zookeeper|awk '{print $2}'` #杀死进程 
    #注意:单引号外面的一层是反引号(Tab上面的那个键),用于命令嵌套
    -bash: kill: (119807) - No such process [root@hadoop data]# ps -ef|grep zookeeper #查看进程 root 119821 111007 0 05:29 pts/1 00:00:00 grep --color=auto zookeeper

    三 集群模式

    集群模式就是在不同主机上安装zookeeper然后组成集群的模式。安装方式与伪集群模式类似。下边以在hadoop/hadoop2/hadoop3三台主机上安装为例。

    1.首先在hadoop主机上以单机模式安装zookeeper,然后将其打包复制到另外两台主机hadoop2和hadoop3上,并都解压到同样的目录下。

    2.分别修改3个节点的配置文件

    [root@hadoop ~]# vi /usr/local/zookeeper/conf/zoo.cfg #节点1,2,3均修改如下
    #对于节点1,2,3,由于安装目录都一样,所以dataDir和dataLogDir不需要改变
    #节点1,2,3分别在不同机器上,所以clientPort也不需要改变
    dataDir=/usr/local/zookeeper/data
    dataLogDir=/usr/local/zookeeper/data/log 
    clientPort=2281 
    #3个节点分别在3台机器上,端号可以一样
    server.1=hadoop:2888:3888
    server.2=hadoop2:2888:3888
    server.3=hadoop3:2888:3888

    3.分别修改3个节点的myid文件。3个节点的myid文件分别写入1,2,3,方法参考伪集群模式

    附myid数字生成法(我没用这个脚本执行,大家感兴趣可以尝试)

    #!/bin/bash
    #在执行该脚本前,请确保zookeeper已经复制到各个节点服务器上
    i=1
    for j in `sed '1,2d' /etc/hosts|awk '{print $1}'`
    do
    ssh $j "echo $i > /usr/local/zookeeper/data/myid"
    i=$(($i+1))
    echo $i
    done 
    View Code

    4.分别启动3个zookeeper集群节点,方法参考伪集群模式

    附zookeeper状态脚本

    [root@hadoop ~]# cd /usr/local/zookeeper/bin/
    [root@hadoop bin]# vi zoo_status.sh
    #!/bin/bash
    for i in `cat /etc/hosts|awk '{print $2}' | grep -v localhost`
    do
    ssh $i << EOF
    zkServer.sh status
    EOF
    done
    [root@hadoop bin]# chmod 777 zoo_status.sh 
    [root@hadoop bin]# zoo_status.sh 
  • 相关阅读:
    spring boot整合quartz存储到数据库
    java多线程定时器和java判断一个时间是否在时间区间内和用正则表达式获取String字符串之间的数据
    maven项目通过java加载mqtt存储到mysql数据库,实现发布和接收
    java往MongDB导入大量数据
    SSH面试题收藏
    Spring面试题
    Hibernate面试题收藏
    Spring MVC
    浅谈 Struts2 面试题收藏
    JSP 新闻发布会
  • 原文地址:https://www.cnblogs.com/zhengna/p/9327257.html
Copyright © 2020-2023  润新知