Kafka クラスターによって開始されたシェル スクリプトが失敗する

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 クラスターはシェル スクリプトを通じて通常どおり起動できます。

おすすめ

転載: blog.csdn.net/weixin_43520450/article/details/129468345