3月11日の地震の際、私の自宅がある栃木県小山市は目立って大きな被害は少なかったのですが、それでも街のそちこちで壁が崩れていたり、神社の灯篭が倒れていたり...私の自宅はといえば、耐震対策がなっていなかったせいか、すべての本棚が倒れ、食器棚の食器が床に散乱し、冷蔵庫は散歩を始め、XBOX 360 と Kinnect は宙を舞いました。今でも寄生獣の5巻が見当たりません。
お客様を担当されているフィールドSEの皆さまも、様々なかたちで被害を受けていらっしゃる方が多いと思います。比較的被害が少ないと言われている都内であっても、電車の運行状況によっては、思ったようにお客様のメンテナンスが行えない状況に悩んでいらっしゃる方も多いはずです。そんな状況でも、VPN の設備が整ったお客様であれば、なんとかサーバーのメンテナンスを行うことができるでしょう。でもすべてのお客様が VPN Supported ではないですよね。
そこで、”一時的な” 回避策として使っていただけるのが、Windows Azure Connect という仮想ネットワーク機能です。
まだプレビュー版ではありますが、何も手が出せない状況と比べれば天と地ほどの差があります。「Windows Azure Connect」は、Windows Azure 上に用意された リレーサーバーを中継点として、ネットワーク的に分断されたサーバー/クライアント間を仮想のネットワークパスで接続するものです。特別な機器は一切必要なく、仮想ネットワークで接続したいサーバーやクライアントにエージェントプログラム(Windows Azure Connect エンドポイントソフトウェア と言います)をインストールするだけなので、とても簡単にセットアップが可能です。
仕組みについてはこちら
【Azure for ITPro】Windows Azure Connect を使用するためのネットワーク条件について
本来の目的はオンプレミスとパブリッククラウドを仮想ネットワークでつないで Hybrid なクラウドを構築するのが目的ですが、このテクノロジーをうまく使うとフィールドSEによる遠隔メンテナンスにも流用できます。
構成パターンはいくつかありますが、ここでは代表的な2パターンをご紹介します。

左の図をご覧ください。自宅や自社のPCから、Windows Azure 上のロールインスタンス(サーバーのことです)を踏み台にして、各お客様先のマシンと通信することができます。もちろん、リモートデスクトップで入ることも可能です。ただし、サポートされているのは、Windows Server 2008/Windows Vista SP1 以降なので、もし お客さま先に Windows Server 2003 等が存在する場合には、一旦お客様先の Windows Server 2008 等に入り込んでから、再度接続することになります。
「お客様A」<->「お客様B」間で通信ができてしまうのでは!?という心配ですが、これは問題ありません。直接お客様サーバー間で通信することはできませんし(そのような設定をしなければです)、各お客様は Windows Azure 上のロールインスタンスにさえも入ることはできません(もちろんロールインスタンスの管理者のパスワードを知らなければの話)。
もし心配であれば、以下のようにロールインスタンスをお客様ごとに用意しておけばOKです。

この機能を使用するには、まず以下の準備をしておく必要があります。
1. Windows Azure のサブスクライブ
現在、本震災対策用の90日間無償アカウントを使用することができます。クレジットカード登録も不要ですので、「捨てID」としてガンガン使ってください。サブスクライブ完了までに最長2営業日ほど要しますので、Windows Live ID を取得の上、速攻でお申し込みください。
もし、既にWindows Azure アカウントを申し込んだ Live ID が存在するようであれば、同じIDで申し込みすることも可能です。その場合には、ベータプログラムの利用権限はそのまま引き継ぐことができます(環境は引き継げませんが)。
なお、1つの Windows Live IDで申し込める無償パスは1回だけです。複数お申し込みする場合には、Windows Live ID をその都度作成してください。
2.Windows Azure Connect ベータ利用申込み
Windows Azure アカウントが発行されると、http://windows.azure.com/ にログオンして各機能を操作することができるようになります。ここで、Windows Azure Connect を有効にするには、左側の「HOME」をクリック後、その上にある「Beta Program」をクリックします。すると、画面右側にベータ申込み用画面が表示されるので、「Windows Azure Connect」を選択して「Apply for Access」をクリックしてください。 興味があれば VM Role もチェックして申し込んでください。
まずはここまでやっておきましょう。Windows Azure Connect が有効になるまでには本社側の承認処理が必要になるため、少し時間を要すると思われます。Windows Azure Connect が有効になると、表示が以下のように変わります。

Windows Azure Connect が Active になったら、以降の作業を行ってください。
※約1週間で有効になります。有効になると「Welcome to the Windows Azure Connect CTP!」というメールが届きます。
3. Windows Azure 上に踏み台となるアプリケーションを展開するための準備
はじめに踏み台となるダミーのアプリケーションを作成するのですが、アプリケーションを作成するには Visual Studio が必要です。でも IT PRO の方は Visual Studio なんて持ってないですよね。なので、今回は無償の Visual Studio 2010 Express を使用します。
① SQL Server 2008 R2 Express をインストールする
ちょっと面倒なのですが、事前に SQL Server 2008 R2 Express をインストールしておいてください。SQL Server 2008 R2 Express は以下からダウンロードすることができます。もちろん無償です。
http://www.microsoft.com/downloads/details.aspx?familyid=8B3695D9-415E-41F0-A079-25AB0412424B&displaylang=ja
実は、これから紹介する Webプラットフォームインストーラー(Web PI)を使用して、Visual Web Developer 2010 Express と同時に SQL Server 2008 R2 Express をインストールすることができるのですが、インストールに失敗することがあります。原因は様々なのですが、事前に個別インストールしておいたほうが確実です。
② 無償の Visual Studio Web Developer 2010 Express をインストールする
SQL Server 2008 R2 Express のインストールが完了したら、以下の Web プラットフォーム インストーラー(Web PI)サイトに移動し、Web PI をダウンロードして実行しましょう。
Download the Microsoft Web Platform

Web PI を実行すると、以下の画面が表示されます。画面上にある[製品]をクリックしてから、一覧に表示されている「Visual Web Developer 2010 Express」を[追加]します。

まだインストールははじめないでください。次の項でもう1つコンポーネントを追加します。
Windows Azure に関連した開発を行うには、Windows Azure 用の SDK および Visual Studio 用の Addin がインストールされていなければなりません。
WebPI の画面を少し下にスクロールして、「Windows Azure Tools for Microsoft Visual Studio 2010 V1.3」を選択してください。

[追加]ボタンをクリックして選択が完了したら、[インストール]をクリックします。
インストールが始まると、以下のように関連コンポーネントも同時にインストールされる旨のメッセージが表示されるので[同意する]をクリックして先に進めてください。

インストールが完了したら、コントロールパネルの[プログラムと機能]に以下が表示されていることを確認してください。
- Windows Azure SDK v1.3.11122.0038
- Widnows Azure Tools for Visual Studio 2010 1.3 v1.3.31122.1601

以上で準備は完了です。
4. 踏み台となるアプリケーションを作成する
「アプリケーションの作成」と聞いて、引いている IT Pro も多いと思いますが、全然大した作業ではありません。Active Directory のインストールのほうが10000 倍難しいです。たんなる手順ですので、覚えてしまいましょう。
| おそらく、多くの IT Pro の皆さんが、「なーんでアプリが必要なの?」と不思議に思っていると思います。気持ち悪いと思うので、それについてちょっと触れておきます。 Windows Azure Platform というのは、クラウドの種類の中では「PaaS(Platform as a Service)」に属します。PaaS の P は、もちろん「プラットフォーム」のことですが、この場合のプラットフォームとは OS を意味しています。つまり、Windows Azure は OS をサービスとして提供するクラウドの形態なのです。なので、Windows Azure は、お客様がアプリケーションを作成して Windows Azure 上に展開することを前提に設計されています。 言い換えれば、オンプレミスでは「OSをインストールする」という作業が必要ですが、Widnows Azure では必要ありません。なぜならば、OS は Windows Azure が用意することになっているからです。なので、お客様はアプリケーションの展開からいきなりはじめることができるのです。 では、OS がいつ準備されるかといえば、お客様がアプリケーションを展開しようとしたときです。つまり、アプリケーションの展開がトリガーとなってプラットフォームが準備(OSが展開)されます。そういうふうに、マイクロソフトが作ったのですね。なので、何かをするときには、まずアプリケーションの展開作業が必要になるわけです。 今回の作業では、実はアプリケーションは必要ありません。単に Windows Azure 上の OS を踏み台にするだけですから。けれども、上記のような設計になっているので、ダミーとなるアプリケーションを作成して展開してあげる必要があるのです。 |
ということで、ダミーアプリを作りましょう。
① Visual Studio を起動する
スタートメニューから、Microsoft Visual Web Developer 2010 Express を右クリックして、「管理者として実行」を選択してください。

Visual Studio が起動したら、スタートページで [ファイル]-[新しいプロジェクト] を選択します。

② Azure アプリ用のテンプレートを選択する
「新しいプロジェクト」ウィンドウの右側には [Visual Basic] と [Visual C#] という2つのノードが表示されますが、好きなほうを開いてください。今回は Visual C# を選択していますが、どうせコードは書きませんから関係ありません。
そんなことよりも、その配下にある「Cloud」が重要です。「Cloud」を選択し、中央のペインに「Windows Azure Project」が表示されていることを確認したら「OK」をクリックします。プロジェクトのファイル名も、何でも構いません。どうせダミーのアプリですから。

最後に、プロジェクトに含めるロールインスタンスを選択するのですが、ここも何も考えず「ASP.NET Web Role」を選択し、「>」ボタンをクリックしてください。すると、以下のように表示されているはずです。

問題が無ければ [OK] をクリックしてください。なんとなく以下のように表示されていれば、OKです。

③ Windows Azure Connect のセキュリティトークンを取得する
今回はコードは一切書く必要がありません。そのかわり、Windows Azure Connect を有効にするためのセキュリティトークンを、構成ファイルに埋め込む必要があります。ここで埋め込んだセキュリティトークンがアプリケーションとともにアップロードされ、Windows Azure の OS 本体に適用されます。なんだか今までと文化が違うので変な感じですが、そんなもんなんだな~と思ってください。
そのセキュリティトークンは Windows Azure ポータル で確認することができます。
まずは、Windows Azure ポータル windows.azure.com を開いて、画面左下にある「Virtual Network」をクリックしてください。

次に、画面右上の「Get Security Token」をクリックします。

すると、以下のようなポップアップが開きます。ここに書かれている英数字の羅列が噂の「セキュリティートークン」です。「Copy Token to Clipboard」をクリックして、クリップボードに一時的にコピーしてください。

④ セキュリティトークンをアプリケーションに埋め込む
これもぜーんぜんたいした話ではありません。
Visual Studio の右側に表示されている「ソリューションエクスプローラー」から、「ロール」の下にある「WebRole1」というノードを見つけてください。こいつを右クリックして「プロパティ」を選択します。

すると、WebRole1のプロパティ画面が開くので、「仮想ネットワーク」をクリックしてください。以下のような画面が開きます。そこで、「Windows Azure Connect のアクティブ化」をチェックし、その下のテキストボックスに先ほどコピーしたセキュリティトークンを貼り付けます。

これで、Windows Azure Connect の有効化に関する設定は完了です。
⑤ リモートデスクトップを有効にする
もうちょっとだけ設定が必要ですので頑張ってください。
今回の目的は、Windows Azure 上の OS をお客さま先への踏み台にするわけですから、リモートデスクトップで一度 Windows Azure に入り込めなくてはなりません。Windows Azure では規定でリモートデスクトップが無効になっているので、これを有効化するための設定を埋め込む必要があります。これも、Visual Studio で行います。面倒ですけど頑張りましょう。
Visual Studio の右側にある「ソリューションエクスプローラー」から作成中のプロジェクト(ここでは WindowsAzureProject9)を右クリックして [発行] を選択します。「発行」は他にもあるので、別の「発行」を選択しないように気を付けてください。

「Windows Azure プロジェクトの配置」画面が表示されるので、「サービスパッケージだけを作成」を選択し、さらに一番下にある「リモートデスクトップ接続の構成」をクリックしてください。

| <参考>「サービスパッケージだけを作成」について 「Windows Azure プロジェクトの配置」画面にある「Windows Azure プロジェクトを Windows Azure に配置します」は、アプリケーションを Visual Studio から 直接 Windows Azure 上に展開する際に使用します。 しかし、一般的に IT Pro のみなさんにとっては、それはちょっと勘弁してほしいですよね。つまり、開発者が自分の知らないところでアプリケーションを展開してしまうのはやめてほしいと考えるのではないかと思います。 そこで、「サービスパッケージだけを作成」を使用してパッケージファイルだけ作成し、展開は IT Pro が Winodws Azure ポータルから実施する...これがおそらく当面のスタンダードな手順かと思います。 |
[リモートデスクトップの構成] をクリックすると、以下のように「リモートデスクトップ構成」画面が表示されます。ここで「すべてのロールの接続を有効にする」をチェックしてください。

次に、リモートデスクトップに使用するための証明書を作成します。オンプレミスの Windows Server に接続する場合には、自動的に証明書が作成されて使用されるので意識することはあまり無いのですが、Windows Azure の場合には証明書の管理方法が特殊(言い換えれば普通のWindows Server と比較してセキュア)なこともあり、自分で準備してあげる必要があります。
「証明書」といっても別に構える必要はありません。この画面でちゃちゃっと簡単に作成できます。
プルダウンを開き、 <作成...> を選択してください。既に一覧に証明書が表示されているかもしれませんが、これらは無視して結構です。

[証明書の作成] 画面が開くので、証明書の識別名を入力してください。何でも結構です。気にせず入力しちゃってください。今回は「certificate for RDS」と入力しました。

[OK] をクリックすると元の画面に戻り、いま作成した証明書が選択されています。

ここまでの作業で、「certificate for RDS」という名前の証明書が作成されて、ローカルの個人ストアに格納されました。
でも自分が証明書を持っているだけでは意味が無く、リモートデスクトップサービスを提供するサーバー側(つまり Windows Azure 側)に格納しておかなければなりません。そこで、この証明書をファイルに保存しておきます。保存した証明書は後で使います。
上の画面の [表示...] をクリックしてください。
すると、いま作成した証明書が表示さるので、「詳細」タブをクリックし、さらに「ファイルのコピー」をクリックします。


証明書のエクスポートウィザードが表示されるので、以下のような流れで PFXファイルを作成してください。途中証明書に埋め込むパスワードの入力が必要ですので、忘れずに覚えておいてください。また、エクスポートした PFX ファイルはあとで Windows Azure ポータル で使用しますから、保存場所を忘れないでください。
→
→
→
→
→
最後にリモートデスクトップでログオンするための ユーザーID とパスワード、そしてアカウントの有効期限を指定します。ここで指定したユーザーIDは、Windows Azure 上の OSで、以下のグループに所属し、リモートデスクトップへのログオン権限が与えられます。
- Administrators
- Windows Azure Remote Access Users
なお、有効期限にはくれぐれも注意してください。既定では 1か月 しか与えられません。

全て指定したら OK をクリックしてください。さらに、Windows Azure プロジェクトの配置 画面でも [OK] をクリックしましょう。

すると、以下のように、作成されたパッケージファイルが表示されます。cspkg と cscfg という2つのファイルがあることを覚えておいてください。あと、作成されたパスも覚えておいてください。あとで使います。

以上でダミーパッケージに作成は完了です。
5. Windows Azure にサービスを作成する
Windows Azure 未体験の方は混乱すると思うのですが、ここで言う「サービスの作成」とはオンプレミスで言うところの「OSの準備」です。
まずは、Windows Azure のポータルに移動してください。
画面左下のメニューから「Hosted Services, Storage Accounts & CDN」をクリックし、さらに左中央の「Hosted Services」をクリックしてください。すると、画面の左上に「New Hosted Service」ボタンが表示されるのでクリックします。

今度は[Create a new Hosted Service] ウィンドウが表示されるので、必要な情報を入力します。この画面では、前回までに作成した証明書とパッケージを指定します。

① このサービスの識別名を入力します。なんでもOKです。日本語でもかまいません。
② このサービスのURLの一部となるホスト名を指定します。世界で唯一でなければなりません。重複している場合には警告が出ますので、修正してください。指定したホスト名に .cloudapp.net というサフィックスが付加されてアプリケーションのURLとなります。左の例では、fumidai.cloudapp.net がこのサービスのURLです。
③ サービスをホストするデータセンターの場所を指定します。通常は East Asia(香港)をお勧めするのですが、今回はあえて「North Central US」を選択してください。Windows Azure Connect ではリレーサービスと呼ばれる中継サーバーを使用するのですが、現在はプレビュー版であるため North/South Central US に設置されているようなのです。よって、できるだけリレーサービスに近い場所にサービス展開したほうが、レスポンスが良くなります。
④ サービスを作成すると同時に、アプリケーションも展開するかどうかを指定します。今回は既にアプリケーションを作成済なので、一緒に展開してしまいましょう。よって「Deploy to Production environment」を選択します。さらに、その下にある「Start after successful deployment」もチェックしておきます。
⑤ 展開後のインスタンスの名前を指定します。これもなんでもかまいませんが、わかりやすい名前にしておきましょう。
⑥ 展開するパッケージを指定します。ここには、先ほど作成したアプリケーションを指定します。「Browse Locally」をクリックして、作成したパッケージファイル(.cspkg)を選択してください。
⑦ 展開するパッケージの構成ファイルを指定します。「Browse Locally」をクリックして、先ほど作成した構成ファイル(.cscfg)を選択してください。
⑧ 先ほど保存した証明書を指定します。「Add Certificate」をクリックすると、以下のような画面が表示されるので、PFX ファイルを指定します。このとき、保存時に指定したパスワードを指定します。

すべて完了したら、[OK] をクリックすると、パッケージファイルとサービス証明書が Windows Azure 上にアップロードされるとともに、リモートデスクトップによる接続、そして Windows Azure Connect が有効になります。
アップロード直前に以下のワーニングが表示されることがあります。これは、「インタンスが1つじゃ信頼性が低くなっちゃうよ?」という警告です。今回は無視してかまいません。

アップロードが完了すると、プロダクションのための処理が行われます。全て完了するまでに15分程度を要するので、一休みしておいてください。

処理が完了すると、上の画面のように Ready となります。
以上でアプリケーションの展開は完了です。残るは、Windows Azure Connect の設定だけです。もう少し頑張りましょう!
6. Windows Azure Connect を設定する
Windows Azure Connect を使用するには、以下の2つの作業をおこないます。
- 通信を行いたいコンピューターに Windows Azure Connect エンドポイントソフトウェア をインストールする
- エンドポイントソフトウェアをインストールしたコンピューターとAzure上のインスタンス(ロール)をグルーピングする
今回は、以下のような環境を作成します。自宅から複数のお客さま先に乗り込むイメージです。

① エンドポイントソフトウェアのインストール
エンドポイントソフトウェアとは、要はエージェントのようなものです。このソフトウェアがインストールされると、Windows Azure Connect のリレーサービスと通信するための仮想ネットワークカードが作成され、リレーまでの VPN を張ってくれます。また、Windows Azure Connect 専用の DNS に仮想ネットワークカードのアドレスを登録してくれます。
ということで、インストールを開始しましょう。なお、Winodws Azure 上のインスタンスにはパッケージのアップロードと同時にインストールされますので、手動で行う必要はありません。
Windows Azure Portal を開いて、画面の下にある「Virtual Network」をクリックしてください。
画面の左上にある「Install Local Endpoint」をクリックします。

すると、以下のようにソフトウェアのURLが表示されます。URLの引数としてセキュリティトークンが与えられていることがわかります。「Copy link to Clipboard」をクリックして、このURLをコピーします。

ブラウザーにコピーしたURLを張り付けて実行すると、ソフトウェアがダウンロードされて以下のようにインストーラーの実行をするか否かを問われます(画面は IE9 です)ので、「実行」をクリックしてインストールを開始します。「保存」してから実行しても問題ありません。

実行すると、以下のように言語の選択画面が表示されますが、現在はプレビュー版のため「English」しかサポートされていません。このまま次に進んでください。

インストールは30秒程度で完了します。
インストールが完了すると、タスクトレイに Windows Azure Connect エンドポイントソフトウェアのアイコンが表示されます。まだ構成が完了していないため、黄色い「!」マークが表示されていることがわかります。

ここまでの作業をすべてのコンピューターで行います。今回の構築例であれば、「自宅のPC]「お客様Aのサーバー」「お客様Bのサーバー」の3か所です。URLさえ知っていればインストールはできますので、メールにURLを張り付けてお客様に実行していただく...といったことも十分可能でしょう。なお、インストールした後は再起動してください。
② グループを構成する
Windows Azure ポータルで、「Virtual Network」をクリックしてください。
画面の左上に表示されている「Activated Endpoint」をクリックすると、エンドポイントソフトウェアがインストールされているコンピューターおよびロールインスタンスの一覧が表示されます。いまエンドポイントソフトウェアをインストールしたコンピューター、および先ほどWindows Azure 上に展開したロールインスタンスが表示しているか確認してください。もし表示されていない場合には、コンピューターを再起動してみてください。

表示されていることを確認したら、画面左上の「Create Group」をクリックします。

すると、以下のようなグループ作成用の画面が表示されます。

i. グループ名です。なんでもかまいません。
ii. グループの詳細です。適当にどうぞ。
iii. エンドポイントソフトウェアをインストールしたコンピュータの一覧から、このグループに所属させたいコンピューターを選択します。今回の例では「自宅」「企業A」「企業B」の3つのコンピューターをここに所属させます。ほかにも構成の方法はあるのですが、今回は最もシンプルな構成を選択しました。
iv. iii. で所属されたコンピューター間の通信を可能とするかどうかの設定です。チェックすると可能になりますが、今回はその必要は無いので、チェックしません。もし、「自宅」と「企業A」だけであれば、このチェックによって通信を可能にするという選択もありです。
v. グループに所属させるロールインスタンスを選択します。先の作業でアプリケーションをアップロードしたロールインスタンスを選択してください。
以上の設定を完了したら、それぞれのコンピューターにインストールされたエンドポイントソフトウェアを「リフレッシュ」して、構成データを最新の状態にします。リフレッシュするにはタスクトレイに表示されている、エンドポイントソフトウェアを右クリックして「Reflesh Policy」を選択します。

Reflash Policy を選択すると、以下のような画面が表示されます。Last Policy Update at .... を見て、構成ポリシーが最新の状態になったかどうかを確認してください。

ポリシーが適用されると、アイコンは以下のように表示されます。

以上ですべての設定が完了です。お疲れ様でした。
7. 使ってみる
さっそく使ってみましょう。
① Windows Azure 上のロールインスタンスにリモートデスクトップでログオンす��
Windows Azure ポータルを開き、画面の左下から「Hosted Services, Storage, Accounts & CDN」をクリックします。
画面左上から「Hosted Services」を選択し、先ほど作成したロールインスタンスを選択します。

ロールインスタンスを選択すると、画面の上部にある「Connect」ボタンが有効になるので、これをクリックします。

すると、rdpファイルを開くかどうかを問うダイアログが表示されるので、「ファイルを開く」をクリックします(以下の画面は IE9)。

これ以降は、もうおなじみの操作です。ダミーアプリケーションの作成時に設定した リモートデスクトップサービスの「ユーザーID」と「パスワード」を使用してログオンしてください。

以下はリモートデスクトップで「fumidai.cloudapp.net」に接続しようとしているところです。

うまく接続できれば、Azure 上に展開したインスタンスのデスクトップ画面が表示されます。

② ネットワーク構成を確認する
ロールインスタンスに接続できたら、DNS の構成が完了していることを確認します。
コマンドプロンプトを開いて、オンプレミス側(自宅、企業A、企業B)のそれぞれのコンピューターに ping をうってください。ping をうつ際のコンピューター名は、オンプレミスで使用しているママの名前で大丈夫です。以下のように、IPv6のアドレスに解決されて応答が帰ってくれば問題はありません。さほど早くはありませんが、おおむね 300 ms 程度で応答がかえってくるはずです。現時点では、データセンターをアジアにした場合、応答時間は 600~800ms 程度に増えてしまいます。

③ リモートデスクトップでオンプレミスに入り込む
名前解決が問題なければ、ロールインスタンス上で「mstsc」を起動し、オンプレミスに接続してみてください。

あ、もちろん、オンプレミスではリモートデスクトップの接続を許可しておく必要があるので、この点は事前に行っておいてください。
以上です。
いかがでしょう?はじめはちょっと面倒ですが、慣れてしまえばどうってことないですよね??
高価な VPN や KVM を導入しなくても、Windows Azure Connect を使用すると簡易的なメンテナンス経路を構築することができます。
是非とも活用してください。