Service Fabric サービスの可用性

この記事では、Azure Service Fabric がサービスの可用性を維持する方法の概要を示します。

Service Fabric ステートレス サービスの可用性

Service Fabric サービスには、ステートレスなものとステートフルなものがあります。 ステートレス サービスとは、高い可用性または信頼性が求められるローカル状態のないアプリケーション サービスです。

ステートレス サービスを作成するには、InstanceCount を定義する必要があります。 このインスタンス数により、クラスター内で実行されるステートレス サービスのアプリケーション ロジックのインスタンス数を定義します。 ステートレス サービスをスケール アウトする場合は、インスタンス数を増やす方法が推奨されています。

ステートレスの名前付きサービスのインスタンスでエラーが発生すると、クラスター内の適当なノードに新しいインスタンスが作成されます。 たとえば、ステートレス サービス インスタンスが Node1 で失敗すると、Node5 で再度作成されます。

Service Fabric ステートフル サービスの可用性

ステートフル サービスには、関連付けられている状態があります。 Service Fabric の場合、ステートフル サービスはレプリカのセットとしてモデル化されます。 各レプリカは、サービスのコードの実行中のインスタンスです。 レプリカには、そのサービスの状態のコピーもあります。 読み取りおよび書き込み操作は、1 つのレプリカ (プライマリと呼ばれます) で実行されます。 書き込み操作からの状態の変更は、そのレプリカ セット内のその他のレプリカ (アクティブ セカンダリと呼ばれます) に "レプリケート" されて適用されます。

プライマリ レプリカは 1 つのみですが、アクティブ セカンダリ レプリカは複数ある場合があります。 アクティブ セカンダリ レプリカの数は構成可能で、レプリカの数を多くすると、ソフトウェア障害やハードウェア障害が多数同時発生した場合への耐性が得られます。

プライマリ レプリカがダウンした場合、Service Fabric はアクティブ セカンダリ レプリカの 1 つを新しいプライマリ レプリカにします。 このアクティブ セカンダリ レプリカは、更新されたバージョンの状態をレプリケーション経由で既に取得しているため、その先の読み取り処理と書き込み処理を続行できます。 このプロセスは再構成と呼ばれます。詳細については、再構成に関する記事を参照してください。

レプリカがプライマリであったりアクティブ セカンダリであったりするこの概念は、"レプリカ ロール" と呼ばれます。 レプリカの詳細については、「レプリカとインスタンス」をご覧ください。

次のステップ

Service Fabric の概念について詳しくは、次の記事をご覧ください。