关于nimbus没有自动重启机制,如何保证系统挂掉后重启的问题。写了个集群免登陆的脚本,及集群ZK操作的脚本。免登陆后再执行zk操作脚本,我们就可以在一台机子上启动集群的ZK、停止ZK及查看ZK状态等等。
nimbus监控脚本,只需要后台让他执行就行了,他会自动检测nimbus是否挂掉,如果挂掉就会重启他,有点像nimbus守护进程类似的东西,顺便还给他写了monitor监控的log,方便查询。
1. sshFreeLogin.sh 该脚本用于ip之间免登陆设置,在storm集群中,往往很多时候只有一个操作界面,需要登录的其他节点进行操作,设置免登陆后,该操作会变的更简单。
sshFreeLogin.sh:
#!/bin/bash
#author: yanshilin
function Echo() {
parameter=$1
name=$2
if [ $1 -ne 1 ]; then
echo "Usage: $2 ip.list"
echo " please input ip.list for freelogin and password next"
exit 1
fi
}
function LocalSsh() {
remote=$1
echo "------------------------------------------------------------"
echo "Begin to set Local-Remote free login!"
ssh-keygen -t rsa -P ''
scp /root/.ssh/id_rsa.pub $1:/root/id_rsa.pub
ssh $1 'cat /root/id_rsa.pub >> /root/.ssh/authorized_keys'
ssh $1 'chmod 600 /root/.ssh/authorized_keys'
echo "Local-Remote free login set Ok!"
echo "------------------------------------------------------------"
}
if [ $# -eq 1 ]; then
num=`awk 'END{print NR}' $1`
echo 'Set free login ip.list:'
for ((i=1;i<=$num;i++)); do
ip=`cat $1 | sed -n ''$i'p'`
echo $ip
LocalSsh $ip
done
else
Echo $# $0
fi
2. optZk.sh 该脚本主要是ZK集群操作,配合免登陆设置,可以在一台机子上进行ZK集群的启动,停止及查看状态等操作。该脚本稍微改改就可以用于其它集群类型的操作。代码很简单,可以自己看看。
optZk.sh:
#!/bin/bash
#author: yanshilin
function Echo() {
parameter=$1
name=$2
if [ $parameter -ne 2 ]; then
echo "Usage: $name ip.list start/stop/status"
echo " please input ip.list opt"
exit 1
fi
}
function optZk() {
ip=$1
opt=$2
echo "------------------------------------------------------------"
echo "Begin to '$opt' '$ip' ZK:"
ssh $1 '/usr/local/zookeeper/bin/zkServer.sh '$opt''
echo "------------------------------------------------------------"
}
if [ $# -eq 2 ]; then
num=`awk 'END{print NR}' $1`
for ((i=1;i<=$num;i++)); do
ip=`cat $1 | sed -n ''$i'p'`
echo $ip
optZk $ip $2
done
else
Echo $# $0
fi
3. monitorNimbus.sh 该脚本用于nimbus的监控,只需后台执行该脚本,该脚本会自动监控nimbus的运行,当检测到挂掉以后,会自动重启,并且会把监控结果以log的形式保存下来。
MonitorNimbus.sh:
#!/bin/bash
#author: yanshilin
function Init() {
date=`date +%Y%m%d%H%M%S`
echo ''$date': Begin monitor nimbus.' > monitorNimbus.log
}
function MonitorNimbus() {
for ((;;)); do
num=`ps aux | grep nimbus | grep -v grep | wc -l`
if [ $num -eq 0 ]; then
date1=`date +%Y%m%d%H%M%S`
echo ''$date1': nimbus is down, and restarting!' >> monitorNimbus.log
storm nimbus&
fi
sleep 60
done
}
Init
MonitorNimbus
exit 1
nimbus监控脚本,只需要后台让他执行就行了,他会自动检测nimbus是否挂掉,如果挂掉就会重启他,有点像nimbus守护进程类似的东西,顺便还给他写了monitor监控的log,方便查询。
1. sshFreeLogin.sh 该脚本用于ip之间免登陆设置,在storm集群中,往往很多时候只有一个操作界面,需要登录的其他节点进行操作,设置免登陆后,该操作会变的更简单。
sshFreeLogin.sh:
#!/bin/bash
#author: yanshilin
function Echo() {
parameter=$1
name=$2
if [ $1 -ne 1 ]; then
echo "Usage: $2 ip.list"
echo " please input ip.list for freelogin and password next"
exit 1
fi
}
function LocalSsh() {
remote=$1
echo "------------------------------------------------------------"
echo "Begin to set Local-Remote free login!"
ssh-keygen -t rsa -P ''
scp /root/.ssh/id_rsa.pub $1:/root/id_rsa.pub
ssh $1 'cat /root/id_rsa.pub >> /root/.ssh/authorized_keys'
ssh $1 'chmod 600 /root/.ssh/authorized_keys'
echo "Local-Remote free login set Ok!"
echo "------------------------------------------------------------"
}
if [ $# -eq 1 ]; then
num=`awk 'END{print NR}' $1`
echo 'Set free login ip.list:'
for ((i=1;i<=$num;i++)); do
ip=`cat $1 | sed -n ''$i'p'`
echo $ip
LocalSsh $ip
done
else
Echo $# $0
fi
2. optZk.sh 该脚本主要是ZK集群操作,配合免登陆设置,可以在一台机子上进行ZK集群的启动,停止及查看状态等操作。该脚本稍微改改就可以用于其它集群类型的操作。代码很简单,可以自己看看。
optZk.sh:
#!/bin/bash
#author: yanshilin
function Echo() {
parameter=$1
name=$2
if [ $parameter -ne 2 ]; then
echo "Usage: $name ip.list start/stop/status"
echo " please input ip.list opt"
exit 1
fi
}
function optZk() {
ip=$1
opt=$2
echo "------------------------------------------------------------"
echo "Begin to '$opt' '$ip' ZK:"
ssh $1 '/usr/local/zookeeper/bin/zkServer.sh '$opt''
echo "------------------------------------------------------------"
}
if [ $# -eq 2 ]; then
num=`awk 'END{print NR}' $1`
for ((i=1;i<=$num;i++)); do
ip=`cat $1 | sed -n ''$i'p'`
echo $ip
optZk $ip $2
done
else
Echo $# $0
fi
3. monitorNimbus.sh 该脚本用于nimbus的监控,只需后台执行该脚本,该脚本会自动监控nimbus的运行,当检测到挂掉以后,会自动重启,并且会把监控结果以log的形式保存下来。
MonitorNimbus.sh:
#!/bin/bash
#author: yanshilin
function Init() {
date=`date +%Y%m%d%H%M%S`
echo ''$date': Begin monitor nimbus.' > monitorNimbus.log
}
function MonitorNimbus() {
for ((;;)); do
num=`ps aux | grep nimbus | grep -v grep | wc -l`
if [ $num -eq 0 ]; then
date1=`date +%Y%m%d%H%M%S`
echo ''$date1': nimbus is down, and restarting!' >> monitorNimbus.log
storm nimbus&
fi
sleep 60
done
}
Init
MonitorNimbus
exit 1