目录
近期,在玩kafka,kafka是依赖于zookeeper的,每次都要去各个节点上启动zookeeper,于是就尝试写了一个shell脚本来实现zookeeper和kafka的群起和群关
群起,关zookeeper脚本:
#!/bin/bash
case $1 in
"start"){
for i in hadoop104 hadoop105 hadoop106
do
echo "----------启动$i zk----------"
ssh $i "/opt/module/zookeeper-3.4.10/bin/zkServer.sh start"
done
};;
"stop"){
for i in hadoop104 hadoop105 hadoop106
do
echo "----------关闭$i zk----------"
ssh $i "/opt/module/zookeeper-3.4.10/bin/zkServer.sh stop"
done
};;
"status"){
for i in hadoop104 hadoop105 hadoop106
do
echo "----------查看$i zk----------"
ssh $i "/opt/module/zookeeper-3.4.10/bin/zkServer.sh status"
done
};;
esac
群起,关kafka脚本:
#! /bin/bash
case $1 in
"start"){
for i in hadoop104 hadoop105 hadoop106
do
echo " --------启动 $i Kafka-------"
# 用于KafkaManager监控
ssh $i "export JMX_PORT=9988 && /opt/module/kafka_2.11-0.11.0.2/bin/kafka-server-start.sh -daemon /opt/module/kafka_2.11-0.11.0.2/config/server.properties "
done
};;
"stop"){
for i in hadoop104 hadoop105 hadoop106
do
echo " --------停止 $i Kafka-------"
ssh $i "/opt/module/kafka_2.11-0.11.0.2/bin/kafka-server-stop.sh stop"
done
};;
esac
# 说明:启动Kafka时要先开启JMX端口,是用于后续KafkaManager监控
以上的两个脚本并不会起作用,因为没有读取到环境变量,有两种解决方案,第一种是手动source(在ssh之后)一下/ect/profile 文件,第二种方案就是配置该环境变量到当前用户的环境变量目录下,~/.bashrc 文件中
# 第一种source的方式
ssh isea@hadoop$i 'source /etc/profile && /opt/module/kafka/bin/kafka-server-start.sh -daemon /opt/module/kafka/config/server.properties'
[isea@hadoop104 zkData]$ cat /etc/profile >> ~/.bashrc
[isea@hadoop105 zkData]$ cat /etc/profile >> ~/.bashrc
[isea@hadoop106 zkData]$ cat /etc/profile >> ~/.bashrc
群发命令的脚本:
有时候,我们需要在各个客户端都执行同一个命令,比如在各个客户端查询,jps,基于此,我做了自己的实现,
#! /bin/bash
for i in hadoop104 hadoop105 hadoop106
do
echo --------- $i ----------
ssh $i "$*"
done

被折叠的 条评论
为什么被折叠?



