大数据教程(3.7):zookeeper集群自动化启动、关闭、重启脚本

    上一章节博主介绍了zookeeper的命令行客户端的基本使用、数据结构以及监听等等功能,本节博主将继续为你们分享zookeeper的启动、关闭、重启。在咱们如今的大型项目里面,除了zookeeper外,还有不少的中间件都是集群式部署工做的(如:kafka,storm等等)。若是咱们此时一台一台服务器的去启动相应的机器上安装的集群服务,那至关的耗时。那有没有一种简单的方式来实现一次操做就将整个集群启动呢?答案固然是能够的,咱们可经过编写shell脚原本远程执行集群上每一个节点对于的机器上的服务,从而实现整个集群的一键启动。java

    可能用到的命令:linux

关闭防火墙和selinux:

Redhat使用了SELinux来加强安全,关闭的办法为:
1. 永久有效
修改 /etc/selinux/config 文件中的 SELINUX="" 为 disabled ,而后重启。
2. 即时生效
setenforce 0

关闭防火墙的方法为:
1. 永久性生效
开启:chkconfig iptables on
关闭:chkconfig iptables off
2. 即时生效,重启后失效
开启:service iptables start
关闭:service iptables stop
须要说明的是对于 Linux 下的其它服务均可以用以上命令执行开启和关闭操做
 

补充:
a. 防火墙还须要关闭ipv6的防火墙:
chkconfig ip6tables off
而且能够经过以下命令查看状态:
chkconfig --list iptables
b. selinux状态能够经过如下命令查看:
sestatuss

(一)在列出脚本以前先介绍些基础知识:shell

(1)b1=2 定义的变量,只对本身所在的shell进程生效 
(2)export b=2 这个命令定义的变量只在当前这个进程和它的子进程中有效 
(3)source s1.sh 会将定义在脚本文件中的变量放在当前登陆的shell里面 
(4)ssh远程登陆集群,可执行命令操做远程主机

(二)zookeeper集群启动脚本配置全过程:安全

        (1)首先配置启动脚本所在机器对其它集群节点的免密登陆(此处的操做,博主在以前的文章已经介绍过,此处就不赘述了)bash

        (2)编写脚本zk_start_ssh.sh服务器

#/bin/bash
ZKSERVERS=(192.168.29.135 192.168.29.136 192.168.29.143)
echo ==========总共${#ZKSERVERS[@]}台服务器==========
for SERVER in ${ZKSERVERS[@]}
do
dat=`date '+%Y-%m-%d %H:%M:%S'`
echo  ========start zookeeper  $SERVER $dat ===========
ssh root@$SERVER "source /etc/profile;/opt/apps/zookeeper-3.4.13/bin/zkServer.sh start;exit;"
echo  ========start zookeeper  $SERVER success $dat===========
done
echo ==========自动化脚本任务执行完成==========
~

        (3)编写脚本zk_kill_ssh.sh数据结构

#/bin/bash
ZKSERVERS=(192.168.29.135 192.168.29.136 192.168.29.143)
echo ==========总共${#ZKSERVERS[@]}台服务器==========
for SERVER in ${ZKSERVERS[@]}
do
dat=`date '+%Y-%m-%d %H:%M:%S'`
echo  ========kill zookeeper  $SERVER $dat ===========
ssh root@$SERVER "ps -ef | grep 'zookeeper' | grep -v grep | awk '{print \$2}'| xargs kill;exit;"
echo  ========kill zookeeper  $SERVER success $dat===========
done
echo ==========自动化脚本任务执行完成==========

        (4)编写脚本zk_restart_delay_ssh.shapp

#/bin/bash
ZKSERVERS=(192.168.29.135 192.168.29.136 192.168.29.143)
interval_time=10s
if [ "$1" ]; then
   echo ===========成功设置延迟启动时间设置为:$1s===================
   interval_time=$1
else
   echo ===========默认设置延迟启动时间设置为:${interval_time}s===================
fi
i=1
echo ==========总共${#ZKSERVERS[@]}台服务器==========
for SERVER in ${ZKSERVERS[@]}
do
dat=`date '+%Y-%m-%d %H:%M:%S'`
echo  ========kill zookeeper  $SERVER $dat ===========
ssh root@$SERVER "ps -ef | grep 'zookeeper' | grep -v grep | awk '{print \$2}'| xargs kill;exit;"
echo  ========kill zookeeper  $SERVER success $dat===========
dat=`date '+%Y-%m-%d %H:%M:%S'`
echo  ========start zookeeper  $SERVER $dat ===========
ssh root@$SERVER "source /etc/profile;/opt/apps/zookeeper-3.4.13/bin/zkServer.sh start;exit;"
echo  ========start zookeeper  $SERVER success $dat===========
if [[ "$i" -lt ${#SERVERS[@]} ]]; then
     echo  ========sleep ${interval_time}=======
     sleep ${interval_time}
fi
let "i++"
done
echo ==========自动化脚本任务执行完成==========

 

(三)总结(远程登陆时执行zookeeper启动时,为什么souce /etc/profile)ssh

        a.终端登陆时,用户会默认执行一遍如下三个文件
            /etc/profile
            /root/bash_profle 用户主目录下
            /root/bashrc  用户主目录下命令行

        b.ssh登陆时,不会执行默认的source文件脚本

        c.jps 能够查看java进程     QuorumPeerMain为zookeeper进程

 

        最后寄语,以上是博主本次文章的所有内容,若是你们以为博主的文章还不错,请点赞;若是您对博主其它服务器技术或者博主本人感兴趣,请关注博主博客,而且欢迎随时跟博主沟通交流。

相关文章
相关标签/搜索