>   >  痴山紘史の日本CG見聞録:第17回:クラウド環境構築[クラウド環境の整備]
第17回:クラウド環境構築[クラウド環境の整備]

第17回:クラウド環境構築[クラウド環境の整備]

計算サーバの環境設定

condor_annexで標準で使用される仮想マシンイメージはHTCondor開発者が用意したものです。当然、ここには我々が必要とするGafferやArnoldといったソフトウェアはインストールされていません。また、FileSystemDomainのように自分の環境に合わせて設定を行う必要があるものもあります。これらの設定を行なっていきます。

まずは、HTCondorの設定から行います。計算サーバで使用する設定はcondor_annexを実行するマシン上で作成しておき、condor_annexに-config-dirオプションをつけることでインスタンスの/etc/condor/config.dに転送することができます。今回はFILESYSTEMDOMAINとUID_DOMAINの設定を行います。

-bash-4.1$ cat ~/condor-8.8.5/etc/condor.aws/51aws.config
FILESYSTEM_DOMAIN = aws.example.net
UID_DOMAIN = aws.example.net

-bash-4.1$

condor_annexに-config-dirオプションを追加してインスタンスを立ち上げます。

-bash-4.1$ condor_annex -count 1 -annex-name HTCondorOnAWS -aws-on-demand-instance-type m3.medium -config-dir /home/chiyama/condor-8.8.5/etc/condor.aws

インスタンスが立ち上がったら思った通りに設定されているか確認します。

[chiyama@docker condor-8.8.5]$ condor_status
Name                           OpSys      Arch   State     Activity     LoadAv Mem   ActvtyTime

ip-10-158-179-245.ec2.internal LINUX      X86_64 Unclaimed Benchmarking  0.000 3755  0+00:00:03

               Total Owner Claimed Unclaimed Matched Preempting Backfill  Drain

  X86_64/LINUX     1     0       0         1       0          0        0      0

         Total     1     0       0         1       0          0        0      0
[chiyama@docker condor-8.8.5]$ condor_status ip-10-158-179-245.ec2.internal -long | grep Domain
FileSystemDomain = "aws.example.net"
UidDomain = "aws.example.net"
[chiyama@docker condor-8.8.5]$

成功です。この設定はインスタンス立ち上げ時に毎回行われるので、内容を変更したい場合は設定ファイルを更新してインスタンスを立ち上げ直します。

続いて、インスタンスにGafferやArnoldをインストールします。先ほども言及したように、現在使用しているイメージはHTCondor開発者が用意したものなので、これを元にソフトウェアのインストールや各種設定を行なったものを自分用イメージとして保存し、以降はこのイメージを使用します。

まずインスタンスにSSH接続します。接続する際にはAWS設定時に取得した.pemファイルを使用します。インスタンスのIPアドレスやホスト名はEC2 Management Consoleから確認できます。また、アクセスの際に使用するユーザー名はec2-userです。


-bash-4.1$ ssh -i ~/.condor/HTCondorAnnex-KeyPair.us-east-1.pem ec2-user@ec2-3-92-201-120.compute-1.amazonaws.com
The authenticity of host 'ec2-3-92-201-120.compute-1.amazonaws.com (3.92.201.120)' can't be established.
RSA key fingerprint is 5f:c8:8f:c3:c0:fa:b4:1f:89:0f:f0:03:ca:20:fb:5f.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'ec2-3-92-201-120.compute-1.amazonaws.com,3.92.201.120' (RSA) to the list of known hosts.
Last login: Fri Aug  2 18:59:59 2019 from tlmiller-laptop.cs.wisc.edu

       __|  __|_  )
       _|  (     /   Amazon Linux 2 AMI
      ___|\___|___|

https://aws.amazon.com/amazon-linux-2/
[ec2-user@ip-10-157-243-113 ~]$

無事に接続できました。

では、GafferやArnold環境も構築していきます。これは特に特別なことはなく、普通のLinux環境で動かす手順と変わりはありません。

[ec2-user@ip-10-183-105-95 ~]$ wget https://github.com/ImageEngine/gaffer/releases/download/0.54.1.0/gaffer-0.54.1.0-linux.tar.gz
--2019-10-20 06:44:40--  https://github.com/ImageEngine/gaffer/releases/download/0.54.1.0/gaffer-0.54.1.0-linux.tar.gz
Resolving github.com (github.com)... 140.82.114.3

(中略)

100%[=================================================================================================================================>] 288,573,161 52.1MB/s   in 4.7s

2019-10-20 06:44:45 (58.0 MB/s) - 'gaffer-0.54.1.0-linux.tar.gz' saved [288573161/288573161]

Gaffer-0.54.1.0ではArnold 5.3.1.0に対応しています。本家ドキュメントでは5.1.1.0と書いてあるのですが、これは間違いなので要注意です。ArnoldのダウンロードにはAutodeskアカウントが必要なので、ログインした上でダウンロードしてください。

ファイルが一通り用意できたら、第9回:HTCondorで処理を行うを参考にしながら環境構築を進めます。

[ec2-user@ip-10-183-105-95 ~]$ tar zxfv gaffer-0.54.1.0-linux.tar.gz

(中略)

gaffer-0.54.1.0-linux/qt/plugins/imageformats/libqjpeg.so
gaffer-0.54.1.0-linux/qt/plugins/imageformats/libqtiff.so
gaffer-0.54.1.0-linux/qt/plugins/xcbglintegrations/
gaffer-0.54.1.0-linux/qt/plugins/xcbglintegrations/libqxcb-glx-integration.so
[ec2-user@ip-10-63-146-249 ~]$ sudo mv gaffer-0.54.1.0-linux /opt/


[ec2-user@ip-10-63-146-249 ~]$ sudo su
[root@ip-10-63-146-249 ec2-user]# mkdir -p /opt/solidangle/arnold-5.3.1.0
[root@ip-10-63-146-249 ec2-user]# cd /opt/solidangle/arnold-5.3.1.0/
[root@ip-10-63-146-249 arnold-5.3.1.0]# tar zxvf /home/ec2-user/Arnold-5.3.1.0-linux.tgz
Arnold_5_Porting_Guide.pdf
materialx/
materialx/arnold/
materialx/arnold/nodedefs.mtlx
bin/
bin/liboptix.so.1
bin/libAdClmHub.so
bin/libcudnn.so.7

(中略)

doc/api/ai__shaders_8h_source.html
doc/api/ai__deprecated_8h.html
[root@ip-10-63-146-249 arnold-5.3.1.0]# exit
exit

ついでに、先ほど作成したFILESYSTEMDOMAINとUID_DOMAINの設定ファイルも反映されていることを確認してみます。

[ec2-user@ip-10-157-243-113 ~]$ ls /etc/condor/config.d/
00ec2-dynamic.config  01gpus.config  01slot-users.config  49ec2-instance.config  50ec2.config  51aws.config  99docker.config  password_file.pl
[ec2-user@ip-10-157-243-113 ~]$ cat /etc/condor/config.d/51aws.config
FILESYSTEM_DOMAIN = aws.example.net
UID_DOMAIN = aws.example.net

[ec2-user@ip-10-157-243-113 ~]$

きちんと反映されていますね。

イメージの保存

いろいろと設定を行いましたが、このままではインスタンスを終了すると内容が消えてしまいます。それを避けるために今の状態をイメージとして保存しておきます。

これは、AWS Management Consoleから行うことができます。



しばらく待つとイメージが作成されます。

作成したイメージを使用してインスタンスを立ち上げる

作成したイメージを使用してインスタンスを立ち上げるには、condor_annexでAMI IDを指定します。

-bash-4.1$ condor_annex -count 1 -annex-name HTCondorOnAWS -aws-on-demand-instance-type m3.medium -config-dir /home/chiyama/condor-8.8.5/etc/condor.aws -aws-on-demand-ami-id ami-04987200f49c30c80
Will request 1 m3.medium on-demand instance for 0.83 hours.  Each instance will terminate after being idle for 0.25 hours.
Is that OK?  (Type 'yes' or 'no'): yes
Starting annex...
Annex started.  Its identity with the cloud provider is 'HTCondorOnAWS_c2a5cf5b-b9ab-4612-8a51-5d8422eee527'.  It will take about three minutes for the new machines to join the pool.
-bash-4.1$ ssh -i ~/.condor/HTCondorAnnex-KeyPair.us-east-1.pem ec2-user@ec2-54-235-235-16.compute-1.amazonaws.com
The authenticity of host 'ec2-54-235-235-16.compute-1.amazonaws.com (54.235.235.16)' can't be established.
RSA key fingerprint is 5f:c8:8f:c3:c0:fa:b4:1f:89:0f:f0:03:ca:20:fb:5f.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'ec2-54-235-235-16.compute-1.amazonaws.com,54.235.235.16' (RSA) to the list of known hosts.
Last login: Sun Oct 20 06:42:38 2019 from jcgs.co.jp

       __|  __|_  )
       _|  (     /   Amazon Linux 2 AMI
      ___|\___|___|

https://aws.amazon.com/amazon-linux-2/
[ec2-user@ip-10-63-146-249 ~]$ ls /opt/
aws  gaffer-0.54.1.0-linux  rh  solidangle
[ec2-user@ip-10-63-146-249 ~]$

めでたく前回作業していた内容が残っています。これで、HTCondorを使用してクラウド上に計算サーバを立て、ローカル環境からジョブを投入するための最低限の準備が整いました。

次回予告

今回まででHTCondorを使用してクラウド上に計算サーバを立て、ローカル環境からジョブを投入するための最低限の準備が整いました。しかし、まだひとつ大きな問題が残っています。ローカル環境とクラウド環境のファイルの同期です。これができないと、ローカル環境で作成したシーンデータをクラウド上でレンダリングすることができません。次回はここに手を付けます。



第18回の公開は、2019