设为首页收藏本站language→→ 语言切换

鸿鹄论坛

 找回密码
 论坛注册

QQ登录

先注册再绑定QQ

查看: 1600|回复: 2
收起左侧

泰涨知识 | Shell脚本之一键启动和关闭Zookeeper脚本

[复制链接]
发表于 2023-2-22 11:09:14 | 显示全部楼层 |阅读模式
本帖最后由 泰克教育 于 2023-2-22 11:11 编辑


ZooKeeper是Apache软件基金会的一个软件项目,它为大型分布式计算提供开源的分布式配置服务、同步服务和命名注册。

ZooKeeper的架构通过冗余服务实现高可用性。Zookeeper的设计目标是将那些复杂且容易出错的分布式一致性服务封装起来,构成一个高效可靠的原语集,并以一系列简单易用的接口提供给用户使用。

一个典型的分布式数据一致性的解决方案,分布式应用程序可以基于它实现诸如数据发布订阅、负载均衡、命名服务、分布式协调通知、集群管理、Master选举、分布式锁和分布式队列等功能。

Zookeeper模型图如下:
112.png
ZooKeeper集群由一组Server节点组成,这一组Server节点中只存在一个Leader的节点,其他节点都为Follower。

启动时选举出leader。

ZooKeeper使用自定义的原子消息协议,保证了整个系统中的节点数据的一致性。

Leader节点在接收到数据变更请求后,先写磁盘再写内存。

所以Zookeeper集群在配置好之后,咱们在启动的时候需要每一个节点都去启动一次,咱们只有几个集群的情况下是可行的,但是集群一旦达到几百上千个,咱们还能单独的去启动Zookeeper集群吗?答案是肯定不可能的,所以这时就需要使用Shell命令一键启动Zookeeper集群了。

具体怎么设置一键启动Zookeeper集群呢,具体操作步骤如下:

设置一键启动Zookeeper 脚本
1、进入目录:cd /usr/local/zookeeper/zookeeper-3.4.6/bin/
2、编写一键启动配置文件:vim  zkStart-all.sh,添加shell脚本如下:

  1. for host in hadoop slave1 slave2 slave3
  2. do
  3.         ssh $host "source /etc/profile;nohup /usr/local/zookeeper/zookeeper-3.4.6/bin/zkServer.sh start "
  4.         echo "$host zk is running"
  5. done
复制代码
3、写好后保存,为脚本添加执行权限:chmod 777 zkStart-all.sh
4、进入目录(或任意目录):cd /usr/local/zookeeper/zookeeper-3.4.6/bin/
5、一键启动:./zkStart-all.sh或者sh zkStart-all.sh(任意目录启动用这个命令)
6、查看状态:jps
7、执行效果如下图:

113.png

设置一键停止Zookeeper 脚本
1、进入目录:cd /usr/local/zookeeper/zookeeper-3.4.6/bin/
2、编写一键启动配置文件:vim zkStop-all.sh,添加Shell脚本如下:

  1. for host in hadoop slave1 slave2 slave3
  2. do
  3.         ssh $host "source /etc/profile;/usr/local/zookeeper/zookeeper-3.4.6/bin/zkServer.sh stop"
  4.         echo "$host zk is stopping"
  5. done
复制代码

3、写好后保存,为脚本添加执行权限:chmod 777 zkStop.sh
4、进入目录(或任意目录):cd /usr/local/zookeeper/zookeeper-3.4.6/bin/
5、一键启动:./zkStop-all.sh 或者:sh zkStop-all.sh(任意目录关闭用这个命令)
6、查看状态:jps
7、执行效果如下图:

114.png

技能拓展

以上两个shell脚本在执行完成后需要查看节点状态,但是每台节点都需要查看则要输入三次jps命令,这个过程也比较麻烦,同时也比较耽误时间,那么我们是否可以用脚本完成jps命令查看节点状态的操作?答案也是肯定的,都可以使用Shell脚本完成节点状态的查看,但是由于jps命令是Java提供的,所以,咱们在编写脚本的时候,需要找到JDK的安装目录编写到脚本里面去,具体Shell脚本命令如下:

  1. #!/bin/bash
  2. echo '---------------------查看集群状态---------------'
  3. for i in hadoop slave1 slave2 slave3#----------------------------->这几个是主机名
  4. do
  5.         echo ${i} '的节点状态'
  6.         ssh ${i} /usr/local/java/jdk1.8.0_161/bin/jps
  7. done
复制代码
执行效果如下图:

115.png

发表于 2023-2-27 18:40:12 | 显示全部楼层
好好学习,天天向上!
沙发 2023-2-27 18:40:12 回复 收起回复
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 论坛注册

本版积分规则

QQ|Archiver|手机版|小黑屋|sitemap|鸿鹄论坛 ( 京ICP备14027439号 )  

GMT+8, 2025-1-23 00:01 , Processed in 0.056205 second(s), 11 queries , Redis On.  

  Powered by Discuz!

  © 2001-2025 HH010.COM

快速回复 返回顶部 返回列表