Zookeeper 3台机器集群安装

5 篇文章 0 订阅
3 篇文章 0 订阅

在 master、node1 和 node2 三个节点上都部署 Zookeeper。

1)解压安装
(1)在 master 解压 Zookeeper 安装包到/opt/module/目录下

[root@master software]# tar -zxvf apache-zookeeper-3.5.7-bin.tar.gz -C /opt/module/


(2)修改 apache-zookeeper-3.5.7-bin 名称为 zookeeper-3.5.7

[root@master module]# mv apache-zookeeper-3.5.7-bin/ zookeeper-3.5.7


3)配置服务器编号
(1)在/opt/module/zookeeper-3.5.7/这个目录下创建 zkData

[root@master zookeeper-3.5.7]# mkdir zkData


(2)在/opt/module/zookeeper-3.5.7/zkData 目录下创建一个 myid 的文件

[root@master zkData]# vi myid


在文件中添加与 server 对应的编号(注意:上下不要有空行,左右不要有空格)
2
注意:添加 myid 文件,一定要在 Linux 里面创建,在 notepad++里面很可能乱码
(3)拷贝配置好的 zookeeper 到其他机器上

[root@master module ]$ xsync zookeeper-3.5.7


并分别在 node1、node2 上修改 myid 文件中内容为 3、4
4)配置zoo.cfg文件
(1)重命名/opt/module/zookeeper-3.5.7/conf 这个目录下的 zoo_sample.cfg 为 zoo.cfg

[root@master conf]$ mv zoo_sample.cfg zoo.cfg


(2)打开 zoo.cfg 文件

[root@master conf]# vim zoo.cfg


#修改数据存储路径配置
dataDir=/opt/module/zookeeper-3.5.7/zkData
#增加如下配置

#######################cluster##########################
server.2=master:2888:3888
server.3=node1:2888:3888
server.4=node2:2888:3888

注:需要修改bin下的   zkEnv.sh 添加java环境变量

 

我的文件如下:

[root@master conf]# cat zoo.cfg
# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial 
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between 
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just 
# example sakes.
#dataDir=/tmp/zookeeper
dataDir=/opt/module/zookeeper-3.5.7/zkData
JAVA_HOME=/opt/jdk/jdk1.8.0_202

# the port at which the clients will connect
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




#######################cluster##########################
server.2=master:2888:3888
server.3=node1:2888:3888
server.4=node2:2888:3888








[root@master conf]# 

5)集群操作
(1)分别启动 Zookeeper
 

[root@master zookeeper-3.5.7]# bin/zkServer.sh start

[root@node1zookeeper-3.5.7]# bin/zkServer.sh start
[root@node2 zookeeper-3.5.7]# bin/zkServer.sh start

(2)查看状态
 

[root@master zookeeper-3.5.7]# bin/zkServer.sh status
JMX enabled by default
Using config: /opt/module/zookeeper-3.5.7/bin/../conf/zoo.cfg
Mode: follower
[root@node1 zookeeper-3.5.7]# bin/zkServer.sh status
JMX enabled by default
Using config: /opt/module/zookeeper-3.5.7/bin/../conf/zoo.cfg
Mode: leader
[root@node2 zookeeper-3.4.5]# bin/zkServer.sh status
JMX enabled by default
Using config: /opt/module/zookeeper-3.5.7/bin/../conf/zoo.cfg
Mode: follower

xsync脚本如下:

可参考上篇文章:Linux xsync命令脚本_hunheidaode的博客-CSDN博客

#!/bin/bash
#1. 判断参数个数
if [ $# -lt 1 ]
then
 echo Not Enough Arguement!
 exit;
fi
 
#2. 遍历集群所有机器
for host in master node1 node2
do
 echo ==================== $host ====================
 #3. 遍历所有目录,挨个发送
 for file in $@
 do
 #4. 判断文件是否存在
 if [ -e $file ]
 then
 #5. 获取父目录
 pdir=$(cd -P $(dirname $file); pwd)
 #6. 获取当前文件的名称
 fname=$(basename $file)
 ssh $host "mkdir -p $pdir"
 rsync -av $pdir/$fname $host:$pdir
 else
 echo $file does not exists!
 fi
 done
done

 zk.sh 脚本如下:

可参考上篇文章:Linux xsync命令脚本_hunheidaode的博客-CSDN博客

#!/bin/bash
case $1 in
"start"){
for i in master node1 node2
do
 echo ---------- zookeeper $i 启动 ------------
ssh $i "/opt/module/zookeeper-3.5.7/bin/zkServer.sh  start"
done
};;
"stop"){
for i in master node1 node2
do
 echo ---------- zookeeper $i 停止 ------------ 
ssh $i "/opt/module/zookeeper-3.5.7/bin/zkServer.sh stop"
done
};;
"status"){
for i in master node1 node2
do
 echo ---------- zookeeper $i 状态 ------------ 
ssh $i "/opt/module/zookeeper-3.5.7/bin/zkServer.sh status"
done
};;
esac

附:

jpsall.sh 脚本:

#!/bin/bash
 
# 执行jps命令查询每台服务器上的节点状态
echo ======================集群节点状态====================
 
for i in master node1 node2
do
        echo ====================== $i ====================
        ssh $i "/opt/jdk/jdk1.8.0_202/bin/jps"
done
echo ======================执行完毕====================

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值