Scientific Linux 6.3またはCentOS7インストールログ4:Condorのインストール
ジョブ管理システムのCondorをインストール。
面倒なので全部rootで作業。
「condorのコンパイル」までは共用ディスクの上でやっても良い(ただしクラスタのシステムが全部同じ場合)。
user condorを作成.ログインを禁止するため、invalidなシェルを指定。
$ su # groupadd -g 1000 condor # useradd -u 1000 -g condor condor # usermod -s /bin/false condor
足りないファイルをとってくる
必要なファイルは以下を参照。
https://htcondor-wiki.cs.wisc.edu/index.cgi/wiki?p=BuildingHtcondorOnUnix
# yum install uuid-devel # yum install uuid-c++-devel # yum install pcre-devel # yum install libuuid-devel # yum install libtool-ltdl-devel # yum install glibc-static # yum install expat-devel.x86_64
cmakeは2.8以上でないと駄目らしいので、別にとってきてインストール。CentOS7は2.8以上が最初から入っているので必要ない。
# wget http://koji-hub.batlab.org/mnt/koji/packages/cmake/2.8.4/2.osg.el6/x86_64/cmake-2.8.4-2.osg.el6.x86_64.rpm # rpm -ivh cmake-2.8.4-2.osg.el6.x86_64.rpm
condorのインストール
最近はyumでインストールできる。
https://research.cs.wisc.edu/htcondor/instructions/
# yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm # yum install -y https://research.cs.wisc.edu/htcondor/repo/8.8/el7/release/htcondor-release-8.8-1.el7.noarch.rpm # yum install -y condor
yumでインストールすると、/usrの下にインストールされる。設定ファイルなどは/etc/condorの下にかたまるので、そこで編集する。
設定ファイルの編集
設定ファイルは、デフォルトでは/etc/condorの下に置かれる。
以下を/etc/condor/condor_config に記入。
CONDORデーモンの起動
# systemctl start condor # systemctl enable condor
2行目は、再起動後に自動的にCONDORデーモンが走るようにする設定。
走ったかどうかは以下のコマンドで確認。
# ps aux | grep condor condor 10885 0.4 0.0 70356 6520 ? Ss 19:28 0:00 /usr/sbin/condor_master -f root 10926 1.7 0.0 26480 4760 ? S 19:28 0:00 condor_procd -A /var/run/condor/procd_pipe -L /var/log/condor/ProcLog -R 1000000 -S 60 -C 1000 condor 10927 0.4 0.0 45636 5528 ? Ss 19:28 0:00 condor_shared_port -f condor 10928 0.7 0.0 46440 6108 ? Ss 19:28 0:00 condor_collector -f condor 10931 1.0 0.0 46140 5924 ? Ss 19:28 0:00 condor_negotiator -f condor 10932 1.0 0.0 47524 6932 ? Ss 19:28 0:00 condor_schedd -f root 10981 0.0 0.0 112816 976 pts/1 R+ 19:28 0:00 grep --color=auto condor
こんな感じでたくさん出てくればよい。
yumが使えなかった過去のインストールログ
standard makeはとことんコケたので、もうuwセットでインストールすることにする。
# cd <somewhere> # tar -zxvf condor_src-8.1.4-all-all.tar.gz # cd condor-8.1.4 # ./configure_uw # make install
これで、condor-8.1.4/release_dirができる。
condorのインストール
condorのインストールは、release_dirの下にバイナリをどこか別の場所にコピーする作業になるが、スクリプトを動かすには、あらかじめcondor_configファイルとcondor_config.localファイルが用意されている必要があるらしい。
というわけで、この2つを手動で作成。
ここでは、condor_configファイルは/home/condor/の下(defaultで探してくれるパスのうちの一つ。CONDOR_CONFIG環境変数で指定する場合はどこに置いてもよい)、condor_config.localファイルは/opt/condor/localの下に置くものとする。
※/opt/condor/localの下には一時ファイルが置かれるので、/optがネットワーク上にある場合はここにlocalディレクトリを置くのはよくない。
できれば、別パーティション上にある/varや/scratchのような場所がベストだが、うちの環境では/varなどに別パーティションを切っていないので、とりあえずoptの下に固めることにした。
更に、インストール先は/opt/condor/8.1.4とし、コレを/opt/condor/proにリンクする。
# mkdir -p /opt/condor/8.1.4 # pushd /opt/condor # chmod 777 8.1.4 # ln -s 8.1.4 pro # popd # cp condor-8.1.4/release_dir/etc/examples/condor_config /home/condor/ # vi /home/condor/condor_config # 以下のパラメタを書き換える # your.condor.host.jpはセントラルマネージャーになるマシンのアドレスを入力 CONDOR_HOST = your.condor.host.jp RELEASE_DIR = /opt/condor/pro LOCAL_DIR = /opt/condor/local ALLOW_WRITE = local01.my.domain, local02.my.domain, local03.my.domain
ALLOW_WRITEにはクラスタに参加する全てのマシンのアドレスが書かれている必要がある。
これを忘れるとcondor_status等のコマンドで全てのノードが見えない。
いちいち書くのが面倒なら*.my.domainとすれば同じドメインの全てのマシンに許可を出せる。
次に、ローカルマシン設定ファイルを定義する。
マスターになるマシンはcondor_config.local.central.managerを、それ以外はcondor_config.localをコピーする。
# mkdir -p /opt/condor/local # cp condor-8.1.4/release_dir/etc/examples/condor_config.local.central.manager /opt/condor/local/condor_config.local または # cp condor-8.1.4/release_dir/etc/examples/condor_config.local /opt/condor/local/ 以下のパラメタを変更(または追加) YOUTPOOLは自分のマシンだけで運用する場合は定義しなくてよい # vi /opt/condor/local/condor_config.local CONDOR_HOST = your.condor.host.jp COLLECTOR_NAME = YOURPOOL 以下のコマンドをcondor-8.1.4/release_dirの下でtype #./condor_install --install=. --prefix=/opt/condor/pro --local-dir=/opt/condor/local --type=manager,submit,execute
type=mamager,submit,executeはセントラルマネージャやサブミットマシンの設定。計算するだけでjobのマネージメントをやらないマシンはexecuteだけで良い。
condorのデーモンを走らせる
# export PATH=/opt/condor/pro/bin:/opt/condor/pro/sbin:$PATH # condor_init # condor_master # デーモンが走っているか確かめる # ps aux | grep condor
condor_master, condor_procd, condor_collector, condor_negotiator, condor_startd, condor_scheddなどが動いていればOK.
ここまでくれば、rootを抜けてもOK
# exit $ export PATH=/opt/condor/pro/bin:$PATH $ condor_status
複数台マシンへのインストール
まず、セントラルマネージャとなるマシンにcondorをインストールし、condor_masterを走らせておく。
次に、セントラルマネージャにぶら下がるマシンにcondorをインストールし、condor_masterを走らせる。
(逆の順番では駄目、と昔きいたが、今はどうか知らない)
この状態でcondor_statusを打つと、以下のようなエラーが出る。
Error: communication error CEDAR:6001:Failed to connect to <XXX.XX.XXX.XXX:9618>
要するに、セントラルマネージャのポート9618が開いていない、という話。
というわけで、CONDORが使用するポートをあける。
CONDORはtcpとupdの9618と、1024番より後ろのポートを自動的にアサインして使う。この設定は変えることも出来るらしいが、面倒なのでクラスター内部の通信は全許可にした(勿論全てのマシンにそれなりのファイヤーウォールをたてておく必要があるけど)。
以下の例はこちらの記事の設定に付け足す場合。
my01 = 'xxx.xx.xxx.xx' my02 = 'xxx.xx.xxx.xx' /sbin/iptables -A INPUT -s $my01 -j ACCEPT /sbin/iptables -A OUTPUT -d $my01 -j ACCEPT /sbin/iptables -A INPUT -s $my02 -j ACCEPT /sbin/iptables -A OUTPUT -d $my02 -j ACCEPT
ちなみに、my01、などとおいている変数名がホスト名と重なっていたりすると、まともに動かないので注意。
その他
condor_masterを一度実行すると、condor_offを実行してもデーモンしかストップできない。
面倒なので、condor関係のプログラムを全部殺すスクリプトを作る。
#!/bin/sh for i in `ps aux | grep condor | grep -v 'grep condor' | awk '{print $2}'`; do eval kill -9 $i; done
ただし、condor_masterが殺せないのには理由があるわけで、ひとたびジョブを投入した後は、このコマンドを実行すると実行中のジョブやどこまで完了したかなどの情報も含め全て消えるので、最初のインストール時のテスト等などの限られた機会以外使用はおすすめしません。