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”という発行者の証明書が登録されます。これを使えば簡単です。

image

手順としては、

  1. ストアに登録されている証明書を.cer形式でエクスポート → これがAzureサブスクリプションレベルの管理証明書になる
  2. 同じものを.pfxでエクスポート(鍵ペア) → これをサービス証明書としてホステッドサービスに登録

という感じです。

まずはヘッドノードでcertmgr.mscを起動し、"Microsoft HPC Azure Client”を右クリックして、”All Tasks”→”Export”と進んでください。

image

※ 画面が英語ですみません。私、ヘッドノードの表示言語は普段から英語にしてあるんです。なぜかというと、そのほうが外人に質問するときに楽だから・・・ 「ほら、これみて」って画面送っても伝わりづらいんですよね、日本語だと。

まずは.cerのほうをエクスポートしましょう。この場合、秘密鍵を含まないただの公開鍵証明書なので、"do not export private key"のほうを選びます。

image

 

形式はデフォルトでOKです。

image

あとはファイル名を指定して、保存するだけです。簡単ですね。

image

 

次に、今度はサービス証明書用の鍵ペアを作成します。これは、リモートデスクトップ用のパスワードを暗号化したりする必要があるので、秘密鍵がいるのです。

もう一度エクスポートのウィザードを起動して、今度は"export the private key"を選択します。

image

 

形式はデフォルトのPKCS #12、オプション類は全て未チェックでOKです。(これ自体がルート証明書なので、「パスの途中の証明書」はありませんし)

image

パスワードを設定します。これはあとでAzureに登録するときに必要になりますので忘れないようにしてください。

image

あとはファイル名を指定して保存すれば完了です。

image

Azureへの証明書登録

2カ所に登録する必要がありますよ。

管理証明書の登録

Azureの管理ポータル (https://windows.azure.com)をブラウザで開いてください。

※ ひょっとするとこんなのが表示されるかも。その場合、「クォータの変更」→「Yes」とクリックしてください。

image

 

ポータルが表示されたら、「ホステッド サービス、ストレージ アカウント、CDN」→「管理証明書」→対象になるサブスクリプション(右クリック)→「証明書の追加」とクリックします。

image

 

先ほどエクスポートした.cerファイル(秘密鍵を含んでいないほう)を指定します。

image

 

できました。

image

 

つぎに、作成済み(ですよね?)のホステッド サービスにサービス証明書を登録します。「ホステッド サービス、ストレージ アカウント、CDN」→「ホステッド サービス」→自分のホステッドサービス→「証明書」右クリック)→「証明書の追加」とクリックします。

 

image

 

次に、先ほどエクスポートした.pfxファイルと、そのときに設定したパスワードを入力します。

image

 

できました!

image

これで証明書の準備は終わりです

 

HPC Server側の作業

ここまでくれば、あと一息。(ただ、AzureにVHDをアップロードするので、時間はかかります)

ベースVHDをヘッドノードへ移送

ベースVHDは当然のことながら、Hyper-Vのホストにできあがりますよね。このVHDを何とかしてヘッドノードに持って行かなければなりません。ネットワーク経由でも、USBハードディスク経由でも良いので、コピーしてください。私の検証環境では、ヘッドノードも同じHyper-V上のVMなので、以前書いた方法でVHDを使ってコピーしています。

※ ここで注意点。現時点のHPC Serverでは、インポート対象のVHDファイルがシステムドライブ(普通はC:ですね)上にないと、なぜかインポートが失敗しています。(詳細は調査中です) そのため、ベースVHDは「必ずヘッドノードのCドライブのどこかに」コピーしてください。

 

VHDファイルのインポート

HPCクラスターマネージャーの「構成」→「イメージ」(右クリック)→イメージの追加をクリックします。

image

 

一番下の選択肢を選んで「次へ」をクリックしてください。image

 

VHDファイルのフルパス名を指定します。

image

あとは、2,3分待てばインポートが終了します。

image

なお、このとき画面下部のログ欄に下図赤線部のような警告が出力されることがあります。

image

この警告はHPC Pack R2 SP2のバグによるものです。実際には上図青線部のように"imported successfully”と記録されていれば問題ありません。このバグはSP3で修正予定です。

 

VHDをクラスターにインポート・アップロード

今までの作業で、HPCクラスターにVHDを登録できましたので、あとはこれをAzure上へアップロードします。

これが簡単で、イメージを右クリックして、「アップロード」をクリックするだけ。csuploadをコマンドプロンプトで実行する必要とかは、ありません。

image

つぎに、AzureのサブスクリプションIDと証明書の指定画面になりますので、それぞれ指定してください。証明書は、一覧から選択できます。前述の手順で"HPC Azure Client"を登録している場合は、それを選んでください。

image

 

次に、VHDをアップロードする先のストレージ アカウントの選択画面になります。自分のストレージ アカウントが存在するリージョンしか選択できないようになっているので、特に迷うことはないはずです。

image

次に、VHDの名前を入力します。ま、適当に。

image

 

次の画面で"Finish"をクリックすると、アップロードが始まります。ネットワークの速度とVHDのサイズにもよりますが、たいていの場合結構時間がかかるはずです。安定したネットワークの準備はよろしいですか。

image

 

 

 

ノードテンプレートの作成

VHDのアップロードが完了したら、それを使ってHPCノードを展開するためのノードテンプレートを作成します。「構成」→「ノードテンプレート」(右クリック)→「新規」とクリック。

image

 

Azureノードのテンプレートを選んで、

image

 

ここでまた、サブスクリプションIDと証明書の指定。

image

 

次に、配置対象のホステッド サービスとストレージ アカウントを指定します。

image

 

今度は、VM Roleを使用することと、そして使用するVHDの名前を指定します。VHDは、アップロード済みの一覧から選択することがで来ます。

image

 

ロールインスタンスにリモートデスクトップ接続するときに使用する、管理者ユーザー名とパスワードを設定します。ま、適当に。

image

 

Azure Connectを使用する場合はここで指定することがで来ます。必須ではないので、今回は構成しません。

image

 

ノードのオンライン/オフライン状態のスケジュールするか、手動制御するかの指定です。とりあえず、手動にしておいたほうが小回りがききますよ。

image

 

以上です。ここで"Finish"をクリックすると、ノードテンプレートが作成されます。

image

 

ノードのデプロイ

さて、いよいよノードを追加してみます。準備がちょっと面倒だった分、ここからは簡単ですよ。

"Add Node"!!!

image

 

もちろんWindows Azure nodesを選びます。

image

 

先ほど作ったAzure用ノードテンプレートを指定して、あとは台数とサイズです。Mサイズを16ノードぐらいボーンと作ってみましょうか。

image

 

"Finish"をクリックしてください。まだAzure上での展開作業は始まりませんのでご安心を。

image

 

定義だけでまだ実体のないノードができました。"AzureNodes"グループに絞ってやると見やすいです。

image

 

全ノード選択して"Start"(開始)してやってください。

image

 

Azure上でもゴゴゴゴと動きが始まります。

image

この状態で15分ぐらい(場合によってはもっと)かかったりしますので、少々お待ちください。

よく見ると、指定した16ノードのMインスタンスの他に、HpcProxyというのが二つできているのがわかると思います。これは自動的に作成されるもので、必ずSサイズが2台できます。

 

できました!Mサイズが16ノードいますねー

image

 

HPCクラスターマネージャーからみてみましょう。ちゃんとできてますね。image

※ さっきの画面写真とノード名が変わっているのは、実は一度操作を間違えてしまい、やり直したからです。普通にやっていればノード名が勝手に変わったりはしません。

最初はオフラインになっているので、全て選択して「オンライン」に変えてやってください。

試しにclusrunでこの16台にコマンドを投げてみましょうか。

image

 

無事に結果が返ってきました。

image

Workerロールだとホスト名は"RDxxxxxxx"ですが、VMRoleなので普通にsysprep後のデフォルト名称になってますね。"WIN-xxxx"ってやつ。

というわけで、「VMRoleをHPCノードにする手順」でした。

Hope this helps.

__END__