安装kafka机群时,每个节点的broker.id不一样,如果一个个修改太麻烦,需要个好的方法,能够批量操作
1,先修改好kafka的server.properties,默认的broker.id=0不用修改
2,将修改好kafka的server.properties,同步到各节点上
3,运行下面脚本程序(注:运行该脚本的节点,能够免密码登录其他节点)
#!/bin/bash
# 各节点的hostname
nodes=(xnode1 xnode2 xnode3 xnode4)
echo " --------------- 启动 kafka ---------------"
for node in ${nodes[*]} ;do
nodeNum=`echo $node |tr -cd "[0-9]"`
sedcmd="ssh root@$node sed -i s/broker.id=[0-9]/broker.id=${nodeNum}/g $KAFKA_HOME/config/server.properties "
#第一次运行后,可注释掉下面一行
eval $sedcmd
echo "==== kafka node $node borker.id is"
ssh root@$node cat $KAFKA_HOME/config/server.properties | grep 'broker'
echo "start kafka $node"
cmd="ssh root@$node $KAFKA_HOME/bin/kafka-server-start.sh -daemon ${KAFKA_HOME}/config/server.properties "
eval $cmd
done
上面脚本会用hostname最后的数字编号,修改server.properties的broker.id,并启动kafka服务
xnode1 的broker.id=1
xnode2 的broker.id=2
xnode3 的broker.id=3
xnode4 的broker.id=4