CentOS7安装Zookeeper分布式集群

这篇具有很好参考价值的文章主要介绍了CentOS7安装Zookeeper分布式集群。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

CentOS7安装Zookeeper分布式集群

  1. 前言
    ZooKeeper 是一个开源的分布式协调服务框架,主要用于分布式系统中的数据同步、配置管理、集群控制和命名服务等方面的处理。本文在3个系统为CentOS7的Linux节点上配置了Zookeeper分布式集群,安装配置的过程均在普通用户sxZhang的账户上完成,安装路径为~/bigdata,3个Linux节点的主机和IP的映射如下:

     10.10.10.1 host01
     10.10.10.2 host02
    10.10.10.3 host03
    

    在正式安装之前,我们需要进行免密登录的配置、JDK的安装和关闭防火墙,本文假设读者已经完成这些工作,之后直接安装Zookeeper。

    若未完成上述工作,可参考:
    免密登录参考博客:Linux 配置SSH免密登录详细步骤
    CentOS7关闭防火墙参考博客:Centos7关闭防火墙详细教程

  2. 下载zookeeper安装包

    前往zookeeper的下载页面Index of /apache/zookeeper下载相关安装包。

    注意事项:
    1)zookeeper节点必须是奇数个,因为zookeeper选举的规则:leader选举,要求可用节点数量必须大于总节点数量/2
    2)zookeeper 是使用 java 来运行的,所以需要依赖 JDK,所以安装 zookeeper 之前需要安装部署 JDK
    3) 注意关闭节点服务器的防火墙
    4) 官网上有两个tar.gz文件,bin名称结尾的包就是我们要下载的,可以直接使用。
    

    笔者选择的安装包版本为apache-zookeeper-3.8.3-bin.tar.gz

  3. 将下载的安装包使用xftp工具或rz命令上传到host01的~/bigdata/后,解压安装

    # 1.解压到当前目录
    tar -zxvf apache-zookeeper-3.8.3-bin.tar.gz
    # 2.重命名
    mv apache-zookeeper-3.8.3-bin zookeeper
    
  4. 修改环境变量

    编辑用户级环境变量的配置文件~/.bashrc,命令为vim ~/.bashrc,之后添加如下内容:

    #ZOOKEEPERR_HOME 需要与读者自己的安装路径匹配
    export ZOOKEEPER_HOME=/home/sxZhang/bigdata/zookeeper
    export PATH=$PATH:$ZOOKEEPER_HOME/bin
    

    编辑完成后,使用source ~/.bashrc或重新打开一个xshell会话终端更新环境变量,执行echo $ZOOKEEPER_HOM的结果为zookeeper的目标安装路径则正确。

    Tips:如果想在系统环境下安装配置,则需要选择/opt/usr/local等路径进行安装,且编辑文件为/etc/proflie

  5. 编辑Zookeeper的集群配置

    • 创建Zookeeper集群的数据存储目录及日志目录

      cd $ZOOKEEPER_HOME
      mkdir data
      mkdir log
      
    • 生成zookeeper配置文件

      cd ./conf
      cp zoo_sample.cfg zoo.cfg
      
    • 编辑zookeeper配置文件

      使用vim zoo.cf编辑zookeeper配置文件,在配置文件中修改如下内容:

      # 心跳时间
      tickTime=2000
      
      # follow连接leader的初始化连接时间,表示tickTime的倍数
      initLimit=10
      
      # syncLimit配置表示leader与follower之间发送消息,请求和应答时间长度。
      # 如果followe在设置的时间内不能与leader进行通信,那么此follower将被丢弃,tickTime的倍数
      syncLimit=5
      
      # 客户端连接超时时间ms
      maxClientCnxns=600
      
      # 客户端连接端口,访问 zookeeper的端口
      clientPort=2181
      
      # 节点数据存储及日志目录,需要提前创建
      dataDir=/home/sxZhang/bigdata/zookeeper/data
      dataLogDir=/home/sxZhang/bigdata/zookeeper/log
      
      server.1=10.10.10.1:2888:3888
      server.2=10.10.10.2:2888:3888
      server.3=10.10.10.3:2888:3888
      

      特别需要注意的是dataDirdataLogDirserver.x的配置,需要指定自己的Zookeeper安装路径和自己集群主机的IP。

  6. 将host01上配置好的Zookeeper文件夹打包分发到另外两个节点解压:

    集群规模较小时,分发和打包的操作可以手动在每个节点一步一步的操作,但当集群的节点规模成百上千时,显然需要一种批量操作的方式,下面代码块中的for循环语句就是用于批量处理的。Linux基础较弱看不懂该代码的读者,可自行查阅shell的循环控制语句scp的用法以及ssh远程执行命令

    使用该方式前应配置好免密登录,否则每次循环都需要输入一次密码。

    # 1.打包zookeeper文件夹
    tar -zcf zookeeper.tar.gz zookeeper
    
    # 2.以遍历的方式转发到另外两个节点
    for host in {host02,host03} #需要修改主机列表为自己的主机
    do
      scp zookeeper.tar.gz $host:~/bigdata  #修改为zk的安装路径,并保证路径存在
    done
    
    # 3..以遍历的方式在另外2个节点上解压压缩包,解压成功后删除压缩包
    for host in {host02,host03} #需要修改主机列表为自己的主机
    do
      echo 正在${host}上解压ZK压缩包到目标位置:
      ssh $host "cd ~/bigdata; tar -zxvf  ~/zookeeper.tar.gz; rm ~/zookeeper.tar.gz"
      echo 操作成功
    done
    
  7. 为每台机器配置Zookeeper的节点id

    for i in {1..3} #改成自己的id范围
    do
      node=host0$i  #改成自己的主机名形式,仅id与主机编号相同时,才可使用for循环遍历处理
      ssh $node "echo $i >~/bigdata/zookeeper/data/myid"
    done
    

    即在各个节点上,在$ZOOKEEPER_HOME/data/conf/zoo.cfgdataDir所指定的具体路径下,创建一个名为myid的文本文件,其内容为Zookeeper集群中节点的id,例如令host01、host02、host03对应的myid依次为1、2、3。

  8. 启动、查看和停止Zookeeper集群

    启动、查看和停止某个Zookeeper节点的命令分别是:

    cd $ZOOKEEPER_HOME/bin/
    ./zkServer.sh star
    ./zkServer.sh status
    ./zkServer.sh stop
    

    $ZOOKEEPER_HOME/bin/目录下存放的是zookeeper可用的可执行命令,单个节点的启动、停止、状态查看都是通过该目录下的zkServer.sh传入不同的命令参数实现的,如果正确配置了环境变量,将该目录添加到了环境变量$PATH,则可在任意路径执行该目录下的可执行文件。

    当然,因为每次仅对一个节点操作效率会很低,因此可以编写批量启动、停止、查看状态的脚步文件,首先使用vim zkcmd.sh新建一个文件,添加如下内容后保存:

    #!/bin/bash
    cmd=$1
    
    # 判断是否提供了输入参数
    if [ -z "$1" ]; then
      echo "本脚本需要输入参数cmd"
      echo -e "cmd 在 {start, stop, status} 中选择:\n-start\t启动zk集群\n-stop\t关闭zk集群\n-status\t查看zk集群状态"
      exit 1
    fi
    
    # 合法的命令集合 
    cmdlist=("start" "stop" "status")
    
    # 检查传入的命令是否合法 
    if [[ " ${cmdlist[@]} " =~ " ${cmd} " ]]; then
      # cmd合法,在zookeeper cluster上执行cmd
      for host in host{01..03}
      do
          echo 当前在${host}进行操作:
          ssh $host "zkServer.sh ${cmd}"; echo
      done
    else
      # cmd不合法,在终端进行提示
      echo "输入参数'$cmd'不合法,请从{start,stop,status}中选择命令"
    fi
    

    上述代码需要shell基础,如果读者没有shell基础,修改倒数第9行的host{01..03}亦可使用。

    保存文件后,需要对该文件添加可执行权限:

    chmod +x zkcmd.sh
    

    输入合适的参数即可批量启动、查看或关闭Zookeeper集群:

    使用sh zkcmd.sh start./zkcmd.sh start启动集群,成功的输出如下:

    当前在host01进行操作:
    ZooKeeper JMX enabled by default
    Using config: /home/sxZhang/bigdata/zookeeper/bin/../conf/zoo.cfg
    Starting zookeeper ... STARTED
    
    当前在host02进行操作:
    ZooKeeper JMX enabled by default
    Using config: /home/sxZhang/bigdata/zookeeper/bin/../conf/zoo.cfg
    Starting zookeeper ... STARTED
    
    当前在host03进行操作:
    ZooKeeper JMX enabled by default
    Using config: /home/sxZhang/bigdata/zookeeper/bin/../conf/zoo.cfg
    

    类似的,使用sh zkcmd.sh status./zkcmd.sh status查看集群状态,执行成功的输出如下:

    当前在host01进行操作:
    ZooKeeper JMX enabled by default
    Using config: /home/sxZhang/bigdata/zookeeper/bin/../conf/zoo.cfg
    Client port found: 2181. Client address: localhost. Client SSL: false.
    Mode: follower
    
    当前在host02进行操作:
    ZooKeeper JMX enabled by default
    Using config: /home/sxZhang/bigdata/zookeeper/bin/../conf/zoo.cfg
    Client port found: 2181. Client address: localhost. Client SSL: false.
    Mode: leader
    
    当前在host03进行操作:
    ZooKeeper JMX enabled by default
    Using config: /home/sxZhang/bigdata/zookeeper/bin/../conf/zoo.cfg
    Client port found: 2181. Client address: localhost. Client SSL: false.
    Mode: follower
    

    使用sh zkcmd.sh stop./zkcmd.sh stop停止ZK集群的运行。

    当前在host01进行操作:
    ZooKeeper JMX enabled by default
    Using config: /home/sxZhang/bigdata/zookeeper/bin/../conf/zoo.cfg
    Stopping zookeeper ... STOPPED
    
    当前在host02进行操作:
    ZooKeeper JMX enabled by default
    Using config: /home/sxZhang/bigdata/zookeeper/bin/../conf/zoo.cfg
    Stopping zookeeper ... STOPPED
    
    当前在host03进行操作:
    ZooKeeper JMX enabled by default
    Using config: /home/sxZhang/bigdata/zookeeper/bin/../conf/zoo.cfg
    Stopping zookeeper ... STOPPED
    

    如果想在任何路径都可以执行zkcmd.sh [start/stop/status],可以将zkcmd.sh拷贝到各个节点的$ZOOKEEPER_HOME/bin下。
    至此,拥有3个节点分布式zookeeper集群搭建成功。文章来源地址https://www.toymoban.com/news/detail-796097.html

到了这里,关于CentOS7安装Zookeeper分布式集群的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Hadoop集群搭建记录 | 云计算[CentOS7] | 伪分布式集群 Master运行WordCount

    本系列文章索引以及一些默认好的条件在 传送门 首先需要明确eclipse安装目录,然后将hadoop-eclipse-plugin_版本号.jar插件放在安装目录的dropins下 关于插件,可以通过博主上传到csdn的免费资源获取,链接 具体版本可以自己选择: 在eclipse界面中依次选择:Window→show view→other→

    2023年04月09日
    浏览(56)
  • CentOS7安装Flink1.17伪分布式

    拥有1台CentOS7 CentOS7安装好jdk,官方文档要求java 11,使用java 8也可以。可参考 CentOS7安装jdk8 下载安装包 ​ 创建软链接 添加如下环境变量 让环境变量立即生效 进入flink配置目录,查看flink的配置文件 配置flink-conf.yaml 找到如下配置项,并按照如下修改,其中node1为机器主机名

    2024年04月14日
    浏览(26)
  • Linux从零搭建Hadoop集群(CentOS7+hadoop 3.2.0+JDK1.8+Mapreduce完全分布式集群案例)

    和相关配置版本 :Linux CentOS Hadoop Java 版本: CentOS7 Hadoop3.2.0 JDK1.8 虚拟机参数信息内存3.2G、处理器2x2、内存50G ISO:CentOS-7-x86_64-DVD-2009.iso 基本主从思路: 先把基础的设置(SSH、JDK、Hadooop、环境变量、Hadoop和MapReduce配置信息)在一台虚拟机(master)上配好,通过

    2024年02月05日
    浏览(56)
  • Linux-一篇文章,速通Hadoop集群之伪分布式,完全分布式,高可用搭建(附zookeeper,jdk介绍与安装)。

    文章较长,附目录,此次安装是在VM虚拟环境下进行。文章第一节主要是介绍Hadoop与Hadoop生态圈并了解Hadoop三种集群的区别,第二节和大家一起下载,配置Linux三种集群以及大数据相关所需的jdk,zookeeper,只需安装配置的朋友可以直接跳到文章第二节。同时,希望我的文章能帮

    2024年03月19日
    浏览(37)
  • 大数据-安装 Hadoop3.1.3 详细教程-伪分布式配置(Centos7)

    **相关资源:**https://musetransfer.com/s/q43oznf6f(有效期至2023年3月16日)|【Muse】你有一份文件待查收,请点击链接获取文件 1.检查是否安装ssh (CentOS 7 即使是最小化安装也已附带openssh 可跳过本步骤) 若已安装进行下一步骤 若未安装 请自行百度 本教程不做过多讲解 2.配置ss

    2023年04月08日
    浏览(31)
  • 分布式应用:Zookeeper 集群与kafka 集群部署

    目录 一、理论 1.Zookeeper   2.部署 Zookeeper 集群 3.消息队列  4.Kafka 5.部署 kafka 集群 6.Filebeat+Kafka+ELK 二、实验 1.Zookeeper 集群部署 2.kafka集群部署 3.Filebeat+Kafka+ELK 三、问题          1.解压文件异常 2.kafka集群建立失败 3.启动 filebeat报错 4.VIM报错 5. kibana无法匹配 四、总结

    2024年02月14日
    浏览(40)
  • ZooKeeper+HBase分布式集群环境搭建

    安装版本:hadoop-2.10.1、zookeeper-3.4.12、hbase-2.3.1 一、zookeeper 集群搭建与配置 1. 下载zookeeper安装包 2. 解压移动zookeeper 3. 修改配置文件(创建文件夹) 4. 进入conf/ 5. 修改zoo.cfg文件 6. 进入/usr/local/zookeeper-3.4.12/zkdatas/这个路径下创建一个文件,文件名为myid ,文件内容为1 7. 拷贝到

    2024年02月08日
    浏览(34)
  • Zookeeper 伪分布式集群搭建详细步骤

    在同一台服务器上,部署一个 3 个 ZooKeeper 节点组成的集群,这样的集群叫伪分布式集 群,而如果集群中的 3 个节点分别部署在 3 个服务器上,那么这种集群就叫真正的分布式 集群。 这里,记录一下搭建一个 3 节点的伪分布式集群的过程,真正的分布式集群的搭建过程和 伪

    2024年02月08日
    浏览(34)
  • 第四节 zookeeper集群与分布式锁

    目录 1. Zookeeper集群操作 1.1 客户端操作zk集群 1.2 模拟集群异常操作 1.3 curate客户端连接zookeeper集群 2. Zookeeper实战案例 2.1 创建项目引入依赖 2.2 获取zk客户端对象 2.3 常用API 2.4 客户端向服务端写入数据流程 2.5 服务器动态上下线、客户端动态监听 2.6 测试 3.Zookeeper分布式锁 3.

    2024年02月20日
    浏览(40)
  • 分布式集群框架——有关zookeeper的面试考点

          当涉及到大规模分布式系统的协调和管理时,Zookeeper是一个非常重要的工具。 1. 分布式协调服务:Zookeeper是一个分布式协调服务,它提供了一个高可用和高性能的环境,用于协调和同步分布式系统中的各个节点。它通过提供共享的命名空间和一致性的数据模型来简化开

    2024年02月11日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包