web-dev-qa-db-ja.com

AlwaysOn AGとFCI

AlwaysOn可用性グループ(AG)およびAlwaysOnフェールオーバークラスターインスタンス(FCI)次のパターンが表示されます。

  1. FCIはHAシナリオ用です。
  2. プライマリと同じ場所に配置されたAG同期セカンダリレプリカは、HAシナリオ用です。
  3. 別のデータセンターにあるAG非同期セカンダリレプリカは、DRシナリオ用です。

これが これを論じているMSリンクの例 です。

オプション#1と#2はどちらもHAシナリオ用であるため、どちらを選択するか? MSが#1と#2の両方のコストとRPO/RTOメトリックを公開した場合、どちらを使用するかを決めるのはかなり簡単です。

あるいは、これらのオプション間のROIの違いを理解する別の方法があるかもしれません。たとえば、オプション#2はVLDBに最適であり、オプション#1は非常に大量のトランザクションに最適です。知りません。

繰り返しになりますが、DBAがオプション#1と#2から選択するために使用する選択基準は何ですか?

さらに複雑にするために、オプション#1と#2を組み合わせることができることを知っています。 2つのオプションを組み合わせるのはいつ賢明ですか? 2つのオプションを組み合わせる意味がないのはいつですか?これらのオプションを組み合わせると、AGは自動フェイルオーバーをサポートしなくなります。面白い雑学ですが、私の質問には答えません。

ちなみに、最終的なソリューションをAzure IaaSにプロビジョニングするつもりです。 Always On FCIを使用する場合、おそらくStorage Spaces Direct(S2D)を使用して準SANを作成します。

更新

比較できる2つの記事を見つけました。最初は MS docs で、もう1つは 適切な可用性技術の選択 です。どちらにもこのようなチャートがあります:

╔═════════════════════════════╦══════════════════════════╗
║ FCI                         ║ AG                       ║
╠═════════════════════════════╬══════════════════════════╣
║  * Server Level             ║  * Database Level        ║
╠═════════════════════════════╬══════════════════════════╣
║  * Requires shared storage  ║  * Uses direct           ║
║     (SAN or Storage Spaces  ║     attached storage     ║
║     Direct)                 ║                          ║
╠═════════════════════════════╬══════════════════════════╣
║  * RTO from 30              ║  * RTO typically less    ║
║     seconds to 20 minutes.  ║     than 30 seconds      ║
╠═════════════════════════════╬══════════════════════════╣
║  * RPO: no data loss.       ║  * RPO: ???              ║
╠═════════════════════════════╬══════════════════════════╣
║  * Only Passive Secondaries ║  * Active or Passive     ║
║                             ║     Secondaries          ║
╠═════════════════════════════╬══════════════════════════╣
║  * One SQL Server           ║  * Multiple SQL Server   ║
║     instance/license        ║     instances / licenses ║
╚═════════════════════════════╩══════════════════════════╝

この記事ではAG RPOについてコメントしていませんでしたが、同期セカンダリレプリカからの復旧時にデータの損失はないことを他の場所で読みました。それが本当かどうかはわかりませんし、非同期セカンダリレプリカのRPOが何であるかもわかりません。 Azureには 2つのドメインコントローラーが必要なAGリソース がAGで作成されます(独自のドメインコントローラーがあるかどうかに関係なく)。 Azure FCIに同じような強引な要件があるかどうかはわかりません。

最も重要なこと-2つの手法を組み合わせることがなぜ価値があるのか​​、私にはまだわかりません。私はそれを読んだだけです "改善"または "最大化" 可用性。それは漠然とした主張IMOです。

雑学クイズ: 2つのノードのFCIは避ける必要があります を示唆するディスカッションも見つけました。

5
Brent Arias

一般に、FCIはAGと比較して、すでに上で述べたさまざまな理由により、より有益です。もちろん、2ノードFCIは完全に優れていますが、S2Dは4ノード未満の展開で問題があることがわかっているため( ソース )、ストレージスペースの上に直接構築しないでください。

Azureの場合、( example )のような2ノードまたは3ノードのシナリオで機能するように設計されたVSANに固執します。

ここ は、FCIとAGに関するもう少し詳しい情報です。

5
Net Runner

これは、すべてのクライアントの要件と、HAの目的で2つ(オプション1と2)のうちどちらがより良いオプションであるかに関する必要性によって異なります。一般的にチェックされるさまざまな基準を以下に示します。

標準版の場合は、FCI(オプション1)を使用する必要があります。

以下の条件がすべて満たされている場合は、AG(同期-オプション2)を使用してください。

  • SQL ServerのEnterpriseエディション(Basic AGはSQL Server 2016以降のStandardエディションでも利用可能)
  • 安全性を高めるために、データベースファイルの複数のコピーを格納するためのストレージ容量が必要です。ストレージは、AGの複数に対して1セットのデータファイルしかないため、FCIの単一障害点です。
  • トランザクションはセカンダリ(B)サーバーでコミットされるまでアプリケーションに戻らないため、ネットワークとディスクのレイテンシーをチェックして、サーバーAのディスクからサーバーB 'のディスクまでの合計レイテンシーがアプリケーションの許容範囲内かどうかを確認します。
  • システムデータベースは同期されないため、サーバーレベルのオブジェクトはサーバーAからサーバーBに自動的に同期されません。したがって、参加しているサーバー間ですべてのサーバーレベルオブジェクトを手動で同期するか、2つのサーバー間でそのようなサーバーレベルオブジェクトを同期し続ける自動化ソリューションを展開します。
  • AGの運用上の問題に対処するのに十分な専門知識があります。 AGはFCIよりもはるかに複雑であるため、AGから発生する問題、特にパフォーマンスに関する問題をトラブルシューティングする準備をする必要があります。

または

プライマリインスタンスの負荷を減らすためにレポートクエリ(またはバックアップ)をセカンダリサーバーにオフロードする必要がある場合は、AGを使用してください。

HAとDRの両方の目的で(1と3)または(2と3)を組み合わせると、1または2がHAソリューションを提供し、3がDRソリューションになります。したがって、完全なHAおよびDR戦略を実現するには、常に1&3または2&3を組み合わせる方が適切です。

しかし、1と2を組み合わせることに何らかの利点があるかどうかは不明です。

4
Masood Hashim