前言
正常启动kafka需要先启动zk,要在几个文件夹下切换,属实比较麻烦,编写脚本可以节省时间
建立连接
修改主机名
vim /etc/hosts
免密互相登录
ssh-keygen -t rsa
ssh-copy-id 主机1
scp /root/.ssh/authorized_keys 主机2:/root/.ssh
编写zk脚本
SERVERS=("192.168.46.128" "192.168.46.129" "192.168.46.130")
ZK_HOME="/opt/software/zookeeper"
ZK_CONF="$ZK_HOME/conf/zoo.cfg"
for server in "${SERVERS[@]}"; do
echo "在 $server 上启动 ZooKeeper..."
ssh $server "$ZK_HOME/bin/zkServer.sh start $ZK_CONF"
done
报错:识别不了java
解决方案:
① 在ssh远程执行的正式命令之前加上source /etc/profile;
,即主动加载环境变量
② 同理在远程主机对应用户的~/.bashrc
文件末尾加入source /etc/profile
,或者加入$JAVA_HOME 即java环境
修改过后
SERVERS=("192.168.46.128" "192.168.46.129" "192.168.46.130")
ZK_HOME="/opt/software/zookeeper"
ZK_CONF="$ZK_HOME/conf/zoo.cfg"
for server in "${SERVERS[@]}"; do
echo "在 $server 上启动 ZooKeeper..."
ssh $server "source /etc/profile;$ZK_HOME/bin/zkServer.sh start $ZK_CONF"
done
编写kafka脚本
SERVERS=("192.168.46.128" "192.168.46.129" "192.168.46.130")
for server in "${SERVERS[@]}"; do
echo "在 $server 上启动Kafka..."
ssh $server "source /etc/profile;export JMX_PORT=9988;nohup ${KAFKA_HOME}/bin/kafka-server-start.sh ${KAFKA_HOME}/config/server.properties >/dev/nul* 2>&1 & "
done
总结
可以将主机名写在另一个文件上,这样方便管理。
我们就可以先启动zk脚本 在启动kafaka。