オンプレミス データを使用してクロスクラウドをスケーリングするハイブリッド アプリをデプロイするDeploy hybrid app with on-premises data that scales cross-cloud

このソリューション ガイドでは、Azure と Azure Stack Hub の両方にまたがり、1 つのオンプレミス データ ソースを使用するハイブリッド アプリをデプロイする方法について説明します。This solution guide shows you how to deploy a hybrid app that spans both Azure and Azure Stack Hub and uses a single on-premises data source.

ハイブリッド クラウド ソリューションを使用することで、プライベート クラウドが持つコンプライアンス面でのメリットとパブリック クラウドが持つスケーラビリティとを融合することができます。By using a hybrid cloud solution, you can combine the compliance benefits of a private cloud with the scalability of the public cloud. また、開発者は、Microsoft デベロッパーのエコシステムを活用し、クラウド環境とオンプレミス環境にそのスキルを活かすこともできます。Your developers can also take advantage of the Microsoft developer ecosystem and apply their skills to the cloud and on-premises environments.

概要と前提条件Overview and assumptions

このチュートリアルに従うことにより、開発者がパブリック クラウドとプライベート クラウドにまったく同じ Web アプリをデプロイできるようにするワークフローを構築します。Follow this tutorial to set up a workflow that lets developers deploy an identical web app to a public cloud and a private cloud. このアプリは、プライベート クラウド上にホストされた、インターネットを介したルーティングが不可能なネットワークにアクセスできます。This app can access a non-internet routable network hosted on the private cloud. これらの Web アプリは監視され、トラフィックが急増すると、トラフィックをパブリック クラウドにリダイレクトするように DNS レコードがプログラムによって書き換えられます。These web apps are monitored and when there's a spike in traffic, a program modifies the DNS records to redirect traffic to the public cloud. 急増前の水準までトラフィックが減少すると、トラフィックは再びプライベート クラウドへルーティングされます。When traffic drops to the level before the spike, traffic is routed back to the private cloud.

このチュートリアルに含まれるタスクは次のとおりです。This tutorial covers the following tasks:

  • ハイブリッド接続の SQL Server データベース サーバーをデプロイする。Deploy a hybrid-connected SQL Server database server.
  • グローバル Azure 内の Web アプリをハイブリッド ネットワークに接続する。Connect a web app in global Azure to a hybrid network.
  • クラウド間スケーリング向けに DNS を構成する。Configure DNS for cross-cloud scaling.
  • クラウド間スケーリング向けに SSL 証明書を構成する。Configure SSL certificates for cross-cloud scaling.
  • Web アプリを構成してデプロイする。Configure and deploy the web app.
  • Traffic Manager プロファイルを作成し、クラウド間スケーリング向けに構成する。Create a Traffic Manager profile and configure it for cross-cloud scaling.
  • トラフィックの増加に関して Application Insights の監視とアラートを設定する。Set up Application Insights monitoring and alerting for increased traffic.
  • グローバル Azure と Azure Stack Hub の間で自動トラフィック切り替えを構成する。Configure automatic traffic switching between global Azure and Azure Stack Hub.

ヒント

ハイブリッドの柱の図Hybrid pillars diagram
Microsoft Azure Stack Hub は Azure の拡張機能です。Microsoft Azure Stack Hub is an extension of Azure. Azure Stack Hub により、オンプレミス環境にクラウド コンピューティングの機敏性とイノベーションがもたらされ、ハイブリッド アプリをビルドし、どこにでもデプロイできる唯一のハイブリッド クラウドが可能になります。Azure Stack Hub brings the agility and innovation of cloud computing to your on-premises environment, enabling the only hybrid cloud that allows you to build and deploy hybrid apps anywhere.

ハイブリッド アプリの設計の考慮事項に関する記事では、ハイブリッド アプリを設計、デプロイ、および運用するためのソフトウェア品質の重要な要素 (配置、スケーラビリティ、可用性、回復性、管理容易性、およびセキュリティ) についてレビューしています。The article Hybrid app design considerations reviews pillars of software quality (placement, scalability, availability, resiliency, manageability, and security) for designing, deploying, and operating hybrid apps. これらの設計の考慮事項は、ハイブリッド アプリの設計を最適化したり、運用環境での課題を最小限に抑えたりするのに役立ちます。The design considerations assist in optimizing hybrid app design, minimizing challenges in production environments.

前提条件Assumptions

このチュートリアルは、グローバル Azure と Azure Stack Hub についての基本知識があることを前提にしています。This tutorial assumes that you have a basic knowledge of global Azure and Azure Stack Hub. チュートリアルを開始する前に、より詳しい情報を確認しておきたい場合は、以下の記事をお読みください。If you want to learn more before starting the tutorial, review these articles:

このチュートリアルは、Azure サブスクリプションをお持ちであることも前提としています。This tutorial also assumes that you have an Azure subscription. サブスクリプションをお持ちでない場合は、開始する前に無料アカウントを作成してください。If you don't have a subscription, create a free account before you begin.

前提条件Prerequisites

このソリューションを開始する前に、次の要件を満たしてください。Before you start this solution, make sure you meet the following requirements:

  • Azure Stack Development Kit (ASDK) または Azure Stack Hub 統合システムのサブスクリプション。An Azure Stack Development Kit (ASDK) or a subscription on an Azure Stack Hub Integrated System. ASDK をデプロイするには、インストーラーを使用して ASDK をデプロイする方法の手順に従います。To deploy the ASDK, follow the instructions in Deploy the ASDK using the installer.

  • ご利用の Azure Stack Hub 環境に次のものがインストールされている必要があります。Your Azure Stack Hub installation should have the following installed:

    • Azure App Service。The Azure App Service. Azure Stack Hub のオペレーターと協力して、Azure App Service をご自分の環境にデプロイし、構成してください。Work with your Azure Stack Hub Operator to deploy and configure the Azure App Service on your environment. このチュートリアルでは、App Service で専用の worker ロールを少なくとも 1 つ利用できるようにすることが求められます。This tutorial requires the App Service to have at least one (1) available dedicated worker role.
    • Windows Server 2016 イメージ。A Windows Server 2016 image.
    • Windows Server 2016 と Microsoft SQL Server イメージ。A Windows Server 2016 with a Microsoft SQL Server image.
    • 適切なプランとオファー。The appropriate plans and offers.
    • Web アプリのドメイン名。A domain name for your web app. ドメイン名を持っていない場合、GoDaddy、Bluehost、InMotion などのドメイン プロバイダーから 1 つ購入できます。If you don't have a domain name, you can buy one from a domain provider like GoDaddy, Bluehost, and InMotion.
  • 信頼のおける証明機関 (LetsEncrypt など) から取得したドメインの SSL 証明書。An SSL certificate for your domain from a trusted certificate authority like LetsEncrypt.

  • SQL Server データベースと通信し、Application Insights をサポートする Web アプリ。A web app that communicates with a SQL Server database and supports Application Insights. GitHub から dotnetcore-sqldb-tutorial サンプル アプリをダウンロードできます。You can download the dotnetcore-sqldb-tutorial sample app from GitHub.

  • Azure 仮想ネットワークと Azure Stack Hub 仮想ネットワークの間のハイブリッド ネットワーク。A hybrid network between an Azure virtual network and Azure Stack Hub virtual network. 詳細な手順については、Azure と Azure Stack Hub を使用したハイブリッド クラウド接続の構成に関するページを参照してください。For detailed instructions, see Configure hybrid cloud connectivity with Azure and Azure Stack Hub.

  • Azure Stack Hub にプライベート ビルド エージェントが存在する、継続的インテグレーション/継続的デプロイ (CI/CD) のハイブリッド パイプライン。A hybrid continuous integration/continuous deployment (CI/CD) pipeline with a private build agent on Azure Stack Hub. 詳細な手順については、「Azure および Azure Stack Hub アプリケーションのハイブリッド クラウド ID を構成する」を参照してください。For detailed instructions, see Configure hybrid cloud identity with Azure and Azure Stack Hub apps.

ハイブリッド接続の SQL Server データベース サーバーをデプロイするDeploy a hybrid-connected SQL Server database server

  1. Azure Stack Hub ユーザー ポータルにサインインします。Sign to the Azure Stack Hub user portal.

  2. [ダッシュボード][Marketplace] を選択します。On the Dashboard , select Marketplace .

    Azure Stack Hub Marketplace

  3. [Marketplace][Compute](計算) を選択し、 [More](その他) を選択します。In Marketplace , select Compute , and then choose More . [More](その他) から [Free SQL Server License: SQL Server 2017 Developer on Windows Server] イメージを選択します。Under More , select the Free SQL Server License: SQL Server 2017 Developer on Windows Server image.

    Azure Stack Hub ユーザー ポータルで仮想マシン イメージを選択する

  4. [Free SQL Server License: SQL Server 2017 Developer on Windows Server] で、 [作成] を選択します。On Free SQL Server License: SQL Server 2017 Developer on Windows Server , select Create .

  5. [基本] の [基本設定の構成] で、仮想マシン (VM) の [名前] 、SQL Server SA の [ユーザー名] 、SA の [パスワード] を入力します。On Basics > Configure basic settings , provide a Name for the virtual machine (VM), a User name for the SQL Server SA, and a Password for the SA. [サブスクリプション] ドロップダウン リストから、デプロイ先のサブスクリプションを選択します。From the Subscription drop-down list, select the subscription that you're deploying to. [リソース グループ] では [Choose existing](既存の選択) を使用し、Azure Stack Hub Web アプリと同じリソース グループに VM を配置します。For Resource group , use Choose existing and put the VM in the same resource group as your Azure Stack Hub web app.

    Azure Stack Hub ユーザー ポータルで VM の基本設定を構成する

  6. [サイズ] で VM のサイズを選択します。Under Size , pick a size for your VM. このチュートリアルでは、A2_Standard または DS2_V2_Standard をお勧めします。For this tutorial, we recommend A2_Standard or a DS2_V2_Standard.

  7. [設定] の [オプション機能の構成] で、次の設定を構成します。Under Settings > Configure optional features , configure the following settings:

    • ストレージ アカウント : 新しいアカウントが必要な場合は、作成します。Storage account : Create a new account if you need one.

    • 仮想ネットワーク :Virtual network :

      重要

      SQL Server VM が VPN ゲートウェイと同じ仮想ネットワーク上にデプロイされていることを確認してください。Make sure your SQL Server VM is deployed on the same virtual network as the VPN gateways.

    • [パブリック IP アドレス] : 既定の設定を使用します。Public IP address : Use the default settings.

    • [ネットワーク セキュリティ グループ] : (NSG)。Network security group : (NSG). 新しい NSG を作成します。Create a new NSG.

    • [拡張機能] と [監視] :既定の設定のままにします。Extensions and Monitoring : Keep the default settings.

    • [診断ストレージ アカウント] :新しいアカウントが必要な場合は、作成します。Diagnostics storage account : Create a new account if you need one.

    • [OK] を選択して構成を保存します。Select OK to save your configuration.

      Azure Stack Hub ユーザー ポータルでオプションの VM 機能を構成する

  8. [SQL Server の設定] で、次の設定を構成します。Under SQL Server settings , configure the following settings:

    • [SQL 接続][パブリック (インターネット)] を選択します。For SQL connectivity , select Public (Internet) .

    • [ポート] は、既定値 ( 1433 ) のままにします。For Port , keep the default, 1433 .

    • [SQL 認証] には [有効] を選択します。For SQL authentication , select Enable .

      注意

      SQL 認証を有効にすると、 [基本] で構成した "SQLAdmin" の情報が自動設定されます。When you enable SQL authentication, it should auto-populate with the "SQLAdmin" information that you configured in Basics .

    • その他の設定は、既定値のままにしてください。For the rest of the settings, keep the defaults. [OK] を選択します。Select OK .

      Azure Stack Hub ユーザー ポータルで SQL Server 設定を構成する

  9. [概要] で VM の構成を確認し、 [OK] を選択してデプロイを開始します。On Summary , review the VM configuration and then select OK to start the deployment.

    Azure Stack Hub ユーザー ポータルの構成の概要

  10. 新しい VM の作成には時間がかかります。It takes some time to create the new VM. VM の状態は、 [仮想マシン] で確認できます。You can view the STATUS of your VMs in Virtual machines .

    Azure Stack Hub ユーザー ポータルの仮想マシンの状態

Azure と Azure Stack Hub に Web アプリを作成するCreate web apps in Azure and Azure Stack Hub

Azure App Service は、Web アプリの実行と管理を簡単にします。The Azure App Service simplifies running and managing a web app. Azure Stack Hub は Azure と一貫性があるため、App Service はどちらの環境でも実行できます。Because Azure Stack Hub is consistent with Azure, the App Service can run in both environments. App Service を使用し、アプリをホストします。You'll use the App Service to host your app.

Web アプリを作成するCreate web apps

  1. Azure で App Service プランを管理する」の手順に従って、Azure で Web アプリを作成します。Create a web app in Azure by following the instructions in Manage an App Service plan in Azure. Web アプリは、ご利用のハイブリッド ネットワークと同じサブスクリプションおよびリソース グループに配置してください。Make sure you put the web app in the same subscription and resource group as your hybrid network.

  2. 前の手順 (1) を Azure Stack Hub でも行います。Repeat the previous step (1) in Azure Stack Hub.

Azure Stack Hub 用のルートを追加するAdd route for Azure Stack Hub

Azure Stack Hub 上の App Service は、ユーザーがアプリにアクセスできるよう、パブリック インターネットからルーティングできなければなりません。The App Service on Azure Stack Hub must be routable from the public internet to let users access your app. Azure Stack Hub がインターネットからアクセスできる場合、Azure Stack Hub Web アプリの公開 IP アドレスまたは URL をメモします。If your Azure Stack Hub is accessible from the internet, make a note of the public-facing IP address or URL for the Azure Stack Hub web app.

ASDK を使用している場合は、静的 NAT のマッピングを構成することで、仮想環境の外部に App Service を公開することができます。If you're using an ASDK, you can configure a static NAT mapping to expose App Service outside the virtual environment.

Azure 内の Web アプリをハイブリッド ネットワークに接続するConnect a web app in Azure to a hybrid network

Azure の Web フロントエンドと Azure Stack Hub の SQL Server データベースを接続するには、Azure と Azure Stack Hub の間のハイブリッド ネットワークに Web アプリを接続する必要があります。To provide connectivity between the web front end in Azure and the SQL Server database in Azure Stack Hub, the web app must be connected to the hybrid network between Azure and Azure Stack Hub. 接続を有効にするためには、次の作業が必要となります。To enable connectivity, you'll have to:

  • ポイント対サイト接続を構成します。Configure point-to-site connectivity.
  • Web アプリを構成します。Configure the web app.
  • Azure Stack Hub 内のローカル ネットワーク ゲートウェイに変更を加えるModify the local network gateway in Azure Stack Hub.

ポイント対サイト接続のために Azure 仮想ネットワークを構成するConfigure the Azure virtual network for point-to-site connectivity

Azure App Service と統合するためには、ハイブリッド ネットワークの Azure 側にある仮想ネットワーク ゲートウェイでポイント対サイト接続を許可する必要があります。The virtual network gateway in the Azure side of the hybrid network must allow point-to-site connections to integrate with Azure App Service.

  1. Azure portal で仮想ネットワーク ゲートウェイのページに移動します。In the Azure portal, go to the virtual network gateway page. [設定] で、 [ポイント対サイトの構成] を選択します。Under Settings , select Point-to-site configuration .

    Azure 仮想ネットワーク ゲートウェイのポイント対サイト オプション

  2. [今すぐ構成] を選択し、ポイント対サイトを構成します。Select Configure now to configure point-to-site.

    Azure 仮想ネットワーク ゲートウェイでポイント対サイトの構成を開始する

  3. [ポイント対サイト] 構成ページで、使用するプライベート IP アドレス範囲を [アドレス プール] に入力します。On the Point-to-site configuration page, enter the private IP address range that you want to use in Address pool .

    注意

    指定する範囲が、ハイブリッド ネットワークのグローバル Azure コンポーネントまたは Azure Stack Hub コンポーネントのサブネットによって既に使用されているアドレス範囲と重複しないようにしてください。Make sure that the range you specify doesn't overlap with any of the address ranges already used by subnets in the global Azure or Azure Stack Hub components of the hybrid network.

    [トンネルの種類][IKEv2 VPN] チェック ボックスをオフにします。Under Tunnel Type , uncheck the IKEv2 VPN . [保存] を選択して、ポイント対サイトの構成を完了します。Select Save to finish configuring point-to-site.

    Azure 仮想ネットワーク ゲートウェイのポイント対サイト設定

Azure App Service アプリとハイブリッド ネットワークを統合するIntegrate the Azure App Service app with the hybrid network

  1. Azure VNet にアプリを接続するには、「ゲートウェイが必要な Vnet 統合」の指示に従ってください。To connect the app to the Azure VNet, follow the instructions in Gateway required VNet integration.

  2. Web アプリをホストしている App Service プランの [設定] に移動します。Go to Settings for the App Service plan hosting the web app. [設定][ネットワーク] を選択します。In Settings , select Networking .

    App Service プランのネットワークを構成する

  3. [VNET 統合][管理するにはここをクリック] を選択します。In VNET Integration , select Click here to manage .

    App Service プランの VNET 統合を管理する

  4. 構成する VNET を選択します。Select the VNET that you want to configure. [IP アドレスが VNET にルーティングされました] で、Azure VNet、Azure Stack Hub VNet、ポイント対サイトのアドレス空間に使用する IP アドレス範囲を入力します。Under IP ADDRESSES ROUTED TO VNET , enter the IP address range for the Azure VNet, the Azure Stack Hub VNet, and the point-to-site address spaces. [保存] を選択し、これらの設定を確認して保存します。Select Save to validate and save these settings.

    Virtual Network 統合でルーティングする IP アドレス範囲

App Service と Azure VNet の統合方法の詳細については、「アプリを Azure 仮想ネットワークに統合する」を参照してください。To learn more about how App Service integrates with Azure VNets, see Integrate your app with an Azure Virtual Network.

Azure Stack Hub 仮想ネットワークを構成するConfigure the Azure Stack Hub virtual network

App Service のポイント対サイト アドレス範囲からのトラフィックをルーティングするために、Azure Stack Hub 仮想ネットワーク内のローカル ネットワーク ゲートウェイを構成する必要があります。The local network gateway in the Azure Stack Hub virtual network needs to be configured to route traffic from the App Service point-to-site address range.

  1. Azure Stack Hub ポータルで、 [ローカル ネットワーク ゲートウェイ] に移動します。In the Azure Stack Hub portal, go to Local network gateway . [設定][構成] を選択します。Under Settings , select Configuration .

    Azure Stack Hub ローカル ネットワーク ゲートウェイのゲートウェイ構成オプション

  2. [アドレス空間] に、Azure の仮想ネットワーク ゲートウェイのポイント対サイト アドレス範囲を入力します。In Address space , enter the point-to-site address range for the virtual network gateway in Azure.

    Azure Stack Hub ローカル ネットワーク ゲートウェイのポイント対サイト アドレス空間

  3. [保存] を選択し、構成を検証して保存します。Select Save to validate and save the configuration.

クラウド間スケーリング向けに DNS を構成するConfigure DNS for cross-cloud scaling

クラウド間アプリ向けに DNS を適切に構成することで、ユーザーはグローバル Azure と Azure Stack Hub の Web アプリ インスタンスにアクセスできます。By properly configuring DNS for cross-cloud apps, users can access the global Azure and Azure Stack Hub instances of your web app. また、このチュートリアルの DNS 構成を使えば、負荷が増減したときに Azure Traffic Manager でトラフィックをルーティングすることも可能です。The DNS configuration for this tutorial also lets Azure Traffic Manager route traffic when the load increases or decreases.

App Service ドメインが機能しないため、このチュートリアルでは Azure DNS を使用して DNS を管理します。This tutorial uses Azure DNS to manage the DNS because App Service domains won't work.

サブドメインを作成するCreate subdomains

Traffic Manager は DNS の CNAME に依存しているため、エンドポイントに対して適切にトラフィックをルーティングするためには、サブドメインが必要となります。Because Traffic Manager relies on DNS CNAMEs, a subdomain is needed to properly route traffic to endpoints. DNS レコードとドメイン マッピングの詳細については、「Traffic Manager を使用したドメインのマップ」を参照してください。For more information about DNS records and domain mapping, see map domains with Traffic Manager.

Azure エンドポイントについては、Web アプリにアクセスするためにユーザーが使用できるサブドメインを作成します。For the Azure endpoint, you'll create a subdomain that users can use to access your web app. このチュートリアルでは、 app.northwind.com を使用できますが、この値はご自身のドメインに合わせてカスタマイズする必要があります。For this tutorial, can use app.northwind.com , but you should customize this value based on your own domain.

また、Azure Stack Hub エンドポイントについても、A レコードを使用してサブドメインを作成する必要があります。You'll also need to create a subdomain with an A record for the Azure Stack Hub endpoint. azurestack.northwind.com を使用できます。You can use azurestack.northwind.com .

Azure でカスタム ドメインを構成するConfigure a custom domain in Azure

  1. Azure App Service に CNAME をマップして、 app.northwind.com ホスト名を Azure Web アプリに追加します。Add the app.northwind.com hostname to the Azure web app by mapping a CNAME to Azure App Service.

Azure Stack Hub でカスタム ドメインを構成するConfigure custom domains in Azure Stack Hub

  1. Azure App Service に A レコードをマップして、ホスト名 azurestack.northwind.com を Azure Stack Hub Web アプリに追加します。Add the azurestack.northwind.com hostname to the Azure Stack Hub web app by mapping an A record to Azure App Service. App Service アプリには、インターネット ルーティング可能な IP アドレスを使用します。Use the internet-routable IP address for the App Service app.

  2. Azure App Service に CNAME をマップして、ホスト名 app.northwind.com を Azure Stack Hub Web アプリに追加します。Add the app.northwind.com hostname to the Azure Stack Hub web app by mapping a CNAME to Azure App Service. CNAME のターゲットとして、前の手順 (1) で構成したホスト名を使用してください。Use the hostname you configured in the previous step (1) as the target for the CNAME.

クラウド間スケーリング向けに SSL 証明書を構成するConfigure SSL certificates for cross-cloud scaling

Web アプリによって収集される機密データを移動中および SQL データベースで保管されている間、セキュリティで保護することが重要です。It's important to ensure sensitive data collected by your web app is secure in transit to and when stored on the SQL database.

すべての受信トラフィックについて SSL 証明書を使用するように、Azure の Web アプリと Azure Stack Hub の Web アプリを構成します。You'll configure your Azure and Azure Stack Hub web apps to use SSL certificates for all incoming traffic.

Azure と Azure Stack Hub に SSL を追加するAdd SSL to Azure and Azure Stack Hub

Azure に SSL を追加するには、次の手順に従います。To add SSL to Azure:

  1. 作成したサブドメインに対し、取得した SSL 証明書が有効であることを確認します Make sure that the SSL certificate you get is valid for the subdomain you created. (ワイルドカード証明書を使用してもかまいません)。(It's okay to use wildcard certificates.)

  2. Azure portal で、 Azure Web Apps に既存のカスタム SSL 証明書をバインドする方法に関する記事の「 Web アプリの準備 」と SSL 証明書のバインド に関するセクションの指示に従います。In the Azure portal, follow the instructions in the Prepare your web app and Bind your SSL certificate sections of the Bind an existing custom SSL certificate to Azure Web Apps article. [SSL の種類] として [SNI ベースの SSL] を選択します。Select SNI-based SSL as the SSL Type .

  3. すべてのトラフィックを HTTP ポートにリダイレクトします。Redirect all traffic to the HTTPS port. Azure Web Apps への既存のカスタム SSL 証明書のバインドに関する記事のセクション「 HTTPS の適用 」の手順に従ってください。Follow the instructions in the Enforce HTTPS section of the Bind an existing custom SSL certificate to Azure Web Apps article.

Azure Stack Hub に SSL を追加するには、次の手順に従います。To add SSL to Azure Stack Hub:

  1. Azure Stack Hub ポータルを使用して、Azure で使用した手順 1 から 3 を繰り返します。Repeat steps 1-3 that you used for Azure, using the Azure Stack Hub portal.

Web アプリを構成し、デプロイするConfigure and deploy the web app

テレメトリを正しい Application Insights インスタンスに報告するようにアプリ コードを構成し、正しい接続文字列で Web アプリを構成します。You'll configure the app code to report telemetry to the correct Application Insights instance and configure the web apps with the right connection strings. Application Insights の詳細については、「Application Insights とは何か?」を参照してください。To learn more about Application Insights, see What is Application Insights?

Application Insights を追加するAdd Application Insights

  1. Microsoft Visual Studio で Web アプリを開きます。Open your web app in Microsoft Visual Studio.

  2. プロジェクトに Application Insights を追加し、Web トラフィックが増減したときのアラートを生成するために Application Insights によって使用されるテレメトリが転送されるようにします。Add Application Insights to your project to transmit the telemetry that Application Insights uses to create alerts when web traffic increases or decreases.

動的接続文字列を構成するConfigure dynamic connection strings

Web アプリの各インスタンスでは、異なる方法を使用して SQL データベースに接続します。Each instance of the web app will use a different method to connect to the SQL database. Azure のアプリでは SQL Server VM のプライベート IP アドレスが使用され、Azure Stack Hub のアプリでは SQL Server VM のパブリック IP アドレスが使用されます。The app in Azure uses the private IP address of the SQL Server VM and the app in Azure Stack Hub uses the public IP address of the SQL Server VM.

注意

Azure Stack Hub 統合システムでは、パブリック IP アドレスをインターネット ルーティング可能にしないでください。On an Azure Stack Hub integrated system, the public IP address shouldn't be internet-routable. ASDK では、パブリック IP アドレスは ASDK の外部にルーティングできません。On an ASDK, the public IP address isn't routable outside the ASDK.

App Service 環境変数を使用し、アプリの各インスタンスに異なる接続文字列を渡すことができます。You can use App Service environment variables to pass a different connection string to each instance of the app.

  1. Visual Studio でアプリを開きます。Open the app in Visual Studio.

  2. Startup.cs を開いて、次のコード ブロックを見つけます。Open Startup.cs and find the following code block:

    services.AddDbContext<MyDatabaseContext>(options =>
        options.UseSqlite("Data Source=localdatabase.db"));
    
  3. 前のコード ブロックを次のコードに置き換えます。このコードでは、 appsettings.json ファイルで定義されている接続文字列が使用されます。Replace the previous code block with the following code, which uses a connection string defined in the appsettings.json file:

    services.AddDbContext<MyDatabaseContext>(options =>
        options.UseSqlServer(Configuration.GetConnectionString("MyDbConnection")));
     // Automatically perform database migration
     services.BuildServiceProvider().GetService<MyDatabaseContext>().Database.Migrate();
    

App Service アプリ設定を構成するConfigure App Service app settings

  1. Azure と Azure Stack Hub 用の接続文字列を作成します。Create connection strings for Azure and Azure Stack Hub. IP アドレス以外は、同じ文字列を使用してください。The strings should be the same, except for the IP addresses that are used.

  2. Azure と Azure Stack Hub で、Web アプリのアプリ設定として適切な接続文字列を追加します。そのとき、名前のプレフィックスとして SQLCONNSTR\_ を使用します。In Azure and Azure Stack Hub, add the appropriate connection string as an app setting in the web app, using SQLCONNSTR\_ as a prefix in the name.

  3. Web アプリ設定を 保存 し、アプリを再起動します。Save the web app settings and restart the app.

グローバル Azure で自動スケーリングを有効にするEnable automatic scaling in global Azure

App Service 環境で Web アプリを作成するとき、1 つのインスタンスから始めます。When you create your web app in an App Service environment, it starts with one instance. 自動的にスケールアウトしてインスタンスを追加することで、アプリ用のコンピューティング リソースを増やすことができます。You can automatically scale out to add instances to provide more compute resources for your app. 同様に、自動的にスケールインして、アプリに必要なインスタンスの数を減らすことができます。Similarly, you can automatically scale in and reduce the number of instances your app needs.

注意

スケールアウトとスケールインを構成するには、App Service プランが必要です。You need to have an App Service plan to configure scale out and scale in. プランをお持ちでない場合は、作成したうえで次の手順を開始してください。If you don't have a plan, create one before starting the next steps.

自動スケールアウトを有効にするEnable automatic scale-out

  1. Azure portal で、スケールアウトしたいサイトの App Service プランを見つけて、 [スケールアウト (App Service プラン)] を選択します。In the Azure portal, find the App Service plan for the sites you want to scale out, and then select Scale-out (App Service plan) .

    Azure App Service をスケールアウトする

  2. [自動スケールの有効化] を選択します。Select Enable autoscale .

    Azure App Service で自動スケーリングを有効にする

  3. [自動スケール設定の名前] に名前を入力します。Enter a name for Autoscale Setting Name . 既存 の自動スケール ルールで、 [メトリックに基づいてスケーリングする] を選択します。For the Default auto scale rule, select Scale based on a metric . [インスタンスの制限] で、 [最小] を 1、 [最大] を 10、 [既定] を 1 に設定します。Set the Instance limits to Minimum: 1 , Maximum: 10 , and Default: 1 .

    Azure App Service で自動スケーリングを構成する

  4. [+ ルールの追加] を選択します。Select +Add a rule .

  5. [メトリック ソース][現在のリソース] を選択します。In Metric Source , select Current Resource . このルールには、次の条件とアクションを使用します。Use the following Criteria and Actions for the rule.

条件Criteria

  1. [時間の集計][平均] を選択します。Under Time Aggregation, select Average .

  2. [メトリック名][CPU の割合] を選択します。Under Metric Name , select CPU Percentage .

  3. [演算子][より大きい] を選択します。Under Operator , select Greater than .

    • [しきい値]50 に設定します。Set the Threshold to 50 .
    • [期間]10 に設定します。Set the Duration to 10 .

アクションAction

  1. [操作][カウントを増やす量] を選択します。Under Operation , select Increase Count by .

  2. [インスタンス数]2 に設定します。Set the Instance Count to 2 .

  3. [クール ダウン]5 に設定します。Set the Cool down to 5 .

  4. [追加] を選択します。Select Add .

  5. [+ ルールの追加] を選択します。Select the + Add a rule .

  6. [メトリック ソース][現在のリソース] を選択します。In Metric Source , select Current Resource.

    注意

    現在のリソースには、App Service プランの名前/GUID が表示され、 [リソースの種類] ドロップダウン リストと [リソース] ドロップダウン リストは利用できません。The current resource will contain your App Service plan's name/GUID and the Resource Type and Resource drop-down lists will be unavailable.

自動スケールインを有効にするEnable automatic scale in

トラフィックが減ると、Azure Web アプリでは、アクティブ インスタンスの数を自動的に減らし、コストを減らすことができます。When traffic decreases, the Azure web app can automatically reduce the number of active instances to reduce costs. このアクションはスケールアウトより消極的であり、アプリ ユーザーへの影響を最小限に抑えます。This action is less aggressive than scale-out and minimizes the impact on app users.

  1. [既定] のスケールアウト条件に移動し、 [+ ルールの追加] を選択します。Go to the Default scale out condition, then select + Add a rule . このルールには、次の条件とアクションを使用します。Use the following Criteria and Actions for the rule.

条件Criteria

  1. [時間の集計][平均] を選択します。Under Time Aggregation, select Average .

  2. [メトリック名][CPU の割合] を選択します。Under Metric Name , select CPU Percentage .

  3. [演算子][より小さい] を選択します。Under Operator , select Less than .

    • [しきい値]30 に設定します。Set the Threshold to 30 .
    • [期間]10 に設定します。Set the Duration to 10 .

アクションAction

  1. [操作][カウントを減らす量] を選択します。Under Operation , select Decrease Count by .

    • [インスタンス数]1 に設定します。Set the Instance Count to 1 .
    • [クール ダウン]5 に設定します。Set the Cool down to 5 .
  2. [追加] を選択します。Select Add .

Traffic Manager プロファイルを作成し、クラウド間スケーリングを構成するCreate a Traffic Manager profile and configure cross-cloud scaling

Azure portal を使用して Traffic Manager プロファイルを作成し、クラウド間スケーリングを有効にするようにエンドポイントを構成します。Create a Traffic Manager profile using the Azure portal, then configure endpoints to enable cross-cloud scaling.

Traffic Manager プロファイルを作成するCreate Traffic Manager profile

  1. [リソースの作成] を選択します。Select Create a resource .

  2. [ネットワーク] を選択します。Select Networking .

  3. [Traffic Manager プロファイル] を選択し、次の設定を構成します。Select Traffic Manager profile and configure the following settings:

    • [名前] に、プロファイルの名前を入力します。In Name , enter a name for your profile. この名前は、trafficmanager.net ゾーン内で一意であることが 必要 です。新しい DNS 名を作成するときに使用されます (例: northwindstore.trafficmanager.net)。This name must be unique in the trafficmanager.net zone and is used to create a new DNS name (for example, northwindstore.trafficmanager.net).
    • [ルーティング方法][重み付け] を選択します。For Routing method , select the Weighted .
    • [サブスクリプション] で、このプロファイルを作成するサブスクリプションを選択します。For Subscription , select the subscription you want to create this profile in.
    • [リソース グループ] で、このプロファイルの新しいリソース グループを作成します。In Resource Group , create a new resource group for this profile.
    • [リソース グループの場所] で、リソース グループの場所を選択します。In Resource group location , select the location of the resource group. これはリソース グループの場所を指定する設定であり、グローバルにデプロイされる Traffic Manager プロファイルには影響しません。This setting refers to the location of the resource group and has no impact on the Traffic Manager profile that's deployed globally.
  4. [作成] を選択しますSelect Create .

    Traffic Manager プロファイルを作成する

    Traffic Manager プロファイルのグローバル デプロイが完了すると、その作成先となったリソース グループのリソース一覧にそのプロファイルが表示されます。When the global deployment of your Traffic Manager profile is complete, it's shown in the list of resources for the resource group you created it under.

Traffic Manager エンドポイントの追加Add Traffic Manager endpoints

  1. 作成した Traffic Manager プロファイルを検索します Search for the Traffic Manager profile you created. プロファイルのリソース グループに移動した場合は、プロファイルを選択してください。If you navigated to the resource group for the profile, select the profile.

  2. [Traffic Manager プロファイル][設定] で、 [エンドポイント] を選択します。In Traffic Manager profile , under SETTINGS , select Endpoints .

  3. [追加] を選択します。Select Add .

  4. Azure Stack Hub について、 [エンドポイントの追加] で次の設定を使用します。In Add endpoint , use the following settings for Azure Stack Hub:

    • [Type] (種類) で、 [外部エンドポイント] を選択します。For Type , select External endpoint .
    • エンドポイントの [名前] を入力します。Enter a Name for the endpoint.
    • 完全修飾ドメイン名 (FQDN) または IP として、Azure Stack Hub Web アプリの外部 URL を入力します。For Fully qualified domain name (FQDN) or IP , enter the external URL for your Azure Stack Hub web app.
    • [重み] は、既定値 ( 1 ) のままにします。For Weight , keep the default, 1 . これにより、このエンドポイントが正常な状態である場合、すべてのトラフィックがそのエンドポイントに送信されるようになります。This weight results in all traffic going to this endpoint if it's healthy.
    • [無効として追加] はオフのままにします。Leave Add as disabled unchecked.
  5. [OK] を選択して、Azure Stack Hub エンドポイントを保存します。Select OK to save the Azure Stack Hub endpoint.

次に、Azure エンドポイントを構成します。You'll configure the Azure endpoint next.

  1. [Traffic Manager プロファイル][エンドポイント] を選択します。On Traffic Manager profile , select Endpoints .

  2. [+追加] を選択します。Select +Add .

  3. Azure について、 [エンドポイントの追加] で次の設定を使用します。On Add endpoint , use the following settings for Azure:

    • [Type] (種類) で、 [Azure エンドポイント] を選択します。For Type , select Azure endpoint .
    • エンドポイントの [名前] を入力します。Enter a Name for the endpoint.
    • [ターゲット リソースの種類] で、 [App Service] を選択します。For Target resource type , select App Service .
    • [ターゲット リソース][アプリ サービスの選択] を選択し、同じサブスクリプションにある Web アプリの一覧を表示します。For Target resource , select Choose an app service to see a list of Web Apps in the same subscription.
    • [リソース] で、最初のエンドポイントとして追加する App Service を選択します。In Resource , pick the App service that you want to add as the first endpoint.
    • [重み]2 を選択します。For Weight , select 2 . この設定により、プライマリ エンドポイントが正常ではない場合や、トリガーされたらトラフィックをルーティングするルール/アラートがある場合、すべてのトラフィックがそのエンドポイントに送信されるようになります。This setting results in all traffic going to this endpoint if the primary endpoint is unhealthy, or if you have a rule/alert that redirects traffic when triggered.
    • [無効として追加] はオフのままにします。Leave Add as disabled unchecked.
  4. [OK] を選択して、Azure エンドポイントを保存します。Select OK to save the Azure endpoint.

構成したエンドポイントはどちらも、 [Traffic Manager プロファイル][エンドポイント] を選択すると表示されます。After both endpoints are configured, they're listed in Traffic Manager profile when you select Endpoints . 次の画面キャプチャの例には、2 つのエンドポイントが、それぞれの状態および構成情報と共に表示されています。The example in the following screen capture shows two endpoints, with status and configuration information for each one.

Traffic Manager プロファイルのエンドポイント

Azure で Application Insights の監視とアラートを設定するSet up Application Insights monitoring and alerting in Azure

Azure Application Insights を使用すると、アプリを監視し、構成した条件に応じてアラートを送信できます。Azure Application Insights lets you monitor your app and send alerts based on conditions you configure. たとえば、アプリが利用できなくなった、障害が発生した、パフォーマンスの問題が生じたなどの例があります。Some examples are: the app is unavailable, is experiencing failures, or is showing performance issues.

アラートの作成には、Azure Application Insights のメトリックを使用します。You'll use Azure Application Insights metrics to create alerts. これらのアラートがトリガーされると、Web アプリ インスタンスが自動的に Azure Stack Hub から Azure に切り替わってスケールアウトし、その後、Azure Stack Hub に戻ってスケールインします。When these alerts trigger, your web app's instance will automatically switch from Azure Stack Hub to Azure to scale out, and then back to Azure Stack Hub to scale in.

メトリックに基づくアラートを作成するCreate an alert from metrics

Azure portal で、このチュートリアルのリソース グループに移動して Application Insights インスタンスを選択し、 [Application Insights] を開きます。In the Azure portal, go to the resource group for this tutorial, and select the Application Insights instance to open Application Insights .

Application Insights

このビューを使用してスケールアウト アラートとスケールイン アラートを作成します。You'll use this view to create a scale-out alert and a scale-in alert.

スケールアウト アラートを作成するCreate the scale-out alert

  1. [構成][アラート (クラシック)] を選択します。Under CONFIGURE , select Alerts (classic) .

  2. [メトリック アラートの追加 (クラシック)] を選択します。Select Add metric alert (classic) .

  3. [ルールの追加] で、次の設定を構成します。In Add rule , configure the following settings:

    • [名前] に「 Burst into Azure Cloud 」と入力します。For Name , enter Burst into Azure Cloud .
    • [説明] は省略できます。A Description is optional.
    • [ソース][アラート対象][メトリック] を選択します。Under Source > Alert on , select Metrics .
    • [条件] で、自分のサブスクリプション、Traffic Manager プロファイルのリソース グループ、リソースに使用する Traffic Manager プロファイルの名前を選択します。Under Criteria , select your subscription, the resource group for your Traffic Manager profile, and the name of the Traffic Manager profile for the resource.
  4. [メトリック][要求率] を選択します。For Metric , select Request Rate .

  5. [条件][より大きい] を選択します。For Condition , select Greater than .

  6. [しきい値] に「 2 」を入力します。For Threshold , enter 2 .

  7. [期間][直近 5 分] を選択します。For Period , select Over the last 5 minutes .

  8. [通知手段] で次のように設定します。Under Notify via :

    • [所有者、共同作成者、閲覧者に電子メールを送信] のチェック ボックスをオンにします。Check the checkbox for Email owners, contributors, and readers .
    • [追加する管理者の電子メール] にメール アドレスを入力します。Enter your email address for Additional administrator email(s) .
  9. メニュー バーで [保存] を選択します。On the menu bar, select Save .

スケールイン アラートを作成するCreate the scale-in alert

  1. [構成][アラート (クラシック)] を選択します。Under CONFIGURE , select Alerts (classic) .

  2. [メトリック アラートの追加 (クラシック)] を選択します。Select Add metric alert (classic) .

  3. [ルールの追加] で、次の設定を構成します。In Add rule , configure the following settings:

    • [名前] に「 Scale back into Azure Stack Hub 」と入力します。For Name , enter Scale back into Azure Stack Hub .
    • [説明] は省略できます。A Description is optional.
    • [ソース][アラート対象][メトリック] を選択します。Under Source > Alert on , select Metrics .
    • [条件] で、自分のサブスクリプション、Traffic Manager プロファイルのリソース グループ、リソースに使用する Traffic Manager プロファイルの名前を選択します。Under Criteria , select your subscription, the resource group for your Traffic Manager profile, and the name of the Traffic Manager profile for the resource.
  4. [メトリック][要求率] を選択します。For Metric , select Request Rate .

  5. [条件][より小さい] を選択します。For Condition , select Less than .

  6. [しきい値] に「 2 」を入力します。For Threshold , enter 2 .

  7. [期間][直近 5 分] を選択します。For Period , select Over the last 5 minutes .

  8. [通知手段] で次のように設定します。Under Notify via :

    • [所有者、共同作成者、閲覧者に電子メールを送信] のチェック ボックスをオンにします。Check the checkbox for Email owners, contributors, and readers .
    • [追加する管理者の電子メール] にメール アドレスを入力します。Enter your email address for Additional administrator email(s) .
  9. メニュー バーで [保存] を選択します。On the menu bar, select Save .

次のスクリーンショットには、スケールアウトとスケールインのアラートが示されています。The following screenshot shows the alerts for scale-out and scale-in.

Application Insights のアラート (クラシック)

Azure と Azure Stack Hub の間でトラフィックをリダイレクトするRedirect traffic between Azure and Azure Stack Hub

Azure と Azure Stack Hub の間で行われる Web アプリのトラフィックには、手動または自動の切り替えを構成できます。You can configure manual or automatic switching of your web app traffic between Azure and Azure Stack Hub.

Azure と Azure Stack Hub の間で手動切り替えを構成するConfigure manual switching between Azure and Azure Stack Hub

Web サイトが構成済みのしきい値に達した場合、アラートが届きます。When your web site reaches the thresholds that you configure, you'll receive an alert. トラフィックを手動で Azure にリダイレクトするには、次の手順を使用します。Use the following steps to manually redirect traffic to Azure.

  1. Azure portal で、該当する Traffic Manager プロファイルを選択します。In the Azure portal, select your Traffic Manager profile.

    Azure portal の Traffic Manager エンドポイント

  2. [エンドポイント] を選択します。Select Endpoints .

  3. [Azure エンドポイント] を選択します。Select the Azure endpoint .

  4. [状態][有効] を選択し、 [保存] を選択します。Under Status , select Enabled , and then select Save .

    Azure portal で Azure エンドポイントを有効にする

  5. Traffic Manager プロファイルの [エンドポイント] で、 [外部エンドポイント] を選択します。On Endpoints for the Traffic Manager profile, select External endpoint .

  6. [状態][無効] を選択し、 [保存] を選択します。Under Status , select Disabled , and then select Save .

    Azure portal で Azure Stack Hub エンドポイントを無効にする

エンドポイントの構成後、アプリ トラフィックは、Azure Stack Hub Web アプリではなく、Azure スケールアウト Web アプリに送信されます。After the endpoints are configured, app traffic goes to your Azure scale-out web app instead of the Azure Stack Hub web app.

Azure web アプリのトラフィックで変更されたエンドポイント

フローを再び Azure Stack Hub に戻すには、前の手順を使用して次の設定を行います。To reverse the flow back to Azure Stack Hub, use the previous steps to:

  • Azure Stack Hub エンドポイントを有効にします。Enable the Azure Stack Hub endpoint.
  • Azure エンドポイントを無効にします。Disable the Azure endpoint.

Azure と Azure Stack Hub の間で自動切り替えを構成するConfigure automatic switching between Azure and Azure Stack Hub

Azure Functions によって実現されるサーバーレス環境で対象のアプリが実行されている場合は、Application Insights の監視を使用することもできます。You can also use Application Insights monitoring if your app runs in a serverless environment provided by Azure Functions.

このシナリオでは、関数アプリを呼び出す Webhook を使用するように Application Insights を構成することができます。In this scenario, you can configure Application Insights to use a webhook that calls a function app. このアプリでは、アラートに応じてエンドポイントの有効と無効を自動的に切り替えます。This app automatically enables or disables an endpoint in response to an alert.

次の手順を参考にして、自動トラフィック切り替えを構成してください。Use the following steps as a guide to configure automatic traffic switching.

  1. Azure 関数アプリを作成します。Create an Azure Function app.

  2. HTTP によってトリガーされる関数を作成します。Create an HTTP-triggered function.

  3. Resource Manager、Web Apps、Traffic Manager 用の Azure SDK をインポートします。Import the Azure SDKs for Resource Manager, Web Apps, and Traffic Manager.

  4. 次の処理を行うコードを作成します。Develop code to:

    • Azure サブスクリプションに対して認証を行う。Authenticate to your Azure subscription.
    • Traffic Manager のエンドポイントを切り替えるパラメーターを使用して、Azure または Azure Stack Hub にトラフィックを送信する。Use a parameter that toggles the Traffic Manager endpoints to direct traffic to Azure or Azure Stack Hub.
  5. 作成したコードを保存し、Application Insights のアラート ルール設定の Webhook セクションに、適切なパラメーターと共に関数アプリの URL を追加します。Save your code and add the function app's URL with the appropriate parameters to the Webhook section of the Application Insights alert rule settings.

  6. Application Insights のアラートが発生すると、トラフィックが自動的にリダイレクトされます。Traffic is automatically redirected when an Application Insights alert fires.

次のステップNext steps