この記事では、保護と回復力の概念、 Nerdio Manager
回復力のあるNerdio Managerを構成する機能は、製品のプレミアムエディションでのみサポートされています。回復力の構成に関する詳細なガイドは、以下に示します。
注記
注: SQL展開におけるフェイルオーバーグループ利用時は、ペアのリージョンを使用することを強くお勧めします。詳細については、Nerdio Managerデータベースの回復力を構成するを参照してください。
-
高可用性(HA)とは、サービスが複数のインスタンスで同時に稼働するシナリオを指します。HAでは、1つのインスタンスで障害が発生しても、サービスがダウンタイムや影響を受けずに動作し続けることが期待されます。HAソリューションは、複数のサービスを同時に稼働させる必要があるため、一般的に維持費が高くなります。そのため、リソース使用量の増加やサービスコストの上昇のリスクがあります。
-
災害復旧(DR)とは、サービスが単一のインスタンスで稼働するシナリオのことで、万一そのサービスで障害が発生した場合、予め定められた手順に従って別のインスタンスへフェイルオーバーできる仕組みです。二次インスタンスは、災害復旧またはテストが求められるまで無効化または停止されることが多く、これをDR呼び出しと呼びます。
DR対応サービスは、呼び出しおよびフェイルオーバーの操作を実行するために、手動または自動の介入が必要となり、その結果、ダウンタイムやサービス停止が発生する可能性があります。これらの操作に必要な時間はサービスや構成によって異なるため、組織側で許容可能なダウンタイムの長さを決定する必要があります。
Nerdio Manager
HAモードでは、リクエストはアクティブなウェブアプリ間で均等にルーティングされます。DRモードでは、Azure Front Doorが1 つ以上のウェブアプリがオフラインであることを自動的に検出し、別の稼働中のウェブアプリへリクエストを振り分けます。
以下の図は、 Nerdio Manager
サービスコンポーネントは、次の概念層に分かれます:
負荷分散層
ここがユーザーが Nerdio Manager
接続は、ウェブアプリ層内の利用可能な Nerdio Manager
ストレージ層
ストレージ層は、コアとなる Nerdio Manager
-
スクリプトアクションストレージアカウント(既定でCSSAプレフィックス付き)で、ホストプール内のホストのコア展開を完了するために使用されるすべてのスクリプトが含まれています。このストレージアカウントが利用不可の場合、ホスト作成活動(自動スケールタスクを含む)は失敗します。
-
データ保護ストレージアカウント(既定でDPSプレフィックス付き)には、データベースに暗号化されたシークレットを追加し、また読み取るために必要な暗号化キーが含まれています。
注記
Nerdio Managerは現在、ストレージ層でゾーン耐障害性(ZRS)および地理冗長性(GRS)をサポートしています。詳細については、この文書の要件および制限セクションを参照してください。さらに、この制限は組織のDRおよび事業継続計画のドキュメントに記載しておく必要があります。
ウェブアプリ層
ウェブアプリ層は、レジリエントなアプリケーション環境を構成する実行中または停止中のウェブアプリを指します。コンソールにアクセスするユーザーは、負荷分散層を介して、利用可能なウェブアプリに接続します。
HAシナリオでは、2 つ以上のアクティブな Nerdio Manager
この層には、ウェブアプリがシークレットデータの読み取りに必要な際にアクセスする Nerdio Manager
SQL データベース層
SQL データベース層は、 Nerdio Manager
SQL データベースは、他の HA または DR 構成を進める前に、耐障害性が確保されるよう構成されている必要があります。詳細については、この記事を参照してください。
アクティブなウェブアプリからの読み取りおよび書き込み要求は、SQLフェイルオーバーグループ内のアクティブなデータベースにルーティングされます。
注記
Nerdio Manager for Enterprise 以下のセクションでは、ウェブアプリの耐障害性を高めるための構成要件と手順について説明します。このプロセスでは、環境内に既に実施されているネットワークやインフラストラクチャの強化措置は考慮されていません。さらに話し合いたい場合は、Nerdio Supportチームのメンバーまたはテクニカルアカウントマネージャーに相談してください。
要件
-
この機能には、 Nerdio Manager
-
Microsoft.Cdn コンテンツプロバイダーは、あなたのサブスクリプションに登録されている必要があります。
-
データ保護キーは、構成プロセスの一部として移行する必要があります。このプロセスを開始する前に、環境に dps で始まるデータ保護キー ストレージ アカウントが含まれていることを確認してください。含まれていない場合は、以下に示すプロセスに従ってください。含まれていない場合は、 キー移行プロセス(v5.5 より前にインストールされた Nerdio Manager 環境に必要) Nerdio Manager
-
作成スクリプトが DPS ストレージアカウントを 地理冗長ストレージアカウント (GRS) として作成するように構成されていることも確認してください。
-
既存の DPS アカウントは LRS として構成されている場合、GRS に変換する必要があります。プロセスの詳細は こちら を参照してください。
-
-
この機能は、 Nerdio Manager
-
追加のウェブアプリと負荷分散サービスは、この機能をサポートするために Azure で手動で作成する必要があります。
-
構成変更は、 Nerdio Manager
-
すべての Nerdio Manager を実行している必要があります。
-
ウェブアプリにプライベートエンドポイントを使用する予定の場合、Azure Front Door Premium はプライベートリンク機能と組み合わせて必要です。詳細については、Azure Front Door Premium のプライベートリンクでオリジンを保護するを参照してください。
制限
-
HA または DR 用に構成された環境は、Cloud Shell (方法 2) または Zip Deploy (方法 4) を使用して更新する必要があります。詳細については、 アプリケーションの Nerdio Managerを参照してください。
-
すべての Nerdio Manager
-
すべての Nerdio Manager
-
DR モードでは、Azure Front Door がウェブアプリの可用性に関連する警告を報告する場合があります。これは想定内の動作です。
-
DR モードでは、呼び出しに際して、待機中のウェブアプリを Azure ポータルから手動で開始する必要があります。
-
もし、CSSA ストレージアカウントが存在するリージョンまたはゾーンでストレージへの接続が確立できない場合、 Nerdio Manager
-
もし、DPS ストレージアカウントが存在する地域またはゾーンでストレージに接続できない場合、 Nerdio Manager
-
ストレージアカウントのGRSレプリケーションゾーンはAzureによって選択され、構成は変更できません。ペアリングされた地域を説明するこの Microsoftの記事を参照してください。ペアリングされたリージョンが SQL フェイルオーバーグループまたはウェブアプリのレプリカが構成されているリージョンと異なる場合、フェイルオーバー時に パフォーマンスに影響を与える可能性があります。
-
Nerdio User Cost Attribution ウェブアプリは、現在 DR または HA シナリオのいずれにもサポートされていません。フェイルオーバーにより、通常の操作が再開されるまで、重大ではないコンソールエラーが発生する場合があります。
注記
Nerdio Managerすべてのリソースが元のウェブアプリと同じサブスクリプションおよびリソースグループにデプロイされていることを確認してください。
新しいアプリ構成リソースを作成するには:
-
Azure ポータルで、Standard プランを使用して新しい App Configuration リソースを作成します:
-
場所リージョン: リージョンを選択します。これは Web アプリと同じリージョンである必要があります。
-
名前 名前を入力してください。
-
料金体系:Standardを選択します。
-
レプリケーションを有効にする:このオプションを有効にし、次に開く右ペインでレプリカ名フィールドに名前を入力します。これは任意の名前にすることができます。例えば、replica です。作成を選択します。
-
-
次のオプションを変更します:
-
アクセス設定 タブで、認証モードを パススルー (プレビュー) に設定します。
-
ネットワーキング タブで、Azure Resource Manager プライベートネットワークアクセスを有効にするを選択します。
-
-
レビュー + 作成を選択し、その後 作成を選択します。
-
新しい App Configuration リソースを開きます。
-
操作 ブレードで、インポート/エクスポートを選択します。
-
次のオプションを変更します:
-
ソースタイプ:App Service を選択します。
-
リソースグループ: 既存の Nerdio Manager App Service を選択します。
-
-
すべての変更を行ったら、適用を選択します。
-
操作 ブレードで、構成エクスプローラーを選択します。
-
次の各キーについて、Advanced edit ツールからキーと値をメモします。これらはロールバック シナリオでのみ必要です。
-
ApplicationInsights:ConnectionString
-
ApplicationInsights:InstrumentationKey
-
Deployment:WebAppName
-
-
次のキーを選択します:
-
ApplicationInsights:ConnectionString
-
ApplicationInsights:InstrumentationKey
-
Deployment:WebAppName
-
-
選択が完了したら、削除を選択します。
-
次のキー値を作成します:
Deployment:SqlServerId
キー値はプライマリ SQL Server のリソース ID である必要があります。
-
アクセス制御 (IAM) ブレードで、+追加 > 役割の割り当てを追加 を選択してください。
-
メンバー エリアで、次の内容を変更します。
-
選択されたロール:App Configuration Data Reader を選択します。
-
アクセス割り当て先:マネージド ID を選択します。
-
メンバー: メンバー: +メンバーを選択 を選択し、その後 Nerdio Manager
-
-
変更を適用してください。
-
設定ブレードで、アクセス設定を選択します。
-
エンドポイントフィールドの値をコピーして保存します。
-
Nerdio Manager
-
[設定] ブレードで、[環境変数] を選択します。
-
以下の変数を除いてすべて削除します。
-
ApplicationInsights:ConnectionString
-
ApplicationInsights:InstrumentationKey
-
Deployment:WebAppName
-
-
同じページで、AppConfiguration:Endpointという新しい設定を作成します。
-
以前に保存したエンドポイントの値を貼り付けます。
-
変更を適用してください。
-
Nerdio Manager
-
サービスが期待通りに動作することを確認し、その後このガイドの次のセクションに進みます。問題が検出された場合は、Nerdio Support にお問い合わせください。
データ保護ストレージアカウントを変更するには:
注記
注意: 以下に説明する Nerdio Manager ストレージアカウントが環境に存在しない場合は、v5.5 より前にインストールされた 環境のキー移行プロセスの補足ガイダンスに進んでください。完了したら、このセクションに戻り、必要な作業を完了します。
-
Azure ポータルで、ストレージアカウントに移動します。
-
Nerdio Managerデータ保護キー ストレージアカウント を選択します。
注記
注意: これは dps############# という形式のデフォルトリソース名を持っています。
-
データストレージブレードで、コンテナを選択してください。
-
+コンテナー を選択します。
-
名前 に locks と入力します。
-
作成 を選択します。
-
新しいコンテナを右クリックし、SASを生成を選択します。
-
次のオプションを変更します:
-
権限ドロップダウンリストから 読み取る、書き込む、作成する を選択します。
-
有効期限:有効期限: 長期の日付を選択します(例: 2099年または2999年)。
-
-
変更を加えたら、SASトークンとURLを生成を選択します。
-
Blob SAS URLの値をコピーして保存します。
-
Key Vaultに移動します。
-
Nerdio Manager
注記
注意: これはデフォルト名 nmw-app-kv-############# です。
-
オブジェクト ブレードで、シークレット を選択します。
-
[+生成/インポート] を選択します。
-
次の情報を入力してください。
-
名前 名前: Deployment--LocksContainerSasUrlと入力します。
-
シークレット値:値: 以前に保存したSAS URLを貼り付けます。
-
-
必要な情報を入力したら、OKを選択します。
キー移行プロセス(
注記
Nerdio Manager これは補足ガイダンスであり、インスタンスがデータ保護キー ストレージ アカウントをdpsで接頭辞付けされていない場合にのみ必要です。これを作成し、キーを移行する必要があります。
-
migrate-dataprotection.ps1スクリプトをダウンロードします。
-
システム > 設定 > Nerdio に移動します。
-
Nerdio Manager migration セクションを展開します。
-
スクリプトをダウンロードします。
-
-
Cloud Shellインスタンスからmigrate-dataprotection.ps1スクリプトを実行します。
-
必要なスクリプトパラメータは次のとおりです:
./migrate-dataprotection.ps1 -resourceGroupName <ResourceGroupOfYourWebAppName> -webAppName <YourWebAppName>
-
Nerdio Manager
-
スクリプトを実行した後、以下の項目を確認してください:
-
dpsで始まるストレージアカウントがデプロイメントリソースグループに作成され、その中にdataprotectionkeysという名前のコンテナがあります。
-
nmw-app-kvで始まるKey Vaultが存在し、以下を持っています:
-
DataProtection-XXXXXXXXXXXXXという名前のキー。
注記
注意:例えば、キー識別子(バージョンなし)はhttps://nmw-app-kv-XXXXXXXXXXXXX.vault.azure.net/keys/DataProtection-XXXXXXXXXXXXXです。
-
DataProtection--Storage--Pathという名前のシークレットが存在し、その値は有効です。
注記
注意:シークレットの値をコピーして、新しいブラウザータブに貼り付けてテストしてください。XMLには上記のステップからのすべてのキーが含まれており、コメントこのキーはAzure Key Vaultで暗号化されていますが含まれているはずです。
-
-
App Serviceの設定には、以下の環境変数が定義されています:
-
DataProtection:Storage:TypeはAzureBlobStorageに設定されています。
-
DataProtection:Protect:KeyIdentifierの値にはキー識別子が含まれています。
-
-
-
上記のすべてが確認されたら、次のステップに進んでください。
-
App Serviceを再起動してください。
-
ストレージアカウント に移動します。
-
以前に作成した Nerdio Managerlocks コンテナが含まれているものを選択します。
-
データストレージブレードで、コンテナを選択してください。
-
ロックコンテナを選択してください。
-
新しいブロブファイルbackground.loopとweb.startupがコンテナに作成されたことを確認してください。
Nerdioは、ウェブアプリに負荷分散とインテリジェントなセッションルーティングを提供するためにAzure Front Doorサービスの使用を推奨しています。他の負荷分散サービスは将来的に検証される可能性があります。
Azure Front Doorを構成するには:
-
Azureポータルで、Front DoorとCDNプロファイルに移動してください。
-
+作成を選択してください。
-
カスタム作成を選択し、次にフロントドアの作成を続けるを選択してください。
注記
注意:プライベートエンドポイントと組み合わせて使用する場合、Front Door Premiumが必要になることがあります。
-
次の情報を入力してください:
-
基本 エリアで:
-
リソースグループ: Nerdio Manager アプリがデプロイされているリソースグループを選択します。
-
名前 名前を入力してください。
-
-
エンドポイント エリアで:
-
エンドポイントを追加を選択してください。
-
希望する名前を入力し、次に追加を選択してください。
-
-
-
必要な情報をすべて入力したら、レビュー + 作成を選択し、次に作成を選択してください。
-
新しいフロントドアを選択してください。
-
ルートボックスで、+ ルートを追加を選択してください。
-
次の情報を入力してください:
-
名前 名前:Default-Routeまたは任意の名前を入力してください。
-
許可されるプロトコル:ドロップダウンリストから HTTPS のみ を選択します。
-
転送プロトコル:HTTPS のみ を選択してください。
-
新しいオリジングループを追加を選択してください。
-
名前 名前:Default-Origin-Groupまたは任意の名前を入力してください。
-
セッションアフィニティの有効化:このオプションを選択します。
-
正常性プローブ > プロトコル:HTTPS を選択してください。
-
+オリジンを追加を選択し、作成する各オリジンの以下の情報を入力してください。
注記
Nerdio Manager 各ウェブアプリのインスタンスごとに、オリジンを追加する必要があります。
-
名前 Nerdio-Webapp-[number] と入力してください。
注記
注意: 任意の名前を使用できますが、各名前は一意でなければなりません。
-
オリジンタイプ:ドロップダウンリストから App Service を選択してください。
-
正常性プローブ > プロトコル:HTTPS を選択してください。
-
正常性プローブメソッド:GET を選択してください。
-
正常性プローブのパス:/public/health/ping に設定してください。
-
すべてのオプションが入力されたら、追加を選択してください。
-
-
-
-
すべての変更を保存し、Azure Front Doorプロファイルの作成を完了してください。
-
新しいAzure Front Doorを選択してください。
-
概要で、エンドポイントホスト名の値をコピーして保存してください。
注記
注意:ここでのサフィックスは*.azurefd.netです。
-
設定ブレードで、プロパティを選択してください。
-
リソースIDをコピーして保存してください。
-
アプリ構成に移動してください。
-
この文書の構成プロセスセクションで作成したリソースを選択してください。
-
操作ブレードで、構成エクスプローラーを選択してください。
-
次のキー名を作成してください:
-
Deployment:MultiInstance:ProxyHostname
キーの値は、以前に保存したエンドポイントホスト名である必要があります。
-
Deployment:MultiInstance:FrontDoorProfileId
キー値は、以前に保存したリソースIDである必要があります。
-
-
[アプリ登録] に移動します。
-
Nerdio Manager
-
管理ブレードで、認証を選択してください。
-
既存の自動生成されたリダイレクトURIを削除してください。
-
次のルールを追加し、AFD_ENDPOINT_HOSTNAMEを以前に保存した負荷分散アドレスの値に置き換えてください:
-
https://AFD_ENDPOINT_HOSTNAME/signin-oidc
-
https://AFD_ENDPOINT_HOSTNAME/
-
-
フロントチャネルログアウトURLをhttps://AFD_ENDPOINT_HOSTNAME/signout-oidcに変更してください。
-
すべての変更を保存してください。
-
App Service を再起動します。
再起動後、 Nerdio Manager
注記
注意: 必要な各追加インスタンスについて、以下の手順を繰り返してください。このプロセスには、アプリのダウンタイムが必要です。
前提条件はすべて完了し、負荷分散機能がテストされ、確認されました。次のステップは、必要に応じて追加の App Service を作成することです。
追加の App Service を作成するには:
-
Azure ポータルで、[App Services] に移動します。
-
Nerdio Manager
-
設定ブレードで、WebJobを選択してください。
-
実行 オプションを選択し、その後 停止 を選択してください。
-
開発ツールブレードで、アプリをクローン作成を選択してください。
-
希望する名前、リージョン、App Service プランを入力してください。
-
クローン作成 を選択してください。
この操作には約5〜10分かかります。
-
新しく作成された App Service を開いてください。
-
設定 ブレードで、アイデンティティ を選択してください。
-
システム割り当て エリアで、ステータス を オン に設定してください。
-
[保存] を選択します。
-
設定 ブレードで、環境変数 を選択してください。
-
デプロイメント:WebAppName を、上で作成した新しい Web アプリのリソース名に変更してください。
-
アプリ構成 に移動してください。
-
新しく作成されたリソースを選択してください。
-
アクセス制御 (IAM) ブレードで、+追加 > 役割の割り当てを追加 を選択してください。
-
メンバー エリアで、次の内容を変更します。
-
選択されたロール:App Configuration Data Reader を選択します。
-
アクセス割り当て先:マネージド ID を選択します。
-
メンバー: メンバー: +メンバーを選択 を選択し、その後 Nerdio Manager
-
-
変更を適用してください。
-
Key Vaultに移動します。
-
Nerdio Manager リソースで、標準プレフィックス名 nmw-app-kv を選択してください。
-
アクセス ポリシー ブレードで、+作成 を選択してください。
-
次の情報を入力してください:
-
権限 エリアで:
-
暗号化操作:ドロップダウンリストから Unwrap Key および Wrap Key を選択します。
-
シークレット管理操作:ドロップダウンリストから Get、List、Set、および 削除する を選択します。
-
-
プリンシパル タブで、 Nerdio Managerサービスプリンシパル を検索して選択してください。
-
-
必要な情報をすべて入力したら、レビュー + 作成 を選択し、その後 作成 を選択してください。
注記
注意: 以下の手順は、すべての必要な追加 Web アプリが作成された後にのみ実施してください。
-
すべての App Service(Webアプリと WebJob)が開始されていることを確認してください。
-
フロントドアと CDN プロフィール に移動してください。
-
新しい Azure Front Door プロファイルを選択してください。
-
設定 ブレードで、オリジングループ を選択してください。
-
新しく作成したオリジングループを選択してください。
-
+オリジンを追加 を選択してください。
-
以前に作成したオリジンと同じ値を入力し、ホスト名 で新しくコピーした App Service を選択してください。
-
すべての変更を保存してください。
操作には最大5分かかる場合があります。
次のテストを実施してください:
-
負荷分散された Azure Front Door の URL を複数回開き、理想的には複数のエンドポイントからアクセスしてください。 Nerdio Manager
-
各 App Service を交互に停止してください。サービスは、フェイルオーバーイベント中に構成された Azure Front Door のヘルスプローブ間隔(既定は100秒)では利用できません。
-
上記のタイムアウト後に、たとえ単一のインスタンスしか実行されていなくても、 Nerdio Manager
-
Azure Front Door のトラフィックログを確認し、エラーや誤設定がないか確認してください。
オプションで、App Service を構成して、ネイティブの Web アドレスを使用して Web アプリにアクセスする試みをブロックしてください。これにより、すべての通信が Azure Front Door サービスを経由することが保証されます。
Azure Front Door エンドポイントを制限するには:
-
各 Web アプリの 設定 ブレードで、ネットワーキング を選択してください。
-
アクセス制限なしで有効 を選択してください。
-
次の情報を入力してください。
-
パブリックネットワークアクセス:選択した仮想ネットワークと IP アドレスから 有効を選択します。
-
一致しないルールのアクション:拒否 を選択します。
-
サイトアクセスとルール セクションで、+追加 を選択し、次の情報を入力してください:
-
名前 名前: 任意の値を入力してください(例: AFD)。
-
優先度:タイプ
-
タイプタイプ: ドロップダウンリストから サービスタグ を選択してください。
-
サービス タグドロップダウンリストから AzureFrontDoor.Backend を選択してください。
-
X-Azure-FDID:必要に応じて、一意の値をヘッダーに含めてください。
注記
注意: この情報は、概要 セクションにあるフロントドア プロファイルのフロントドアIDから確認できます。
-
新しいルールを保存します。
-
-
-
必要な情報をすべて入力したら、変更を保存します。
コメント (0件のコメント)