Azure App Service のオンプレミス接続

Azure App Service は、Web アプリケーションを実行するための PaaS です。数秒で作成可能で、コンテンツを配置すればすぐに Web サーバーや API サーバー、更にはモバイル向けのサーバーとして利用できます。OS やアプリケーション ランタイムはマイクロソフト側で管理されているため、バックアップやサーバーのスケーリングを含め、運用に関する作業を最小限にすることができます。

Azure App Service は、仮想マシンと異なり、仮想ネットワーク不要ですぐに作成できるため、同じ PaaS のデータベースである SQL Database を利用することで、最短でシステムを構築することができます。ですが、オンプレミスの既存システムとの連携が必要な場合も多々あります。その時には、仮想マシンを利用しなければならないでしょうか? もちろん、そんなことはありません。Azure App Service は、オンプレミスとの接続オプションを提供しているので、オンプレミスの既存システムとも連携可能です。

ここでは、Azure App Service のオンプレミス接続について紹介します。

※本情報の内容(添付文書、リンク先などを含む)は、作成日時点でのものであり、予告なく変更される場合があります。

1) 接続の選択肢

Azure App Service からオンプレミスのシステムと連携するには、以下の3つの方法のいずれかを利用します。
※どの方法も Azure App Service → オンプレミス の接続で、オンプレミス → Azure App Service ではない点は注意して下さい。

① ハイブリッド接続

オンプレミス側の Windows 環境に、”ハイブリッド接続マネージャ” と呼ばれるエージェントをセットアップし、このエージェントを介して接続します。VPN 等のネットワーク設定が不要で容易に環境構築ができ、ファイアウォールの中にあるサーバーに対しても接続が可能です。接続先が複数(200まで可能)のオンプレミス環境になる場合等に便利です。

※現段階では、利用前にクラシック ポータルにて、BizTalk サービスのハイブリッド接続を作成しておく必要があります。

appfig1

② VNET 統合

仮想ネットワークを介して VPN によりオンプレミスに接続します。これを利用するには、Azure App Service から “VNET統合” のポイント対サイト接続(SSL VPN)機能で仮想ネットワークに接続し、その仮想ネットワークのサイト対サイト接続機能を利用して、オンプレミスのシステムと接続することができます。また、オンプレミス側で Azure Web Apps へのルーティング設定をする必要があります。なお、ExpressRouteを利用することはできません。

※VNET 統合には、Standard プラン以上が必要です

appfig2

③ App Service Environment

①、② とは異なり、Azure App Service 自身を仮想ネットワーク内に配置し、仮想マシン同様、VPN もしくは ExpressRoute によりオンプレミスと接続することができます。こちらは、専用環境となるため、セキュリティ上、分離した環境が必要な場合や、高いスケーラビリティが要求される場合に向いています。

※App Service Environment には、Premium プランが必要です

appfig3

どの方式を選択するかは要件に依存しますが、オンプレミスのみではなく仮想ネットワークに接続するという意味でも利用される ② VNET 統合でのオンプレミス接続手順を解説します。なお、VPN デバイスのところはデバイス毎に設定方法が異なるため、ここでは、実際のデバイスを利用するのではなく、以下のように仮想ネットワークを別途作成し、その仮想ネットワーク内にあるサーバーにアクセスできる環境を Azure ポータルで構築する手順を解説します。

appfig4

2) Azure App Service VNET 統合での仮想ネットワーク接続

Web Apps から VNET 統合機能を利用して、仮想ネットワークに接続します。

2.1) 仮想ネットワーク作成

VNET 統合で接続する仮想ネットワークを以下のように作成します。各指定項目は必要に応じて変更して問題ありません。

【仮想ネットワーク1】

  • 名前:AzureVnet1
  • アドレス空間:10.0.0.0/24
  • サブネット名:subnet1
  • ゲートウェイ サブネット:10.0.0.240/28 ※仮想ネットワーク後にサブネット メニューから作成します
  • サブネット アドレス範囲:10.0.0.0/26

仮想ネットワーク作成後、以下のように仮想ネットワーク ゲートウェイを作成します。

【仮想ネットワーク ゲートウェイ】

  • 名前:AzureVnet1GW
  • ゲートウェイの種類:VPN
  • VPN の種類:ルートベース
  • SKU:Standard
  • 仮想ネットワーク:AzureVnet1
  • パブリック IP アドレス:新規作成

上記作成後、AzureVnet1GW のメニューから “ポイント対サイトの構成” を選択し、以下の設定を行います。

【AzureVnet1GW】

  • アドレスプール:172.16.0.0/24

2.2) Azure App Service の VNET 統合

Web Apps を以下のように作成します。

【Web App】

  • アプリ名:fumioswebvpn
  • App Service プラン:Standard: 1S ※VPN 統合には Standard 以上が必要です

作成後、fumioswebvpn のメニューから “ネットワーク” を選択し、”VNET 統合” の “セットアップ” を選択します。セットアップを選択すると、仮想ネットワークの一覧が表示され、仮想ネットワーク ゲートウェイで ”ポイント対サイトの構成” がされている仮想ネットワークのみ選択が可能になっています。2.1 で作成した “AzureVnet1” が選択可能になっているはずなので、”AzureVnet1” を選択します。

appfig5

構成終了後、”VNET 統合” の “構成するにはここをクリック” をクリックすると、以下のように接続状況が表示されます。

appfig6

AzureVnet1GW のメニューから “ポイント対サイトの構成” を選択します。正常にポイント対サイト接続が完了していると、以下のように “割り当て済み IP アドレス” に、Web Apps に設定された IP アドレスが表示されます。

appfig7

この段階で Azure の仮想ネットワークに接続されているため、仮想ネットワーク1 AzureVnet1 に配置されている仮想マシンにアクセスが可能になります。TCP と UDP をサポートしていますが、共有ディスクのマウントはできません。この制約は、プロトコル上の制約になるため、仮想ネットワークとは関係ないですが、SMB プロトコルを利用する Azure File の利用もできないので注意して下さい。

3) 追加した仮想ネットワークの接続

次に、オンプレミスと仮定した仮想ネットワーク2を作成し、仮想ネットワーク1と作成するとともに、ポイント対サイトで接続された Web Apps と仮想ネットワーク2へアクセス可能なようにルーティングを構成します。

3.1) 仮想ネットワークの作成

2.1 と同様に、仮想ネットワーク2 を作成します。

【仮想ネットワーク2】

  • 名前:Onpremise
  • アドレス空間:10.0.1.0/24
  • サブネット名:subnet1
  • ゲートウェイ サブネット:10.0.1.240/28 ※仮想ネットワーク後にサブネット メニューから作成します
  • サブネット アドレス範囲:10.0.1.0/26

仮想ネットワーク作成後、以下のように仮想ネットワーク ゲートウェイを作成します。

【仮想ネットワーク ゲートウェイ】

  • 名前:OnpremiseGW
  • ゲートウェイの種類:VPN
  • VPN の種類:ルートベース
  • SKU:Standard
  • 仮想ネットワーク:AzureVnet1
  • パブリック IP アドレス:新規作成

3.2) ローカル ネットワーク ゲートウェイの作成

通常、仮想ネットワーク間の接続であれば、接続設定をすることでルーティングが行われるため、その他の設定は不要ですが、オンプレミスと接続する際には、適正にパケットをオンプレミス側にルーティングするために、ローカル ネットワーク ゲートウェイの作成が必要になります(クラシック デプロイ モデルでは、ローカル サイトとして存在していました)。今回は仮想ネットワーク以外のポイント対サイトで利用されるアドレス空間のルーティングが必要になるため、仮想ネットワーク間の接続でもこのローカル ネットワーク ゲートウェイを利用します。

以下、2つのローカル ネットワーク ゲートウェイを作成します。

【ローカル ネットワーク ゲートウェイ (オンプレミス)】

  • 名前:OnpremiseNetwork
  • IP アドレス:仮想ネットワーク ゲートウェイ OnpremiseGW のパブリック IP アドレス
  • アドレス空間:仮想ネットワーク Onpremise のアドレス空間(10.0.1.0/24)

【ローカル ネットワーク ゲートウェイ (Azure)】

  • 名前:AzureNetwork
  • IP アドレス:仮想ネットワーク ゲートウェイ AzureVnet1GW のパブリック IP アドレス
  • アドレス空間:仮想ネットワーク AzureVnet1 のアドレス空間(10.0.0.0/24)
  • アドレス空間:仮想ネットワーク ゲートウェイ AzureVnet1GW のポイント対サイトのアドレス空間(172.16.0.0/24)

3.3) 仮想ネットワークの接続設定

双方の仮想ネットワーク ゲートウェイにて、接続設定を行います。接続設定を行うには、仮想ネットワーク ゲートウェイの “接続” メニューを開き、追加を行います。設定は以下の通りです。

【AzureVnet1GW の接続】

  • 名前:ToOnpremise
  • 接続の種類:サイト対サイト(IPSec)
  • 仮想ネットワーク ゲートウェイ:AzureVnet1GW
  • ローカル ネットワーク ゲートウェイ:OnpremiseNetwork
  • 共有キー:任意

【OnpremiseGW の接続】

  • 名前:ToAzure
  • 接続の種類:サイト対サイト(IPSec)
  • 仮想ネットワーク ゲートウェイ:OnpremiseGW
  • ローカル ネットワーク ゲートウェイ:AzureNetwork
  • 共有キー:任意

設定完了後、以下のように状態が “接続済み” になれば作業は終了です。

appfig8 appfig9

4) 接続確認

接続を確認するために、Onpremise 仮想ネットワーク内に以下のサーバーを立てます。

【接続先サーバー】

  • OS:Windows Server 2016
  • 役割:Web サーバー(IIS)

サーバーが立ち上がったら、上記仮想マシンの “ネットワーク インタフェース” メニューからローカル IP アドレスを確認します(例:10.0.1.4)

続いて、Web Apps の “コンソール” メニューを選択し、以下のコマンドを入力します。

【入力コマンド】

  • >tcpping 10.0.1.4:80

※:80 は省略可能です

以下のように "Connected to 10.0.1.4:80.." が表示されたら接続 OK です。もちろん、Web Apps 上のアプリケーションからも同様に接続可能なので、オンプレミス上のデータベース等への接続も可能です。

appfig10