マスターホスト

Ippei Kishida

Last-modified:2018/03/29 22:54:15.

このステップではまず、マスターホスト自身でジョブを実行できるようにする。

当研究室の構成ではマスターホスト自身ではジョブを実行しない。 しかし、Grid Engine は複数台が関連するシステムなので、 上手く動かない場合にはどこで問題が生じているのかが分かりにくい。 構築作業中の状態を把握し易くするために、 ひとまずマスターホスト自身にジョブを投げるシステムを構築する。 この設定は後で修正する。

1 名前解決

マスターホストを Ir として、 nslookup Ir としたときの名前解決が ドメイン名も含めて逆引き、正引きが一致することを確認しておく。 Ir.atom なのか、 Ir.calc.atom なのかなど、 複数のネットワークに繋いだマシンだと問題になりうる。

Ir としたときに、Ir.calc.atom で 192.168.1.77 になれば良い。 名前解決のサーチドメインで calc.atom だけにして atom は含めない。

2 apt-get で install

apt-get install -y gridengine-master

Ir は実行ホストにしない予定なのでその意味では不要だが、 インストール途中のテストとしてあると分かり易いので入れておく。 (2回目のインストールのときなど、トラブルの可能性が低いと思うならなしでも良かろう。)

apt-get install -y gridengine-client

qconf を使うために必要。 管理ホストとしてのパッケージだと思われる。

3 qconf を実行できるか確認

qconf -sh

-sh は管理ホストのリストを表示するだけのオプション。 問題なければ、以下のように表示される。 Ir.calc.atom

Ir.atom ではいけない。 要注意。 うっかりやり逃して先に進むと、キューにつっこまれるけど実行できない状態になる。

3.1 Trouble: “localhost”

error: commlib error: access denied (client IP resolved to host name "localhost". This is not identical to clients host name "Ir")
ERROR: unable to contact qmaster using port 6444 on host "Ir"

「ping Ir」 で 127.0.1.1 に名前解決されるのがマズイ。 /etc/hosts の以下の行をコメントアウトしたら通った。

127.0.1.1  Ir

3.2 Trouble: denied: host “Ir.atom” is no admin host

といわれる場合。

error: denied: host "Ir.calc.atom" is neither submit nor admin host

ということもある。 Ir を名前解決するためにドメイン検索すると Ir.atom と見做されるが、 apt-get でインストールした管理ホストが Ir.calc.atom なのが問題。 /var/lib/gridengine/default/common/act_qmaster を編集して Ir.calc.atom にして、以下を実行すると通るようになる。

/etc/init.d/gridengine-master restart

あかん場合、もう一度名前解決や逆引きも確認してみる。 /etc/hosts で 127.0.1.1 が悪さしてることもある。

3.3 Trouble: error: sge_gethostbyname failed

ping を自分の名前に打ってみて、きちんと通るか確認。

3.4 Trouble: got select error (Connection refused)

error: commlib error: got select error (Connection refused)
ERROR: unable to send message to qmaster using port 6444 on host "Ir.calc.atom": got send error

上記のようなエラー。 マスターホストのデーモン (gridengine-master) が起動していないためと思われる。 以下を実行してみる。

/etc/init.d/gridengine-master start

起動しない場合、 /var/spool/gridengine/qmaster/messages を見てみると、以下な感じ。

12/10/2013 17:29:29|  main|Ir|W|local configuration Ir.calc.atom not defined - using     global configuration
12/10/2013 17:29:29|  main|Ir|E|global configuration not defined
12/10/2013 17:29:29|  main|Ir|C|setup failed

今回の場合、 apt-get でインストールするときに、 master hostname を入れ忘れていたのが原因だった。 やり直した。

4 ホストグループ は当面使用しない方針

ホストグループとは複数のホストをグルーピングして管理するための仕組みらしい。

たぶん、マシン構成が細かく分かれているときに便利なんじゃないかな。 たとえば CPU が2種類、メモリ量が2種類の組み合わせで 4種類の計算機があるときに、 CPU 高速グループで計算するキューとか、 大メモリ量グループで計算するキューとか。 当研究室の構成では計算機のシリーズごとに能力がほぼ決まっていて、 シリーズを越えた計算はほぼしないからホストグループは不要じゃないかな。 とりあえず特にホストグループを利用せずに設定してみる。 必要ならそのときにする。

5 キューの作成

qconf -aq Ir.q

上記コマンドを実行すると、編集画面が出る。

修正したり、確認したりするのに以下のコマンドが使える。

qconf -sql # 登録されているキューの一覧表示。
qconf -sq Ir.q # Ir.q の状態を表示。
qconf -mq Ir.q # Ir.q の状態を編集。

6 発行ホスト(submit host)

qconf -as Ir.atom
#=> Ir.atom added to submit host list
qconf -as Ir.calc.atom
#=> Ir.calc.atom added to submit host list

発行ホストの登録がないホストからだと、qsub しようとしても 以下のようにエラーを吐かれてキューにつっこめない。

Unable to run job: denied: host "Ir.calc.atom" is no submit host.
Exiting.

自分の hostname で引いたときに最初に見つかる FQDN でないとダメっぽく、 Ir.atom だけならダメで、 Ir.calc.atom が必要のようだ。

Re を追加するときは、

qconf -as Re.atom

7 実行ホスト (execution host) の登録

qconf -ae

を実行すると、編集画面が現れる。 とりあえず hostname だけ Ir に修正して抜ける。 already exist とでたので、 なしでもいけそう。

7.1 Trouble: Ge02.calc.atom is no exec host

先に qconf -mq Ge.q でキューに名前を登録してから、qconf -ae Ge02 しないといかんかった模様。

8 テスト

#! /bin/sh
#$ -S /bin/sh
/bin/hostname

な hostname.sh を作り、以下で実行してみる。

qsub hostname.sh

問題なければ、 数秒間は以下のように state が qw になるが、

job-ID  prior   name       user         state submit/start at     queue                          slots ja-task-ID
-----------------------------------------------------------------------------------------------------------------
      2 0.00000 hostname.s ippei        qw    12/10/2013 22:53:28                                    1

10秒程度で以下のように state が r になって、

job-ID  prior   name       user         state submit/start at     queue                          slots ja-task-ID
-----------------------------------------------------------------------------------------------------------------
      2 0.50000 hostname.s ippei        r     12/10/2013 22:53:34 Ir.q@Ir.calc.atom                  1

さらに数秒で qstat の表示から消える。

8.1 Trouble: いつまでたっても state が「qw」

job-ID  prior   name       user         state submit/start at     queue                          slots ja-task-ID
-----------------------------------------------------------------------------------------------------------------
    16 0.50000 hostname.s ippei        qw    12/09/2013 22:26:22

submit host や execution host の設定がうまくいってなかったことがあった。

9 復旧

gridengine のマスターホストの設定がしばしばふっとぶ。 設定がコマンドライン経由で、中途半端にエディタをかますので、 設定の再構築を非常にやりにくい。

上記のような前提の上で、 復旧の手間を減らしたい。

 apt-get --purge remove -y gridengine-client
 apt-get --purge remove -y gridengine-master
 apt-get --purge remove -y gridengine-common
 apt-get --purge remove -y gridengine-exec
 rm -rf `locate gridengine`
 apt-get install -y gridengine-master
 apt-get install -y gridengine-common

ここからインストールできるかんじっぽい。

Ga_series
Ge_series
Kr_series 4
Nb_series 2
Pd_series 4
Rb_series 2
Rh_series 2
Ru_series 4
Se_series
Sr_series
Tc_series

pe の slots は一律 100 でやってみた。

[2016-02-14]以降、 RAID で運用している。