>   >  痴山紘史の日本CG見聞録:第8回:HTCondorの環境構築
第8回:HTCondorの環境構築

第8回:HTCondorの環境構築

みなさんこんにちは。SIGGRAPH Asia 2018が東京で開催されました。私も参加してきて、貴重な情報を仕入れたり、なかなかお会いできない方にご挨拶するなどして充実した時間を過ごすことができました。現地に行った方も行かなかった方も、コースノートやペーパー、その他セッションに関する各種情報が公開されているので、年始のお供にいかがでしょうか。

そして、前回の記事について、1点お詫びしたいことがあります。世界のスーパーコンピュータの性能ランキングTop500のご紹介で、読者の方にピンと来やすいように「一位じゃないとだめなんですか?」という言葉を用いたのですが、この言葉が出たときの状況を考えると、関係者の中には非常に不本意な思いをされた方々もいる一件でもあり、不用意に用いるべきではありませんでした。私の考えが至らず、不快に思われた方がいらしたらすみませんでした。

TEXT_痴山紘史 / Hiroshi Chiyama(日本CGサービス
EDIT_尾形美幸 / Miyuki Ogata(CGWORLD)

HTCondorの概要

HTCondorは、アメリカのウィスコンシン大学で開発が行われており、ネットワーク上にある計算機の有効利用を目的としていることが特徴です。通常、シミュレーションやレンダリングといった計算はレンダーファームにある計算機に行わせますが、スタジオ内にはそれ以外にも多くの計算機が存在します。一番多いのはアーティストが使用するPCですね。これらのPCは多くの能力があるにも関わらず、夜間や昼食、会議など、人が使用していないときには待機状態になってしまいます。HTCondorは、そのような資源を有効利用することを主目的に開発されました。HTCondorの大まかな構成は下図の通りです。


HTCondor Poolは計算を行うリソース(計算サーバ)と、リソース要求(ジョブ)の集合です。これらはセントラルマネージャが管理します。セントラルマネージャはリソースとリソース要求の間のマッチングを行い、計算サーバにジョブを割り当てます。このためにマッチメイキングという方法が使用されています。ジョブの投入はサブミットマシンから行います。

セントラルマネージャ、計算サーバ、サブミットマシンは1台のマシンが担当することもできます。今回構築する環境も、Linux側はセントラルマネージャ、計算サーバ、サブミットマシンの全機能をもっていて、Windows側は計算サーバとサブミットマシンとして機能します。

※ちなみに、今回図を作成するにあたって「さくらのアイコンセット」を使わせていただきました。こういった資料を作成する際によく使う、いい感じのアイコンが揃っていてとても便利です :-)

HTCondor環境構築

・ネットワーク環境構築

HTCondorは複数のマシンから参照されるので、IPアドレスやDNSの設定はきちんと行い、サーバに問題なくアクセスできるようにしておく必要があります。そのため、事前に HTCondor用サーバのホスト名やIPアドレスを決め、DNSへの登録も行なっておきます。今回はホスト名をhtcondor、IPアドレスを 192.168.0.36としています。


・セントラルマネージャの構築

HTCondorをインストールすると、デフォルトでセントラルマネージャや計算サーバ、サブミットマシンとしての機能が動くようになっています。また、HTCondor poolも作成されるので、ほかのマシンをここに追加して管理することができます。まずは仮想マシンとして用意したCentOS7上でこの環境を作成します。


・環境を最新のものにする

[chiyama@htcondor ~]$ sudo yum -y update

・ファイヤウォールの設定

サービスを提供するために、9618番ポートを開けます。

[chiyama@htcondor ~]$ sudo firewall-cmd --add-port=9618/tcp --zone=public --permanent

・署名鍵の取得

[chiyama@htcondor ~]$ curl -O https://research.cs.wisc.edu/htcondor/yum/RPM-GPG-KEY-HTCondor
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  1752  100  1752    0     0   1944      0 --:--:-- --:--:-- --:--:--  1944
[chiyama@htcondor ~]$ sudo rpm --import RPM-GPG-KEY-HTCondor

・リポジトリファイルの取得

最近の開発でPython対応やこれまであったWeb APIの廃止が進んでいるようなので、Current Development版(8.7.10)を使用します。

[chiyama@htcondor ~]$ cd /etc/yum.repos.d
[chiyama@htcondor yum.repos.d]$ sudo curl -O https://research.cs.wisc.edu/htcondor/yum/repo.d/htcondor-development-rhel7.repo
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   183  100   183    0     0    213      0 --:--:-- --:--:-- --:--:--   213

・HTCondorのインストール

[chiyama@htcondor yum.repos.d]$ sudo yum -y install condor-all

・起動

[chiyama@htcondor yum.repos.d]$ sudo systemctl start condor
[chiyama@htcondor yum.repos.d]$ sudo systemctl enable condor
Created symlink from /etc/systemd/system/multi-user.target.wants/condor.service to /usr/lib/systemd/system/condor.service.

・起動確認

[chiyama@htcondor yum.repos.d]$ ps ax | grep condor
  15886 ?        Ss     0:00 /usr/sbin/condor_master -f
  15951 ?        S      0:00 condor_procd -A /var/run/condor/procd_pipe -L /var/log/condor/ProcLog -R 1000000 -S 60 -C 994
  15952 ?        Ss     0:00 condor_shared_port -f
  15953 ?        Ss     0:00 condor_collector -f
  15954 ?        Ss     0:00 condor_negotiator -f
  15955 ?        Ss     0:00 condor_schedd -f
  15956 ?        Ss     0:00 condor_startd -f
  15976 pts/0    S+     0:00 grep --color=auto condor

condor関連のプロセスが起動していることが確認できたら、インストールは完了です。


・環境設定

HTCondorの設定を行います。ネットワークの設定をきちんと行い、HTCondorのインストールが終わっていれば既に使用可能な状態になっているはずです。condor_statusコマンドでHTCondor poolの状態を確認できます。


デフォルトでは、OSが認識しているCPUコアの数だけ同時にジョブが実行できるようになっています。今回の例では、2CPU(1CPUあたり2コア)の設定で仮想マシンをつくっているため、合計で4プロセス実行できるようになっています。

このようにして作成したHTCondor poolにほかのマシンを追加できるようにします。HTCondorの設定ファイルは/etc/condor以下にあり、通常はcondor_configかconfig.d以下にファイルを作成して各種設定を行います。今回はcondor_configの最後に以下を追加し、HTCondorを再起動します。

NETWORK_INTERFACE=XXX.XXX.XXX.XXX

ALLOW_READ = *
ALLOW_WRITE = *
ALLOW_ADMINISTRATOR = $(IP_ADDRESS)
use POLICY : ALWAYS_RUN_JOBS

WANT_VACATE = FALSE
WANT_SUSPEND = TRUE

※XXX.XXX.XXX.XXXにはIPアドレスを入れます(本記事の環境では 192.168.0.36)。複数のIPアドレスが存在する場合は、HTCondorが使用するアドレスを指定する必要があるようです。

[chiyama@htcondor condor]$ sudo service condor restart

何か問題があった場合、/var/log/condor以下にログファイルが作成されているので、そちらを見てみます。


・Windows環境の構築

HTCondor Poolに接続し、ジョブを実行するための環境をWindows上に作成します。Windows版はインストーラが用意されているので、ダウンロードページから必要なバージョンを選んでダウンロードします。通常はセントラルマネージャにインストールしたものとバージョンを揃えます。私はcondor-8.7.10-453720-Windows-x64.msiを使用しました。


・ファイヤウォールの設定

サービスを提供するために、Linuxと同様9618番ポートを開けます。


・インストール

Windows版のインストーラではいくつかの設定を選択できます。基本的にはデフォルトのままで良いですが、何ヶ所かここで設定しておくと良いところがあります。まず、既にセントラルマネージャを作成し、poolも用意されているためそちらに接続するようにします。


PCの空き時間にのみ処理を実行するかどうか決めます。とりあえず、常に実行するようにします。また、このマシンからジョブの投入もできるようにします。


それ以外はデフォルトのまま、Nextで進めていきます。インストーラが終了すれば自動的にHTCondorが立ち上がり、既にLinux環境上に作成してあるpoolに接続されるはずです。それを確認するためにコマンドプロンプト上でcondor_statusを実行してみます。


Windowsマシンでは8コア相当(4コアHT)の環境なので、デフォルトで8プロセス同時に処理できるようになっています。さらにいくつか設定を行います。Windows版の設定ファイルは%CONDOR_INSTALL_DIR%\condor_configにあります。以下のような記述があるか確認し、なかったら追加します。

ALLOW_READ = *
ALLOW_WRITE = *
ALLOW_ADMINISTRATOR = $(IP_ADDRESS)
use POLICY : ALWAYS_RUN_JOBS
WANT_VACATE = FALSE
WANT_SUSPEND = TRUE

設定を書き換えたら、condor_reconfigで新しい設定を反映させます。

C:\temp\simpleSubmission>condor_reconfig
Sent "Reconfig" command to local master

次ページ:
ジョブを実行してみる

その他の連載