先关闭kafka服务,以便于等会配置完成启动该服务,测试效果
我的kafka集群有三个节点,分别为:node1,node2,node3
(我的建议是三个节点都配,可以不用在意开机顺序,如果只配一个节点,那么那台机器要最后启动,不然的话,就会有些kakfa未启动)
在node1,node2,node3进行同样的操作:
进入到 /etc/rc.d/init.d目录下,创建一个 kafkaCluster 脚本
vi /etc/rc.d/init.d/kafkaCluster
(其中#chkconfig: 345 93 88 要注意启动级别和关闭级别,因为kafka是依赖zookeeper的,所以zookeeper要比kafka启动的早,关闭的晚)
配置zookeeper服务自启动:https://blog.csdn.net/qq_45016628/article/details/107143772
#! /bin/bash
#chkconfig: 345 93 88
#description: kafka cluster node1 node2 node3
#processname:kafka_cluster
# Kafka代理节点地址
hosts=(node1 node2 node3)
# 打印启动分布式脚本信息
mill=`date "+%N"`
tdate=`date "+%Y-%m-%d %H:%M:%S,${mill:0:3}"`
echo [$tdate] INFO [Kafka Cluster] begins to execute the $1 operation.
# 执行分布式开启命令
function start()
{
for i in ${hosts[@]}
do
smill=`date "+%N"`
stdate=`date "+%Y-%m-%d %H:%M:%S,${smill:0:3}"`
ssh root@$i "source /etc/profile;echo [$stdate] INFO [Kafka Broker $i] begins to execute the startup operation.;kafka-server-start.sh $KAFKA_HOME/config/server.properties>/dev/null" &
sleep 1
done
}
# 执行分布式关闭命令
function stop()
{
for i in ${hosts[@]}
do
smill=`date "+%N"`
stdate=`date "+%Y-%m-%d %H:%M:%S,${smill:0:3}"`
ssh root@$i "source /etc/profile;echo [$stdate] INFO [Kafka Broker $i] begins to execute the shutdown operation.;kafka-server-stop.sh>/dev/null;" &
sleep 1
done
}
# 查看Kafka代理节点状态
function status()
{
for i in ${hosts[@]}
do
smill=`date "+%N"`
stdate=`date "+%Y-%m-%d %H:%M:%S,${smill:0:3}"`
ssh root@$i "source /etc/profile;echo [$stdate] INFO [Kafka Broker $i] status message is :;jps | grep Kafka;" &
sleep 1
done
}
# 判断输入的Kafka命令参数是否有效
case "$1" in
start)
start
;;
stop)
stop
;;
status)
status
;;
*)
echo "Usage: $0 {start|stop|status}"
RETVAL=1
esac
保存,并修改执行权限
cd /etc/rc.d/init.d
chmod +x kafkaCluster
将 kafkaCluster 加入到 chkconfig 服务列表中:
chkconfig --add kafkaCluster
去查看一下:
chkconfig --list
以上就配置完成了
测试一下:service kafkaCluster start
即可完成启动
如有说的不好的地方,请多多指教O(∩_∩)O