Linuxスクリプトクラスタ内の他のロールノードサービスを統合的に開始するスクリプト
7721 ワード
需要:サービスを開始するとき、各ノードが起動する必要がある場合があるので、面倒です.スクリプトの構成により、1つのノードで他のノードのサービスを開始するか、ロールノードでのサービスを同時に開始します.
各ノードに遭遇すると、同じサービスが開始されるため、学習中です.繰り返し操作は煩雑なので、効率を節約するために、操作を容易にするためのスクリプトを見つけました.ここでは簡単に話します.△シナリオは自分で書いたものではありません.ネットで探したリソースでもあります.ここでは考えの分析をします.アイデア:各ノードと対応するロールをファイルにホスト名に対応するように構成し、ファイルを読み取ることでサービスを取得するロールです.ここでは、各ノードのソフトウェアインストールディレクトリ、環境変数、ファイルとデータディレクトリが同じであることに注意する必要があります.
スクリプトの場所が変更されたときに相対的に位置が変わらないように、構成ファイル、読み出し構成のスクリプトファイルを同じディレクトリの下に置く必要があります.ここではtoolsディレクトリの下にファイルディレクトリを置きます.tools->deploy.conf//ホストとロールの対応関係->runRemoteCmd.sh//異なるロールサービスを起動するスクリプト->deploy.sh//異なるロールのノードにファイルを配布するスクリプト
ステップ1:ホストとロールに対応するファイルの構成:deploy.conf
上の構成は私の3つのノードのクラスタロール構成です.主にメインノードで実行するので、このような構成も自分のニーズに応じて異なる構成を行うことができます.
ステップ2:ファイル(クリップ)コピースクリプトdeploy.sh
3つのパラメータ、元のファイル(クリップ)、ターゲットファイル(クリップ)、渡されるロールノードが表示されます.(4番目はロールプロファイルで、渡さない場合はデフォルトの場所です.このプロファイルはスクリプトと同じディレクトリの下にあるため、相対的な配置を使用することもできます.ここでは絶対パスを直接使用します).
ステップ3:サービス起動スクリプトrunRemoteCmd.sh
上のスクリプトは、スクリプトを実行するパス+パラメータと、実行の開始ロールの2つのパラメータを渡す必要があります.
まとめ:これらのスクリプトも学習中に発見された使いやすいスクリプトなので、共有してみましょう.ここでは具体的な命令について詳しく説明しません.注意すべきは、ssh秘密免除通信起動サービスを使用しているため、ssh秘密免除を構成する必要がある.次に、各ロールのサービスは一緒に開始されるので、同じロールノードのファイルディレクトリは必ず同じであることを保証します.
各ノードに遭遇すると、同じサービスが開始されるため、学習中です.繰り返し操作は煩雑なので、効率を節約するために、操作を容易にするためのスクリプトを見つけました.ここでは簡単に話します.△シナリオは自分で書いたものではありません.ネットで探したリソースでもあります.ここでは考えの分析をします.アイデア:各ノードと対応するロールをファイルにホスト名に対応するように構成し、ファイルを読み取ることでサービスを取得するロールです.ここでは、各ノードのソフトウェアインストールディレクトリ、環境変数、ファイルとデータディレクトリが同じであることに注意する必要があります.
スクリプトの場所が変更されたときに相対的に位置が変わらないように、構成ファイル、読み出し構成のスクリプトファイルを同じディレクトリの下に置く必要があります.ここではtoolsディレクトリの下にファイルディレクトリを置きます.tools->deploy.conf//ホストとロールの対応関係->runRemoteCmd.sh//異なるロールサービスを起動するスクリプト->deploy.sh//異なるロールのノードにファイルを配布するスクリプト
ステップ1:ホストとロールに対応するファイルの構成:deploy.conf
txynebo1,all,namenode,zookeeper,resourcemanager,
txynebo2,all,slave,namenode,zookeeper,resourcemanager,
txynebo3,all,slave,datanode,zookeeper,
上の構成は私の3つのノードのクラスタロール構成です.主にメインノードで実行するので、このような構成も自分のニーズに応じて異なる構成を行うことができます.
ステップ2:ファイル(クリップ)コピースクリプトdeploy.sh
#!/bin/bash
#set -x
if [ $# -lt 3 ]
then
echo "Usage: ./deply.sh srcFile(or Dir) descFile(or Dir) MachineTag"
echo "Usage: ./deply.sh srcFile(or Dir) descFile(or Dir) MachineTag confFile"
exit
fi
src=$1
dest=$2
tag=$3
if [ 'a'$4'a' == 'aa' ]
then
confFile=/home/hadoop/tools/deploy.conf
else
confFile=$4
fi
if [ -f $confFile ]
then
if [ -f $src ]
then
for server in `cat $confFile|grep -v '^#'|grep ','$tag','|awk -F',' '{print $1}'`
do
scp $src $server":"${dest}
done
elif [ -d $src ]
then
for server in `cat $confFile|grep -v '^#'|grep ','$tag','|awk -F',' '{print $1}'`
do
scp -r $src $server":"${dest}
done
else
echo "Error: No source file exist"
fi
else
echo "Error: Please assign config file or run deploy.sh command with deploy.conf in same directory"
fi
3つのパラメータ、元のファイル(クリップ)、ターゲットファイル(クリップ)、渡されるロールノードが表示されます.(4番目はロールプロファイルで、渡さない場合はデフォルトの場所です.このプロファイルはスクリプトと同じディレクトリの下にあるため、相対的な配置を使用することもできます.ここでは絶対パスを直接使用します).
ステップ3:サービス起動スクリプトrunRemoteCmd.sh
#!/bin/bash
#set -x
if [ $# -lt 2 ]
then
echo "Usage: ./runRemoteCmd.sh Command MachineTag"
echo "Usage: ./runRemoteCmd.sh Command MachineTag confFile"
exit
fi
cmd=$1
tag=$2
if [ 'a'$3'a' == 'aa' ]
then
confFile=/home/hadoop/tools/deploy.conf
else
confFile=$3
fi
if [ -f $confFile ]
then
for server in `cat $confFile|grep -v '^#'|grep ','$tag','|awk -F',' '{print $1}'`
do
echo "*******************$server***************************"
ssh $server "source /etc/profile; $cmd"
done
else
echo "Error: Please assign config file or run deploy.sh command with deploy.conf in same directory"
fi
上のスクリプトは、スクリプトを実行するパス+パラメータと、実行の開始ロールの2つのパラメータを渡す必要があります.
/home/hadoop/tools/runRemoteCmd.sh "/home/hadoop/app/zookeeper/bin/zkServer.sh start" all
まとめ:これらのスクリプトも学習中に発見された使いやすいスクリプトなので、共有してみましょう.ここでは具体的な命令について詳しく説明しません.注意すべきは、ssh秘密免除通信起動サービスを使用しているため、ssh秘密免除を構成する必要がある.次に、各ロールのサービスは一緒に開始されるので、同じロールノードのファイルディレクトリは必ず同じであることを保証します.