Azure上のVMRoleインスタンスをHPCノードに (2/2)
前編からの続きです。内容は、 「Azure側の受け入れ準備」と「HPC Serverでの打ち上げ作業」 です。
Azure側の受け入れ準備
Azure側の要件は次の通りです。
- 管理証明書をAzureサブスクリプションに対して登録済みであること
- この管理証明書(に含まれる公開鍵)と対になる秘密鍵を含んだ鍵ペアファイル(.pfx)が、ヘッドノードの「信頼されたルート証明機関」ストアに登録されていること
- 一つ以上のホステッドサービスが作成済みであること
- そのサービスに、前述の.pfxファイル(によって表される鍵ペア)が登録済みであること
- 一つ以上のストレージサービスが作成済みであること
「おう、全部済んでおるわい」という PKI 猛者な方は「HPC Server側の作業」までジャンプしてください。
「よくわかんないけどHPCでVMRoleをとりあえず試してみたい・・・」という方、ご安心ください。HPC Packにはそのためのオレオレ証明書が含まれています。簡単です。以下に手順をご説明しますので、この通りやっていただければすぐうまくいきます。
ホステッドサービスとストレージアカウントの作成
これは、HPC固有の作業もなく、Azureのページに手順も載っていますので、説明は割愛します。
リージョンもどこでも良いです。日本で使うならEast Asiaが手軽だとは思います。
HPC関連の証明書をセットアップ
実は、HPC Pack 2008R2のSP1以降をインストールすると、ヘッドノードの「信頼されたルート証明機関」ストアに、”Microsoft HPC Azure Client”という発行者の証明書が登録されます。これを使えば簡単です。
手順としては、
- ストアに登録されている証明書を.cer形式でエクスポート → これがAzureサブスクリプションレベルの管理証明書になる
- 同じものを.pfxでエクスポート(鍵ペア) → これをサービス証明書としてホステッドサービスに登録
という感じです。
まずはヘッドノードでcertmgr.mscを起動し、"Microsoft HPC Azure Client”を右クリックして、”All Tasks”→”Export”と進んでください。
※ 画面が英語ですみません。私、ヘッドノードの表示言語は普段から英語にしてあるんです。なぜかというと、そのほうが外人に質問するときに楽だから・・・ 「ほら、これみて」って画面送っても伝わりづらいんですよね、日本語だと。
まずは.cerのほうをエクスポートしましょう。この場合、秘密鍵を含まないただの公開鍵証明書なので、"do not export private key"のほうを選びます。
形式はデフォルトでOKです。
あとはファイル名を指定して、保存するだけです。簡単ですね。
次に、今度はサービス証明書用の鍵ペアを作成します。これは、リモートデスクトップ用のパスワードを暗号化したりする必要があるので、秘密鍵がいるのです。
もう一度エクスポートのウィザードを起動して、今度は"export the private key"を選択します。
形式はデフォルトのPKCS #12、オプション類は全て未チェックでOKです。(これ自体がルート証明書なので、「パスの途中の証明書」はありませんし)
パスワードを設定します。これはあとでAzureに登録するときに必要になりますので忘れないようにしてください。
あとはファイル名を指定して保存すれば完了です。
Azureへの証明書登録
2カ所に登録する必要がありますよ。
管理証明書の登録
Azureの管理ポータル (https://windows.azure.com)をブラウザで開いてください。
※ ひょっとするとこんなのが表示されるかも。その場合、「クォータの変更」→「Yes」とクリックしてください。
ポータルが表示されたら、「ホステッド サービス、ストレージ アカウント、CDN」→「管理証明書」→対象になるサブスクリプション(右クリック)→「証明書の追加」とクリックします。
先ほどエクスポートした.cerファイル(秘密鍵を含んでいないほう)を指定します。
できました。
つぎに、作成済み(ですよね?)のホステッド サービスにサービス証明書を登録します。「ホステッド サービス、ストレージ アカウント、CDN」→「ホステッド サービス」→自分のホステッドサービス→「証明書」右クリック)→「証明書の追加」とクリックします。
次に、先ほどエクスポートした.pfxファイルと、そのときに設定したパスワードを入力します。
できました!
これで証明書の準備は終わりです
HPC Server側の作業
ここまでくれば、あと一息。(ただ、AzureにVHDをアップロードするので、時間はかかります)
ベースVHDをヘッドノードへ移送
ベースVHDは当然のことながら、Hyper-Vのホストにできあがりますよね。このVHDを何とかしてヘッドノードに持って行かなければなりません。ネットワーク経由でも、USBハードディスク経由でも良いので、コピーしてください。私の検証環境では、ヘッドノードも同じHyper-V上のVMなので、以前書いた方法でVHDを使ってコピーしています。
※ ここで注意点。現時点のHPC Serverでは、インポート対象のVHDファイルがシステムドライブ(普通はC:ですね)上にないと、なぜかインポートが失敗しています。(詳細は調査中です) そのため、ベースVHDは「必ずヘッドノードのCドライブのどこかに」コピーしてください。
VHDファイルのインポート
HPCクラスターマネージャーの「構成」→「イメージ」(右クリック)→イメージの追加をクリックします。
VHDファイルのフルパス名を指定します。
あとは、2,3分待てばインポートが終了します。
なお、このとき画面下部のログ欄に下図赤線部のような警告が出力されることがあります。
この警告はHPC Pack R2 SP2のバグによるものです。実際には上図青線部のように"imported successfully”と記録されていれば問題ありません。このバグはSP3で修正予定です。
VHDをクラスターにインポート・アップロード
今までの作業で、HPCクラスターにVHDを登録できましたので、あとはこれをAzure上へアップロードします。
これが簡単で、イメージを右クリックして、「アップロード」をクリックするだけ。csuploadをコマンドプロンプトで実行する必要とかは、ありません。
つぎに、AzureのサブスクリプションIDと証明書の指定画面になりますので、それぞれ指定してください。証明書は、一覧から選択できます。前述の手順で"HPC Azure Client"を登録している場合は、それを選んでください。
次に、VHDをアップロードする先のストレージ アカウントの選択画面になります。自分のストレージ アカウントが存在するリージョンしか選択できないようになっているので、特に迷うことはないはずです。
次に、VHDの名前を入力します。ま、適当に。
次の画面で"Finish"をクリックすると、アップロードが始まります。ネットワークの速度とVHDのサイズにもよりますが、たいていの場合結構時間がかかるはずです。安定したネットワークの準備はよろしいですか。
ノードテンプレートの作成
VHDのアップロードが完了したら、それを使ってHPCノードを展開するためのノードテンプレートを作成します。「構成」→「ノードテンプレート」(右クリック)→「新規」とクリック。
Azureノードのテンプレートを選んで、
ここでまた、サブスクリプションIDと証明書の指定。
次に、配置対象のホステッド サービスとストレージ アカウントを指定します。
今度は、VM Roleを使用することと、そして使用するVHDの名前を指定します。VHDは、アップロード済みの一覧から選択することがで来ます。
ロールインスタンスにリモートデスクトップ接続するときに使用する、管理者ユーザー名とパスワードを設定します。ま、適当に。
Azure Connectを使用する場合はここで指定することがで来ます。必須ではないので、今回は構成しません。
ノードのオンライン/オフライン状態のスケジュールするか、手動制御するかの指定です。とりあえず、手動にしておいたほうが小回りがききますよ。
以上です。ここで"Finish"をクリックすると、ノードテンプレートが作成されます。
ノードのデプロイ
さて、いよいよノードを追加してみます。準備がちょっと面倒だった分、ここからは簡単ですよ。
"Add Node"!!!
もちろんWindows Azure nodesを選びます。
先ほど作ったAzure用ノードテンプレートを指定して、あとは台数とサイズです。Mサイズを16ノードぐらいボーンと作ってみましょうか。
"Finish"をクリックしてください。まだAzure上での展開作業は始まりませんのでご安心を。
定義だけでまだ実体のないノードができました。"AzureNodes"グループに絞ってやると見やすいです。
全ノード選択して"Start"(開始)してやってください。
Azure上でもゴゴゴゴと動きが始まります。
この状態で15分ぐらい(場合によってはもっと)かかったりしますので、少々お待ちください。
よく見ると、指定した16ノードのMインスタンスの他に、HpcProxyというのが二つできているのがわかると思います。これは自動的に作成されるもので、必ずSサイズが2台できます。
できました!Mサイズが16ノードいますねー
HPCクラスターマネージャーからみてみましょう。ちゃんとできてますね。
※ さっきの画面写真とノード名が変わっているのは、実は一度操作を間違えてしまい、やり直したからです。普通にやっていればノード名が勝手に変わったりはしません。
最初はオフラインになっているので、全て選択して「オンライン」に変えてやってください。
試しにclusrunでこの16台にコマンドを投げてみましょうか。
無事に結果が返ってきました。
Workerロールだとホスト名は"RDxxxxxxx"ですが、VMRoleなので普通にsysprep後のデフォルト名称になってますね。"WIN-xxxx"ってやつ。
というわけで、「VMRoleをHPCノードにする手順」でした。
Hope this helps.
__END__