部署前准备
1.准备三台虚拟机,配置好固定ip
2.下载zookeeper:zookeeper国内下载地址:
apache-zookeeper安装包下载_开源镜像站-阿里云 (aliyun.com)
下载的时候选择带有bin的下载包没有带bin的是没有编译的我们直接选择编译好的包进行安装)
下载命令:
wget https://mirrors.aliyun.com/apache/zookeeper/zookeeper-3.7.2/apache-zookeeper-3.7.2-bin.tar.gz
3.关闭防火墙:
暂时关闭:
systemctl stop firewalld
永久关闭:
systemctl disable firewalld --now
关闭之后查看防火墙状态:
systemctl status firewalld
4.关闭seLinux防火墙
vi /etc/sysconfig/selinux
修改SELINUX=disabled
5.修改hosts文件:添加集群中所以节点的ip和主机名
将我们的三台机器的ip和对应的主机名添加到hosts文件中
开始部署:(下列步骤全部在node01上进行)
1.将下载的包上进行解压,创建目录和文件:
根据个人习惯选择解压之后的路径,我解压到/usr/local/下,解压之后进入解压后的目录:
这是解压后的目录结构
解压后为了方便将目录名重命名为zookeeper-3.7.2
然后进入解压后的目录创建一个数据目录zkdata(这个后面修改配置文件的时候需要这个路径)
然后进入这个zkdata目录再创建一个myid文件:
vim myid
然后编辑内容为:
就是很简单的一个编号1,是这个节点在整个集群中的唯一标识
2.修改配置文件:
2.1安装完成之后添加环境变量:
编辑/etc/profile文件:
vim /etc/profile
添加下列行:
export ZK_HOME=//usr/local/zookeeper-3.7.2
export PATH=$PATH:$ZK_HOME/bin
编辑完成之后保存退出然后:
source /etc/profile
2.2修改/conf/zoo_sample.cfg配置文件:
将现有的zoo_sample.cfg复制一份命名为zoo.cfg:
cp zoo_sample.cfg zoo.cfg
然后对zoo.cfg的内容进行编辑:
vim zoo.cfg
将上述配置文件中的额dataDir修i改为我们在步骤1中创建的数据目录(创建的zkdata目录的路径):
并添加所有节点的相关信息:
然后针对其他的节点,重先上述步骤即可,只需要将myid文件中的内容修改即可
全部完成之后,集群搭建完成:
3.集群测试:
进入到bin目录下,启动zookeeper
启动zookeeper:
./zkServer.sh start
快捷启动脚本:
#!/bin/bash
case $1 in
"start")
for i in node01 node02 node03
do
echo "****************** $i *********************"
ssh $i "source /etc/profile && /usr/local/zookeeper-3.7.2/bin/zkServer.sh start"
done
;;
"stop")
for i in node01 node02 node03
do
echo "****************** $i *********************"
ssh $i "/usr/local/zookeeper-3.7.2/bin/zkServer.sh stop"
done
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
;;
esac
效果演示:
使用jps可以查看当前进行的守护进程:
上面QuorumPeerMain就是zookeeper的守护进程
三台节点全部启动之后再分别查看状态,因为集群所有节点起来之后要进行master选举,还没有全部启动可能会看到standalone的状态
查看启动状态:
./zkServer.sh status
正常启动的话可以看到两台节点状态为follow,一台为leader (如下图)
关闭zookeeper:
./zkServer.sh stop
4.报错解决:
4.1 Error: Could not find or load main class org.apache.zookeeper.server.quorum.QuorumPeerMain
对于这样的报错是没有安装带bin的包,你下载安装的是没有进行编译的包缺少很多东西是不能直接使用的,解决方法就是下载名字带bin的包
4.2 端口被占用或者地址正在使用:
对于centos7.6的系统,可以通过一下步骤释放端口进行解决:
ss -tlnp | grep 你想要释放的端口号
以释放2181端口为例:
可以看到pid进程号:
然后杀死该进程:
kill -9 pid
然后使用命令产看是否释放成功(下列命令显示正在使用的端口号信息):
ss -ntl
成功释放端口后再重新启动zookeeper
4.3 启动之后查看status显示为standalone
这个基本上是配置文件/conf/zoo.cfg的问题,检查这个配置文件的格式,每行不要顶格,server.1那不要大写等
4.4 出现后台进程“杀不死”的情况
当需要杀死进程重新执行启动命令时,杀死zookeeper的后台守护进程之后,等一会发现jps执行后还是存在后台进程,这种可能是因为你以前安装过zookeeper,使用下列命令查看:
systemctl status zookeeper
可能会发现一个不知道哪冒出来的zookeeper正在运行,影响我后续重新安装的zookeeper的启动,我们将这个zookeeper停掉再去执行我们想要运行的指定版本的zookeeper发现就没有问题了.
版权归原作者 朴会长 所有, 如有侵权,请联系我们删除。