0


CentOS7安装Zookeeper分布式集群

CentOS7安装Zookeeper分布式集群

  1. 前言 ZooKeeper 是一个开源的分布式协调服务框架,主要用于分布式系统中的数据同步、配置管理、集群控制和命名服务等方面的处理。本文在3个系统为CentOS7的Linux节点上配置了Zookeeper分布式集群,安装配置的过程均在普通用户sxZhang的账户上完成,安装路径为~/bigdata,3个Linux节点的主机和IP的映射如下: 10.10.10.1 host01 10.10.10.2 host0210.10.10.3 host03在正式安装之前,我们需要进行免密登录的配置、JDK的安装和关闭防火墙,本文假设读者已经完成这些工作,之后直接安装Zookeeper。> 若未完成上述工作,可参考:> 免密登录参考博客:Linux 配置SSH免密登录详细步骤> CentOS7关闭防火墙参考博客:Centos7关闭防火墙详细教程
  2. 下载zookeeper安装包前往zookeeper的下载页面Index of /apache/zookeeper下载相关安装包。注意事项:1)zookeeper节点必须是奇数个,因为zookeeper选举的规则:leader选举,要求可用节点数量必须大于总节点数量/22)zookeeper 是使用 java 来运行的,所以需要依赖 JDK,所以安装 zookeeper 之前需要安装部署 JDK3) 注意关闭节点服务器的防火墙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 需要与读者自己的安装路径匹配exportZOOKEEPER_HOME=/home/sxZhang/bigdata/zookeeperexportPATH=$PATH:$ZOOKEEPER_HOME/bin编辑完成后,使用source ~/.bashrc或重新打开一个xshell会话终端更新环境变量,执行echo $ZOOKEEPER_HOM的结果为zookeeper的目标安装路径则正确。> Tips:如果想在系统环境下安装配置,则需要选择> > /opt> > 或> > /usr/local> > 等路径进行安装,且编辑文件为> > /etc/proflie> > 。
  5. 编辑Zookeeper的集群配置- 创建Zookeeper集群的数据存储目录及日志目录cd$ZOOKEEPER_HOMEmkdir datamkdir log- 生成zookeeper配置文件cd ./confcp 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# 客户端连接超时时间msmaxClientCnxns=600# 客户端连接端口,访问 zookeeper的端口clientPort=2181# 节点数据存储及日志目录,需要提前创建dataDir=/home/sxZhang/bigdata/zookeeper/datadataLogDir=/home/sxZhang/bigdata/zookeeper/logserver.1=10.10.10.1:2888:3888server.2=10.10.10.2:2888:3888server.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.以遍历的方式转发到另外两个节点forhostin{host02,host03}#需要修改主机列表为自己的主机doscp zookeeper.tar.gz $host:~/bigdata #修改为zk的安装路径,并保证路径存在done# 3..以遍历的方式在另外2个节点上解压压缩包,解压成功后删除压缩包forhostin{host02,host03}#需要修改主机列表为自己的主机doecho 正在${host}上解压ZK压缩包到目标位置: ssh$host"cd ~/bigdata; tar -zxvf ~/zookeeper.tar.gz; rm ~/zookeeper.tar.gz"echo 操作成功done
  7. 为每台机器配置Zookeeper的节点idforiin{1..3}#改成自己的id范围donode=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/bashcmd=$1# 判断是否提供了输入参数if[-z"$1"];thenecho"本脚本需要输入参数cmd"echo-e"cmd 在 {start, stop, status} 中选择:\n-start\t启动zk集群\n-stop\t关闭zk集群\n-status\t查看zk集群状态"exit1fi# 合法的命令集合 cmdlist=("start""stop""status")# 检查传入的命令是否合法 if[[" ${cmdlist[@]} "=~" ${cmd} "]];then# cmd合法,在zookeeper cluster上执行cmdforhostin host{01..03}doecho 当前在${host}进行操作: ssh$host"zkServer.sh ${cmd}";echodoneelse# 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 defaultUsing config: /home/sxZhang/bigdata/zookeeper/bin/../conf/zoo.cfgStarting zookeeper ... STARTED当前在host02进行操作:ZooKeeper JMX enabled by defaultUsing config: /home/sxZhang/bigdata/zookeeper/bin/../conf/zoo.cfgStarting zookeeper ... STARTED当前在host03进行操作:ZooKeeper JMX enabled by defaultUsing config: /home/sxZhang/bigdata/zookeeper/bin/../conf/zoo.cfg类似的,使用sh zkcmd.sh status./zkcmd.sh status查看集群状态,执行成功的输出如下:当前在host01进行操作:ZooKeeper JMX enabled by defaultUsing config: /home/sxZhang/bigdata/zookeeper/bin/../conf/zoo.cfgClient port found: 2181. Client address: localhost. Client SSL: false.Mode: follower当前在host02进行操作:ZooKeeper JMX enabled by defaultUsing config: /home/sxZhang/bigdata/zookeeper/bin/../conf/zoo.cfgClient port found: 2181. Client address: localhost. Client SSL: false.Mode: leader当前在host03进行操作:ZooKeeper JMX enabled by defaultUsing config: /home/sxZhang/bigdata/zookeeper/bin/../conf/zoo.cfgClient port found: 2181. Client address: localhost. Client SSL: false.Mode: follower使用sh zkcmd.sh stop./zkcmd.sh stop停止ZK集群的运行。当前在host01进行操作:ZooKeeper JMX enabled by defaultUsing config: /home/sxZhang/bigdata/zookeeper/bin/../conf/zoo.cfgStopping zookeeper ... STOPPED当前在host02进行操作:ZooKeeper JMX enabled by defaultUsing config: /home/sxZhang/bigdata/zookeeper/bin/../conf/zoo.cfgStopping zookeeper ... STOPPED当前在host03进行操作:ZooKeeper JMX enabled by defaultUsing config: /home/sxZhang/bigdata/zookeeper/bin/../conf/zoo.cfgStopping zookeeper ... STOPPED如果想在任何路径都可以执行zkcmd.sh [start/stop/status],可以将zkcmd.sh拷贝到各个节点的$ZOOKEEPER_HOME/bin下。 至此,拥有3个节点分布式zookeeper集群搭建成功。

本文转载自: https://blog.csdn.net/weixin_46031805/article/details/135017462
版权归原作者 Ahaxian 所有, 如有侵权,请联系我们删除。

“CentOS7安装Zookeeper分布式集群”的评论:

还没有评论