CentOS7安装Zookeeper分布式集群
-
前言
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关闭防火墙详细教程 -
下载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
-
将下载的安装包使用xftp工具或
rz
命令上传到host01的~/bigdata/
后,解压安装# 1.解压到当前目录 tar -zxvf apache-zookeeper-3.8.3-bin.tar.gz # 2.重命名 mv apache-zookeeper-3.8.3-bin zookeeper
-
修改环境变量
编辑用户级环境变量的配置文件
~/.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
。 -
编辑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
特别需要注意的是
dataDir
、dataLogDir
和server.x
的配置,需要指定自己的Zookeeper安装路径和自己集群主机的IP。
-
-
将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
-
为每台机器配置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.cfg
中dataDir
所指定的具体路径下,创建一个名为myid
的文本文件,其内容为Zookeeper集群中节点的id,例如令host01、host02、host03对应的myid依次为1、2、3。 -
启动、查看和停止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集群的运行。文章来源:https://www.toymoban.com/news/detail-796097.html当前在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模板网!