Microsoft Dynamics 365 (オンライン) での災害復旧
公開日: 2017年1月
対象: Dynamics 365 (online)、Dynamics 365 (on-premises)、Dynamics CRM 2016、Dynamics CRM Online
障害復旧とは、計画された、または予期していなかったサービスの中断から回復する Microsoft Dynamics 365 (オンライン) の機能です。 計画されたサービス中断の例は、定期的なシステムのデータセンター管理です。 計画されていないサービス中断の一例は、データ センターのキー コンピュータシステムまたはネットワークコンポーネントの障害です。 いずれかの場合は、一時的に組織のデータおよび Microsoft Dynamics 365 (オンライン) サービスへのアクセス権を失います。
サービスの計画された中断に先立って、サービスのメンテナンスの日時を明らかにするWeb アプリケーションまたは Outlook 用 Dynamics 365 が公示され、 組織のビジネス データへのアクセスの中断に備えることができます。 計画されていないサービス中断では、組織が現在計画されていないメンテナンス中であることが通知されます。
障害または災害が発生すると、よく定義されたプロセスが Microsoft Dynamics 365 (オンライン) データ センターの管理者により適応され、サービス中断から回復を実行します。 これらのサービス中断からの回復を行うプロセスとソフトウェアは、障害復帰と呼びます。Microsoft Dynamics 365 (オンライン) のデータセンターが、別々のサーバーにある組織データの複製および同期(代替)コピーを保持します。 データへのアクセス権がすでにないデータ センターで災害が発生した場合は、災害を監視している管理者はプライマリ組織からこの代替組織へアクセスを切り替えることで、サービスの中断を最小限に抑えることができます。 障害が修正されたら、プライマリ組織のサービスへのアクセスを復元できます。
この復元はデータセンターで行われ、ユーザーや.NET で管理されるアプリケーションで透過的に扱われます。 ただし、アプリケーション開発者の扱うべき問題がひとつあります。それはデータ損失です。Microsoft Dynamics 365 (オンライン) サービスが障害に遭遇すると、Web サービス呼び出しを使用してアプリケーションが実行するデータの変更操作が正常に完了しない場合があります。 これによってデータの損失が発生します。 このトピックの次のセクションでは、データ損失問題に対処するためにアプリケーションを記述する方法について説明します。
このトピックの内容
フェールオーバーの回復用に .NET 管理コードのアプリケーションを開発する
フェールオーバーの回復の非.NET アプリケーションを開発する
ベスト プラクティス
フェールオーバーの回復用に .NET 管理コードのアプリケーションを開発する
開発者は、コードを実装することで、データ センターと障害回復に関する独自のアプリケーションを作成することができます。それにより、フェールオーバー イベントをチェックし、正常に終了させることができます。 アプリケーションは EndpointSwitched と EndpointSwitchRequired 通知のイベントをサブスクライブできます。 これらのイベントは OrganizationServiceProxyなどの派生クラスでも使用できます。 これらのイベントの詳細については、ServiceProxy<TService>クラスドキュメントを参照してください。
アプリケーションは、組織が自動フェールオーバーの動作に対応しているかどうか、EndpointAutoSwitchEnabled のプロパティを確認します。 このプロパティは、フェールオーバーの代理エンドポイントが使用できる組織に対して true と設定されます。 そのほかの特殊文字コードは、EndpointAutoSwitchEnabled が true であるときに通知イベントへオプションでサブスクライブする以外、アプリケーションで必要とされません。
災害イベントおよびフェールオーバーの一般的に使用するアプリケーション ロジックのフロー
災害イベントは Microsoft Dynamics 365 (オンライン) のデータセンターで発生します。
アプリケーションはサービス プロキシ クラス オブジェクトを使用してサービスを呼び出します: OrganizationServiceProxy、DiscoveryServiceProxy。
サービス プロキシ クラス オブジェクトは、サービス呼び出しを試みると例外が発生します。
呼び出しの対象組織がフェールオーバーに対応していない場合は、手順 9に進んでください。
EndpointSwitchRequired イベントがスローされます。
EndpointSwitched イベントがスローされます。
サービス プロキシ クラス オブジェクトが自動的に呼び出しを再試行します。
次の呼び出しが成功したら、アプリケーションは正常に続行します。
呼び出しが失敗する場合は、例外がアプリケーションに返されます: fault.Detail.ErrorCode == -2147176347のときEndpointNotFoundException、TimeoutException、FaultException<OrganizationServiceFault>。
エンドポイント スイッチ イベントが受信され、適切に処理されたら、データ損失見込みの有無を確認するコードを実装できます。
プライマリ組織エンドポイントに影響を与える障害がデータセンターに接続されたら、代替エンドポイント URL から組織のプライマリ エンドポイント URL エンドポイントに返された障害は、計画された組織メンテナンスの一部として発生します。
フェールオーバーの回復の非.NET アプリケーションを開発する
SOAPやODATAを使用してWeb サービスにアクセスする Java アプリケーションなど、Microsoft Dynamics 365 SDKアセンブリにリンクしないアプリケーションは、ターゲット組織のフェールオーバー URL にアクセスしようとする場合があります。 フェールオーバー代替組織の URL は、プライマリ組織の URL に “--s”を追加したものです。 たとえば、Contoso という名前の組織は、次の表に示す、プライマリ URL と代替 URL があります。
プライマリ組織の URL |
代替組織の URL |
---|---|
https://contoso.api.crm.dynamics.com |
https://contoso--s.api.crm.dynamics.com |
非.NET 接続アプリケーションの場合、サービスの停止およびフェールオーバーの通知を受信するためにアプリケーションがサブスクリプションできるイベント通知はありません。 サービス中断中には、アプリケーションは先にリストしたようなさまざまなフォールト例外を受信します。 この時点で、アプリケーションはターゲット組織のフェールオーバーの代替 URL に接続を試みることができます。 災害が修正されると、組織のプライマリ URL に返された障害は計画された組織メンテナンスの一部として発生します。
ベスト プラクティス
次のリストでは、サービスの停止と障害回復の処理を行うとき、アプリケーションをより安定させるために実行できるベスト プラクティスについて説明します。
EndpointAutoSwitchEnabled プロパティの値が true に設定されているかどうかをチェックするようにアプリケーション コードを記述します。true の場合は、EndpointSwitched と EndpointSwitchRequired 通知イベントをサブスクライブすることを検討します。
アプリケーションが、データ損失により重大な事態を招くような重要なデータを扱う場合は、イベント ハンドラー コードを記述するか、記述された例外をキャッチして、ビジネスニーズに適した災害イベントおよびフェールオーバーの処理を行います。
関連項目
Microsoft Dynamics 365
© 2017 Microsoft. All rights reserved. 著作権