RaspberryPi 計算ノード達にファイルを配るスクリプト 【自分備忘録】

 2016-11-09
opi-clstでは多数の計算ノードを収容する予定なので、ファイルやディレクトリを一つ一つお世話できません。
なのでMASTERノードで準備したモノをズビシッと分配してくれるスクリプトを用意しました。
 

通常こういったクラスター構成の場合は、どこか一つのデータ領域をnfsやらで共有して、計算ノードでそれをマウントするという使い方が一般的です。
私もそれに倣おうかとも思いましたが、計算ノードをもぎ取ってスタンドアロンでも動作する状態を保ちたかったため、共有は取りやめました。
計算ノードはそれ一つでシステムが完結する様に、ファイルシステムをそれぞれで保有することにしたので、データを分配するスクリプトが必要になったというわけです。

といっても、予め作っておいたリストに従ってrsyncするだけなので、shellのプロンプト上でポチポチ入力してもいいんですけどね。。
今回は、MASTERノードの ~/skel_home 以下にデータを用意して、それを計算ノードのホームディレクトリに送り込むことにします。

#!/bin/zsh -f

NODE_LIST_ALL=(
clst01
clst02
clst03
clst04
clst05
clst06
clst07
clst08
clst09
clst10
clst11
clst12
clst13
clst14
# clst15
# clst16
# clst17
# clst18
# clst19
# clst20
# clst21
# clst22
# clst23
# clst24
# clst25
# clst26
# clst27
# clst28
)
RSYNC="/usr/bin/rsync"


NODE_NUM=0
NODE_LIST=()
NODE_LIST_OFFLINE=()
for IP in ${NODE_LIST_ALL}
do
ping -c 1 ${IP} > /dev/null 2>&1
if [ $? -ne 0 ]; then
echo "[SKIP] : ${IP} is offline."
NODE_LIST_OFFLINE=( $NODE_LIST_OFFLINE $IP )
continue;
fi
NODE_LIST=(
${NODE_LIST}
${IP}
)
done



for IP in ${NODE_LIST}
do
echo "[rsync ${IP}] start"
${RSYNC} -auv ~/skel_home/ pi@${IP}:~/
echo "[rsync ${IP}] end"
echo "-----------------------------------------------"
done


if [ "${NODE_LIST_OFFLINE}" != "" ];
then
echo "WARNING : detected offline nodes."
echo "${NODE_LIST_OFFLINE}"
fi


最初のforでノードがオンラインかどうか確認し、二つ目のforでrsyncを叩きます。最後に、オフラインのノードがあればそれを報告します。


とりあえずこれで動いています。
鍵を登録しておき、MASTERノードから計算ノードへはパスワード不要でsshできるようにしておくこと。
 
コメント












管理者にだけ表示を許可する
トラックバック
トラックバックURL:
http://wbbwbb.blog83.fc2.com/tb.php/256-b00de89f
≪ トップページへこのページの先頭へ  ≫