Freigeben über


Azure Websites での Virtual Network との統合と Hybrid Connections の使用

このポストは、10 月 30 日に投稿された Using VNET integration and Hybrid connections with Azure Websites の翻訳です。

この記事では、リモートの MySQL データベースと連携する WordPress を Azure Websites で実行する方法について、2 つのセクションに分けてご説明します。最初のセクションでは、Azure Virtual Machines (VM) と Azure Virtual Network (VNET) でデータベースをホストし、VNET との統合と Hybrid Connections を使用して Azure VNET に安全に接続する方法を紹介します。ここでは VNET が既に存在し、その中で VM がプロビジョニング済みであることを前提とします。

2 つ目のセクションでは、オンプレミスのホスト環境でデータベースをホストし、Site-to-Site VPN と VNET との統合の併用によってアクセス可能な状態にする方法を紹介します。ここでも、同じ既存の VNET を使用します。オンプレミスの場合は Hybrid Connections を機能させるうえで VNET の場合と違いはないため、ここでは Hybrid Connections の説明は割愛します。

現時点では、これらの接続機能はいずれもプレビュー段階です。つまり、機能は今後も引き続き改良され、より使いやすくなるということです。もし、アプリケーション エンドポイントがインターネットからアクセス可能な状態になっても問題がない場合は、さらに別の選択肢もあります。特別な機能もいりません。

MySQL データベースを作成する

WordPress をセットアップする前に、WordPress と連携するデータベースを作成する必要があります。デモ目的で作成するため、ここでは最も簡単な方法を使用しますが、これは実際の MySQL データベースの作成方法ではありません。このデモで見ていただきたいのは、あくまでリモート データベースと連携する Websites のセットアップ手順です。今回、プロビジョニング済みの VM としては、Windows Server 2012 R2 がインストールされた VM (2 コア、3.5 GB のメモリ) を使用します。

VM と VNET を初めて作成する場合は、必ず最初に VNET を作成してから VM を作成してください。これは VM の作成時に VNET を指定する必要があり、VM の作成後には VNET を変更できないためです。Azure Virtual Network に関するより基礎的な知識が必要な場合は、次の手順に進む前にこちら (https://azure.microsoft.com/ja-jp/documentation/services/virtual-network/) を参照してください。

リモート デスクトップを使用して、VM にログオンします。リモート デスクトップの rdp ファイルをダウンロードするには、次の図のように新しいポータルか以前のポータルを使用します。

VM にログオンしたら、https://dev.mysql.com/downloads/mysql/ (英語) から MySQL のインストーラーをダウンロードして実行します。

インストーラーは問題なく機能し、使用するポートのファイアウォールが無効になります。WordPress を使用するには、データベースと、そのデータベースにアクセスするためのアカウントが必要です。最も簡単なのは、C:\Program Files\MySQL\MySQL Server 5.6\bin\ ディレクトリでコマンド シェルを開く方法です。

コマンド シェルから次のコマンドで MySQL にログインします。

 mysql –u root –p<password>

今回の場合、コマンドは次のようになります。

 mysql –u root –pvpndemo

ここではデモの目的で簡略化するために root を使用していますが、重要なシステムでは使用しないようにしてください。次のコマンドを使用して、データベースを作成します。

 CREATE DATABASE <database name>;

ここではデータベース名に hybrid を使用するため、コマンドは次のようになります。

 CREATE DATABASE hybrid;

次のコマンドを使用して、データベースの使用権限をアカウントに付与します。

 GRANT ALL PRIVILEGES ON *.* TO ’root’@’%’ IDENTIFIED BY ’vpndemo’ WITH GRANT OPTION; FLUSH PRIVILEGES;

mysql シェルを終了します。これでデータベースがセットアップされました。リモート デスクトップ セッションを終了する前に、VM の IP を取得します (IP が不明な場合)。これにはシェル プロンプトから ipconfig を使用すると簡単です。これで IP が 10.0.1.4 であることがわかりました。これがインターネットでルーティング可能な IP アドレスではないことは明らかです。

WordPress をインストールする

ここではギャラリーの WordPress を使用するのではなく、すべてをゼロから構築することにします。WordPress をこちら (https://ja.wordpress.org/latest-ja.zip) からダウンロードします。WordPress の最新バージョン 4.0 の zip ファイルです。

次に、Azure Websites で空の Websites を作成します。新しい Azure 管理ポータル プレビュー (https://portal.azure.com) にログインし、左下にある [New] アイコンをクリックして Websites 作成画面を表示します。今回は thirdVPNdemoSite という名前の Websites を作成します。

Websites を作成する前に、すべての構成要素を配置するリージョンについて必ず検討してください。今回のデモのような環境を構築する場合は、Websites、VNET、VM をすべて同じリージョンに配置する必要があります。あるリージョンの Websites から別のリージョンの VNET に接続することも可能ですが、これは少なくともパフォーマンス上の理由から避けるようにしてください。

WordPress のアップロードと操作には、こうした作業を非常に簡単に行える Kudu コンソールを使用します。作成した Websites にブラウザーからアクセスし、URL の Websites 名の後に「.scm」を追加して、Websites の SCM ページを開きます。ここでの Websites は「thirdVPNdemoSite.azurewebsites.net」なので、SCM サイトは「thirdVPNdemoSite.scm.azurewebsites.net」になります。SCM ページを開いたら、デバッグ コンソールに移動して [CMD] または [Powershell] を選択します。

D:\home\site\wwwroot に移動します。これが WordPress を配置するディレクトリです。配置するには、シェル コマンドかナビゲーターの使用をお勧めします。WordPress をコピーするには、Kudu コンソールのエクスプローラー ビューに zip ファイルをドラッグします。[Drag here to upload and unzip] というボックスが表示されるので、そこに zip ファイルをドラッグします。これで wwwroot ディレクトリ内に WordPress のディレクトリが作成されます。ここで、アプリケーションの指定がない URL のルートに WordPress サイトを配置します。それには、WordPress のディレクトリに格納されていたコンテンツを 1 つ上の階層に移動する必要があります。これは WordPress のディレクトリに移動して次のコマンドを実行すれば簡単です。

 move * ..

次に、データベースと連携するように WordPress を構成する必要があります。wwwroot ディレクトリで wp-config-sample.php ファイルを wp-config.php としてコピーしてから、このファイルを編集します。このファイルに記載されている中で特に重要なのは、データベースにアクセスするための情報です。このファイルを編集するには、Kudu エクスプローラー画面で編集用のペンのアイコンをクリックします。

上の図のように、データベース名、ユーザー名、パスワード、ホスト名などの項目を変更します。Websites と VNET の間の接続はまだ確立していませんが、これを行う前に、エラーになる例をお見せしましょう。ブラウザーで Websites にアクセスしようとすると、WordPress からデータベースにアクセスできないため、エラー メッセージが表示されます。

今回は Chrome を使用していたため上記のメッセージが表示されましたが、他のブラウザーではメッセージの内容が異なります。たとえば IE では「The website cannot display the page」と表示されます。

VNET との統合をセットアップする

Websites からデータベースへの接続を可能にするために、ここではまず VNET との統合を利用してから、その後 VNET との統合を停止して、Hybrid Connections で同じデータベースにアクセスする方法を説明します。VNET を有効にするために、Azure 管理ポータル プレビューの Websites のビューに戻り、下に移動して現在の VNET の設定を表示します。

Websites の料金レベルが Standard になっていない場合は、最初にその変更を行います。Standard よりも低い料金レベルに設定されたままだと、コストが余計にかかることになります。Standard 以外のプランのまま VNET セクションをクリックすると料金レベルの画面が表示されるので、この画面でプランを変更できます。次に、Websites に VNET を追加します。VNET セクションを再度クリックすると、Websites と統合する VNET を選択できます。

VNET を選択できない場合は、VNET で Dynamic Routing ゲートウェイが作成されていないか、Point-to-Site 接続が有効になっていないか、またはその両方が当てはまると考えられます。
VNET で Point-to-Site が有効になっていない場合は、Azure 管理ポータル プレビューで VNET に移動して Point-to-Site 接続を有効にする必要があります。ただし、この後のセクションの内容 (Site-to-Site VPN 接続に関連) を試す場合は、Point-to-Site 接続で使用する IP 範囲がオンプレミスの IP 範囲と競合しないように注意してください。今回はオンプレミスで 192.168.0.0 を使用しているため、ここでは 10.0.0.0 の IP アドレスを使用します。

ゲートウェイをセットアップしていない場合は、ゲートウェイも追加する必要があります。ゲートウェイをセットアップしていても Point-to-Site 接続を有効化できない場合は、そのゲートウェイが Static Routing ゲートウェイであると考えられます。その場合は Dynamic Routing ゲートウェイをセットアップしてください。

これですべてセットアップされたので、Websites と統合する VNET を選択します。Websites と VNET の統合を有効にすると Websites のシステムによって証明書が交換され、Websites と VNET の間に限り、すべての通信でセキュリティが確保されるようになります。緑色のチェックマークは、サイトが接続されていることではなく、証明書が同期されていることを表しています。VNET 向けに設定された Websites の証明書は、VNET の証明書タブで確認できます。

DNS や Site-to-Site VPN の追加などによって、証明書の再同期が必要になる場合があります。証明書の再同期が必要な場合は、[Virtual network] をクリックして、ページの上部にある [Sync Connection] アクションをクリックします。
これで Websites にアクセスすると、データベースに接続されます。WordPress の初回セットアップ時に表示される、言語選択画面が表示されるはずです。

上記の画面が表示されれば接続は成功です。

次に、Hybrid Connections でこの手順を再び実行します。それにはまず VNET との統合を中断する必要があります。サイト構成の Virtual Network 画面に移動し、[Disconnect] を選択します。ここでブラウザーから Websites にアクセスすると、先ほど表示された画面で同じデータベースが利用できなくなっていることがわかるはずです。

Hybrid Connections をセットアップする

VNET との統合を利用すると、VNET 内のリソースや VNET 経由で利用できる多くのリソースにアクセスできますが、Hybrid Connections ではエンドポイントあたり 1 つのアプリケーションにしかアクセスできません。ただし、VNET の外のアプリケーションにもアクセスできるというメリットがあります。つまり、必要に応じて、別個のネットワークに存在する個々のアプリケーションにアクセスできるということです。1 つの Websites は 1 つの VNET としか統合できませんが、多くの Hybrid Connections エンドポイントと統合できます (ただし、利用中の BizTalk Services でカバーされるエンドポイントの数に限られます)。

Hybrid Connections を有効にするには、VNET セクションの横にある Websites の Hybrid Connections 画面に移動し、エンドポイントに対する新しい接続を作成します。この際、BizTalk Services のアカウントが必要になるため、お持ちでない場合は作成してください。現在、この画面から作成できるのは無料の BizTalk アカウントのみです。無料アカウントでは、5 つまでのエンドポイントを任意の数の Websites にまたがって使用できます。エンドポイントをさらに追加するには、Azure 管理ポータル プレビューで Biztalk Services のプランを変更します。

Hybrid Connections 接続が作成されると、未接続の状態であることが表示されます。VNET との統合では、統合の確立に Point-to-Site 接続テクノロジが使用されますが、Hybrid Connections ソリューションでは、以前「ポート ブリッジ」と呼ばれていたテクノロジに似たテクノロジが内部的に使用されます。このテクノロジの一部は、Hybrid Connections を実現するために流用されています。では、そのしくみをご説明しましょう。Web サイトはリレー サーバーに接続します。また、エンドポイントと Azure の両方にアクセスできるエージェントも、いずれかのホストにインストールします。両方がリレー サーバーに接続すると、それらの接続を通じて 1 つのエンドポイントへのトンネルが作成されます。エンドポイントのホストとポートの組み合わせを指定する際は、リレー エージェントがインストールされているホストから名前解決できるホスト名を使用することが可能です。そうすれば、Web サイトでは同じホスト名を使用してアプリケーション エンドポイントにアクセスできます。このため、オンプレミスから Azure Websites への Web サイトの移行と切り替えを行いながら、オンプレミスのときと同じ接続文字列を引き続き使用することが簡単になります。

接続を完了するには、Hybrid Connections エージェントをインストールする必要があります。次の手順は、アプリケーションをホストしている VM か、データベースにアクセスできる VNET 内の別の VM から行う必要があります。今回は、データベースをホストしているものと同じ VM を使用します。IE ブラウザーを開き、Azure 管理ポータル プレビューにログインします。Websites、Hybrid Connections の順に画面を移動します。Hybrid Connections の画面で接続をクリックします。

ここで IE を使用したのは、次の手順の操作が Firefox や Chrome よりもスムーズに行えるためです。[Listener Setup] をクリックし、エージェントのインストーラーにアクセスします。

エージェントをインストールするには、[Install and configure now] をクリックします。インストーラーではいくつかの項目をクリックする必要がありますが、これだけでエージェントをインストールできます。エージェントのインストール後は、エージェントが Azure のリレー サーバーに接続し、エンドポイントへの接続を開きます。VNET の場合とは異なり、画面には接続状態が表示されますが、これはエンドポイントに接続できることではなく、Web サイトがエージェントと接続されていることを示しています。冗長化のために複数のエージェントが必要な場合は、必要な場所に複数のインスタンスをインストールできます。エージェントのインスタンスを複数インストールしても、利用可能なエンドポイントの数が減ることはありません。

ここで、ブラウザーから Websites にアクセスすると、VNET の接続後に表示されたものと同じ WordPress の言語選択画面が表示されます。このセクションの説明はこれで終わりですが、最後に Hybrid Connections の画面に移動して、Websites からエンドポイントの登録を解除します ([Unregister] をクリック)。この操作を行っても [Delete] を使用しない限りエンドポイントは削除されませんが、Websites からは切断されます。この時点でブラウザーから Websites にアクセスすると、先ほどのエラー画面が再び表示されます。

これでこのセクションの説明を終わります。ここでは VNET 内のリソースに安全にアクセスする方法をご説明しました。なお、Hybrid Connections の説明はどのネットワークにも応用できます。Hybrid Connections でオンプレミスのリソースにアクセスする場合、特別な準備は不要です。一方、VNET との統合の場合は、VNET 経由でオンプレミスのリソースにアクセスするには、VNET で Site-to-Site VPN をセットアップする必要があります。

オンプレミス データベース: Site-to-Site VPN のセットアップ

既存の VNET で Site-to-Site VPN をセットアップするには、ローカル ネットワークを追加し、それを VNET と関連付ける必要があります。これは、この目的で使用できる、インターネット アドレスでアクセス可能なゲートウェイ サーバーが存在することを前提としています。インターネット アドレスでアクセス可能なゲートウェイが存在しない場合は、前述の Hybrid Connections を使用する方が簡単です。

ここではインターネット アドレスでアクセス可能なゲートウェイが存在すると仮定して、まずローカル ネットワークを作成します。ポータルに移動し、左下にある [New] アイコンをクリックします。[Network Services]、[Virtual Network]、[Add Local Network] の順に移動します。

ローカル ネットワーク名、VPN デバイス IP アドレス、オンプレミス ネットワークの IP 範囲を指定します。これでローカル ネットワークが作成されたので、VNET に関連付けます。VNET の構成タブに移動します。Site-to-Site 接続の画面に移動する前に、ローカル ネットワークを 1 つ以上作成する必要があります。[Connect to the local network] チェック ボックスをクリックし、使用するローカル ネットワークを選択します。

これでダッシュボードにローカル ネットワークが表示されますが、接続はまだ確立されていません。次の手順はオンプレミスのゲートウェイ サーバー上で行う必要があります。Azure 管理ポータルのネットワークのダッシュボードで、画面の右側にある [Download VPN Device Script] をクリックします。以下のような画面が表示されます。

ここでは Windows Server 2012 R2 の RRAS を使用しているため、上記の項目を選択して確定し、VPNDeviceScript.cfg ファイルをダウンロードします。このファイルは PowerShell スクリプトで、ゲートウェイ サーバー上で実行する必要があります。スクリプトを実行すると、ネットワークのダッシュボードに接続が確立済みであると表示されます。この変更処理には数分かかるため、すぐに変更が反映されなくても問題ありません。

これですべてのセットアップが完了したように見えますが、もう 1 つネットワーク構成要素が残っています。現時点では、Site-to-Site VPN を有効にしても VNET の Point-to-Site 接続用のルートはセットアップされません。Websites からオンプレミスのシステムに要求を送信することはできますが、応答を受信するには次の手順を行う必要があります。
手順は簡単です。Websites で使用している Point-to-Site 接続にトラフィックを返すためのルートをオンプレミス側で追加するだけです。ここでは、RRAS で次のように静的ルートを追加します。

Point-to-Site の IP 範囲を覚えていない場合は、Azure 管理ポータルの Virtual Network セクションの [Configure] タブに移動します。Point-to-Site の IP ブロックの中で、どの IP が Websites で使用されるかを知る手段はないため、IP ブロック全体に対応するルートをセットアップします。

これで、Websites からオンプレミス ネットワークのリソースにアクセスできるようになりました。デモの締めくくりとして、ネットワーク内のホストを 1 台選んで、この記事の冒頭で行ったように MySQL をインストールします。このとき、データベースの作成とアカウントへのアクセス権の付与を忘れないでください。

Kudu コンソールに移動し、wp-config.php ファイルを編集します。ホスト名と、新しいデータベースで変更したその他の項目を更新します。ここでは単純化するために、すべての項目を Azure Virtual Machines と同様に設定したので、異なるのはホスト名のみです。

先ほどと同じ状態になっていることを確認するために、Websites にアクセスします。[Error establishing database connection] というエラー メッセージが表示されれば成功です。さらに、Azure 管理ポータル (プレビュー) に移動して Websites を VNET と統合すると、言語選択画面が表示されるはずです。これで、VNET との統合によってオンプレミス データベースを使用できるようになりました。

トラブルシューティングとその他の情報

使用したいエンドポイントへのアクセス時に問題が発生する場合は、ツールを使用して接続をテストすることができます。セキュリティ上の制約のため、Kudu コンソールでは ping、nslookup、tracert といったツールは使用できませんが、2 つのデバッグ ツールが追加されています。1 つは、DNS の機能をテストできる nameresolver.exe というツールです。構文は次のようになります。

 nameresolver.exe hostname [optional: DNS Server]

また、TCP ping を実行する tcpping.exe というツールも追加されています。このツールでは接続をテストできます。構文は次のようになります。

 tcpping.exe hostname [optional: port]

TCP ping は特定のホストとポートにアクセスしますが、これは利点でも欠点でもあります。これらのツールはアプリケーションに到達できるかどうかの確認には最適ですが、一般的な意味でホストに到達できるかどうかの単純な確認には適していません。アクセスしようとしているポートでリッスンしているかどうかわからない場合は、netstat -a を使用して、アプリケーションが想定どおりのポートでリッスンしていることを確認してください。

私がこれまで経験した中で最も一般的な問題は、ファイアウォールに関するものでした。アプリケーションのポートにアクセスできない場合、最初に確認すべき点の 1 つが、ファイアウォールの構成です。MySQL をインストールする場合、MySQL のインストーラーによって、リッスンする 3306 番ポートが自動的に開きます。それでも問題が発生した場合、私はこの点を最初に確認します。

もう 1 つ確認すべき点は、Websites と VNET が一連の同じ情報を使用して動作していることです。証明書を同期する際、証明書以外にも、Websites と VNET の間では少量の重要な情報が交換されます。VNET で何らかの変更を行ったものの、最新の情報を使用して Websites を更新しなかったということがあり得ます。また、トラブルシューティングの 1 手順として、接続を再同期します。これが自動的に行われない理由の 1 つは、お客様が証明書の削除によって VNET のアクセスを簡単に無効化できるようにするためです。

制限事項

これらの統合機能によってさまざまなタイプの使用方法が可能になりますが、いくつか制限事項もあります。現時点では、これらのハイブリッド アクセス テクノロジは以下には利用できません。

  • Websites と Active Directory の統合
  • Websites と LDAP の統合
  • ドライブのマウント

また、利用可能な VNET との統合または Hybrid Connections の数についても制限があります。

  • Standard 料金レベルの Web ホスティング プランごとに、VNET との統合を 5 つまで利用できます。これらの 5 つの統合は、そのプランに含まれる任意の数の Websites で使用できます。
  • 無料の BizTalk Services では、Hybrid Connections のエンドポイントを 5 つまで利用できます。これらの 5 つのエンドポイントはご利用のすべての Websites で使用でき、その利用は Web ホスティング プランではなくサブスクリプションの範囲に限定されます。

Hybrid Connections および VNET との統合は現在いずれもプレビュー段階です。既に多くの機能が実装されていますが、一般提供に向けて今後も機能が向上する予定です。