1. 問題の説明
作成したkafkaクラスタ起動スクリプトを実行すると、kafkaクラスタサーバが起動しておらず、エラーログも報告されていないことがわかります
。
#! /bin/bash
case $1 in
"start"){
for i in bigdata111 bigdata112 bigdata113
do
echo " --------启动 $i Kafka-------"
ssh $i "/opt/module/kafka/bin/kafka-server-start.sh -daemon /opt/module/kafka/config/server.properties"
done
};;
"stop"){
for i in bigdata111 bigdata112 bigdata113
do
echo " --------停止 $i Kafka-------"
ssh $i "/opt/module/kafka/bin/kafka-server-stop.sh stop"
done
};;
esac
問題の原因:
ログインシェルは、xxx などのユーザー名を使用してログインすると、/etc/profile を自動的にロードします。
ssh 192.168.1.121 などの ssh を使用してログインする非ログイン シェルでは、/etc/profile は自動的にロードされませんが、~/.bashrc は自動的にロードされます。
2、解決策
1. まず、ssh [bigdata111 ip]「どの java」が応答するかをテストします。「見つかりません」と表示された場合は、設定する必要があります。
[root@bigdata111 bin]# ssh bigdata112 "which java"
which: no java in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin)
2. ~/.bashrc ファイルを構成する
[root@bigdata111 bin]# vim ~/.bashrc
以下の設定を内部に追加します
export JAVA_HOME=/opt/module/jdk1.8.0_212
export PATH=$PATH:$JAVA_HOME/bin
そして、.bashrc ファイルを他のノードに配布します
[root@bigdata111 bin]#scp ~/.bashrc root@bigdata112:/root/.bashrc
[root@bigdata111 bin]#scp ~/.bashrc root@bigdata113:/root/.bashrc
3. ssh [bigdata111 ip] "that java" のテストを続行し、成功後にスクリプトを再起動してプロセスが存在するかどうかを確認します。
[root@bigdata111 bin]# ssh bigdata111 "which java"
/opt/module/jdk1.8.0_212/bin/java
この時点で、kafka クラスターはシェル スクリプトを通じて通常どおり起動できます。