仕組み
キャッシュ内のオブジェクトに対して高可用性モードをオンにすると、クラスターの異なるサーバーに2つのインスタンスが存在するため、1つのサーバーが失われてもデータが失われることはありません。
(ドキュメントmsdn.microsoft.com/en-us/library/ee790974.aspxから)
この構成では、アプリケーションの何も必要としません。APIは、キャッシュが高可用性なしで機能する場合とまったく同じです。 したがって、組み込みプロバイダーを使用してこのようなキャッシュにセッションデータを格納し、1行のコードを記述することなく、アプリケーションと障害に対する耐性を拡張できます。
これはかなり興味深いように見えますが、完成したアプリケーションをデプロイする前に知っておくべきポイントがいくつかあります。これは、実稼働サーバーでAppFabricの下で開発されました。
高可用性には最低3台のサーバーが必要です
高可用性モードのAppFabricクラスターは2台のコンピューターで動作しますが、1台のコンピューターでは動作しません。 したがって、単一障害点を取り除く場合、少なくとも3台のコンピューターが必要です。そのため、そのうちの1台が失われても、サービスの作業は停止しません。
高可用性では、すべてのコンピューターでWindows 2008 / 2008R2 Enterprise Edition(またはそれ以上)が実行されている必要があります
ホスティングプロバイダーのEnterprise Editionがイメージのリストにあるかどうかを確認するか、スタートアップのライセンスを取得するために特別なMicrosoftプログラムを使用できます(http://www.microsoft.com/bizspark/)。
3台のコンピューターのキャッシュクラスターがある場合、これらのコンピューターの1つが突然クラッシュするとどうなりますか?
他のコンピューターにオブジェクトのコピーがあるため、サービスが中断することなく機能することを決定できますよね? いいえ、まったくありません。 サービスの規則は、オブジェクトのコピーが少なくともクラスターの2つのノード上になければならないことを示しています。 ノードの1つが使用できなくなると、すべてのオブジェクトが重複して表示されるまで、単一のコピーに存在するコピーのオブジェクトがクラスターの他のノードにコピーされます。 オブジェクトはコピーされますが、サービスは利用できません。
特に、これはAppFabricクラスター内のコンピューターの1つを安全に再起動できないことを意味します。これは、サービスが中断されるためです。
ノードに大量のRAMが含まれている場合、コピーが長くなるため、これは大きな問題になります。 この問題を最小限に抑えるには、より少ないRAMでより多くのサーバーを維持することをお勧めします。
構成
すべてのクラスタノードは、ファイル共有またはMSSQLサーバーに含まれる共通の構成を使用します。 単一障害点を取り除くために高可用性モードでサービスを展開する場合、ファイル共有の使用は非常に愚かです;構成のあるコンピューターにアクセスできないと、キャッシュが停止します。 ただし、これは驚きです。SQLサーバーで構成を構成する場合、構成ユーティリティではこれを行うことができず、サーバーをWindowsドメインの一部にする必要があります。
どうする?
- Windows 2008R2クラスターの機能を使用して、ファイルボールの円滑な運用を確保する
- サーバー環境にドメインコントローラーを展開します。 ドメインコントローラー自体にはAppFabricキャッシュをインストールできないことに注意してください。 さらに、ドメインコントローラーは潜在的な新しい障害ポイントになります。
- 独自のプロバイダーを作成して構成を保存します。
このすべてはかなり悲しく、高可用性の#1ファイルになる可能性がありますが、クラスター内のすべてのコンピューターに同じ名前とパスワード(アカウントミラーリング)を持つWindowsアカウントがある場合、幸いにも簡単な解決策を見つけることができます。 この設定は、AppFabric Powershell Consoleを使用して実行できます。クラスターをセットアップするための標準GUIプログラムでは、これを実行できません。
調整
AppFabricキャッシュは、キャッシュにRAMを使用します。 Memory \ Available MBytesカウンターがコンピューターの物理メモリサイズの15%未満の場合、ノードはスロットル状態に切り替わります。 この状態では、このホストに新しいデータを書き込むことはできません。 リソースを計画するときは注意してください。結論
- AppFabric Cacheサービス自体は無料ですが、高可用性にはEnterprise Edition以上のサーバーオペレーティングシステムと、少なくとも3台のコンピューターが必要です。
- 実際には、高可用性はそれほど高くありません。1つのノードが失われると、キャッシュにアクセスできないときにアプリケーションが動作するスクリプトを特に想定しない限り、キャッシュ全体とおそらくアプリケーションが一時的に使用できなくなります。 それにもかかわらず、サービスはしばらくしてからデータを失うことなく回復します。 これがアプリケーションで許可されるかどうかはユーザーが決定しますが、この製品の使用を厳しく連絡する前に、それを知っておく方が良いです。