CCBを使用した環境構築
続いて、HTCondorの設定をします。設定のキモは以下の通りです
・全てのサーバでPRIVATE_NETWORK_NAMEの設定をする
・計算サーバとサブミットマシンでFILESYSTEM_DOMAIN、UID_DOMAINの設定をする
・計算サーバとサブミットマシンでUSE_SHARED_PORTの設定をする
・計算サーバ側でCCB_ADDRESSの設定をする
・CONDOR_HOSTは192.168.0.36を指定する(きちんと名前解決できるのならホスト名でもいい)
第9回:HTCondorで処理を行うでやったように、ジョブをどの環境で実行するかの指定は、sdfファイルのrequirementsに条件を記述することで実現できます。今回は各計算ノードごとにストレージが異なるため、それで区別できるようにFILESYSTEM_DOMAIN、UID_DOMAINを設定し、レンダーファーム上の計算サーバはfarm.example.netという名前で管理します。同様に、作業環境用のマシンはintra.example.netという名前にします。
これで、レンダーファーム上の計算サーバでジョブを実行したい場合はsdfに
requirements = TARGET.FileSystemDomain == "farm.example.net" && TARGET.UidDomain == "farm.example.net"
と記述すればよくなります。
また、サブミットマシンとは異なるUID_DOMAINの計算機にジョブを投げた場合、標準では計算サーバでnobodyアカウントとしてジョブが実行されるため、アクセス権に注意する必要があります。また、当然ですがファイルを格納するストレージも別なので、サブミットマシンにあるディレクトリやファイルが計算サーバにあるとは限りません。運用の際はこの点にも注意する必要があります。
・セントラルマネージャの設定
以上を踏まえて設定を行なっていきます。まずはセントラルマネージャからです。
[chiyama@htcondor ~]$ cat /etc/condor/condor_config
######################################################################
##
## condor_config
##
## This is the global configuration file for condor. This is where
(中略)
## Install the minicondor package to run HTCondor on a single node
ALLOW_READ = *
ALLOW_WRITE = *
ALLOW_NEGOTIATOR = *
ALLOW_NEGOTIATOR_SCHEDD = *
ALLOW_ADMINISTRATOR = $(IP_ADDRESS)
WANT_VACANT = FALSE
WANT_SUSPEND = TRUE
CONDOR_HOST = 192.168.0.36
BIND_ALL_INTERFACES = True
PRIVATE_NETWORK_NAME = intra.example.net
DAEMON_LIST = MASTER, NEGOTIATOR, COLLECTOR
COLLECTOR_MAX_FILE_DESCRIPTORS = 20000
[chiyama@htcondor ~]$
作業環境用のネットワークはintra.example.netという名前にしておきます。また、セントラルマネージャしか動かさないのでMASTER、NEGOTIATOR、COLLECTORの3つだけを動かします。
・計算サーバでの設定
続いて計算サーバです。
[chiyama@worker01 ~]$ cat /etc/condor/condor_config
######################################################################
##
## condor_config
##
## This is the global configuration file for condor. This is where
(中略)
## Install the minicondor package to run HTCondor on a single node
CONDOR_HOST=192.168.0.36
FILESYSTEM_DOMAIN = farm.example.net
UID_DOMAIN = farm.example.net
CONDOR_ADMIN =
SMTP_SERVER =
ALLOW_READ = *
ALLOW_WRITE = *
ALLOW_NEGOTIATOR = *
ALLOW_ADMINISTRATOR = $(IP_ADDRESS)
use POLICY : ALWAYS_RUN_JOBS
WANT_VACATE = FALSE
WANT_SUSPEND = TRUE
PRIVATE_NETWORK_NAME = farm.example.net
DAEMON_LIST = MASTER, STARTD
CCB_ADDRESS = $(COLLECTOR_HOST)
UPDATE_COLLECTOR_WITH_TCP = TRUE
ALLOW_DAEMON = *
[chiyama@worker01 ~]$
ルータをまたいで、192.168.0.36のセントラルマネージャに接続するようにしています。計算サーバはセントラルマネージャやサブミットマシンとは別のネットワークにあるので、FILESYSTEM_DOMAIN、UID_DOMAIN、PRIVATE_NETWORK_NAMEは、全てfarm.example.netとします。また、CCB_ADDRESSの設定も行ない、CCB経由でサブミットマシンと通信するようにします。
・サブミットマシンでの設定
最後にサブミットマシンです。
[chiyama@docker ~]$ cat /etc/condor/condor_config
######################################################################
##
## condor_config
##
## This is the global configuration file for condor. This is where
(中略)
## Install the minicondor package to run HTCondor on a single node
CONDOR_HOST = 192.168.0.36
COLLECTOR_HOST = $(CONDOR_HOST)
FILESYSTEM_DOMAIN = intra.example.net
UID_DOMAIN = intra.example.net
CONDOR_ADMIN =
SMTP_SERVER =
ALLOW_READ = *
ALLOW_WRITE = *
ALLOW_ADMINISTRATOR = $(IP_ADDRESS)
use POLICY : ALWAYS_RUN_JOBS
WANT_VACATE = FALSE
WANT_SUSPEND = TRUE
PRIVATE_NETWORK_NAME = intra.example.net
DAEMON_LIST = MASTER, SCHEDD
SCHEDD_MAX_FILE_DESCRIPTORS = 20000
[chiyama@docker ~]$
サブミットマシンはセントラルマネージャと同じネットワークにあるので、FILESYSTEM_DOMAIN、UID_DOMAIN、PRIVATE_NETWORK_NAMEは、全てintra.example.netとします。また、CCBは必要ないので設定しません。
以上で HTCondorの設定ができました。