AppFabricキャッシュの落とし穴

Web開発プラットフォームの一部として、MicrosoftはNoSQLキャッシングソリューションであるAppFabric Cacheも提供しています。 AppFabric Cacheの興味深いモードの1つは高可用性です。障害が発生した場合にサービスが中断せず、すべてのデータがアプリケーションで使用可能なキャッシュサーバーのクラスターを作成する機能です。 単一障害点のない.NET Webアプリケーションを作成する場合、そのようなキャッシュサーバーを使用することは簡単で自然なソリューションのように思えます。 AppFabricはオペレーティングシステムの一部としてMicrosoftから無料で提供されているため、特にここでは価格を喜ばせることができます。 ただし、キャッシングのソリューションを選択することは、表面にあるものだけでなく見るのにも役立ちます。



仕組み


キャッシュ内のオブジェクトに対して高可用性モードをオンにすると、クラスターの異なるサーバーに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ドメインの一部にする必要があります。



どうする?



このすべてはかなり悲しく、高可用性の#1ファイルになる可能性がありますが、クラスター内のすべてのコンピューターに同じ名前とパスワード(アカウントミラーリング)を持つWindowsアカウントがある場合、幸いにも簡単な解決策を見つけることができます。 この設定は、AppFabric Powershell Consoleを使用して実行できます。クラスターをセットアップするための標準GUIプログラムでは、これを実行できません。



調整
AppFabricキャッシュは、キャッシュにRAMを使用します。 Memory \ Available MBytesカウンターがコンピューターの物理メモリサイズの15%未満の場合、ノードはスロットル状態に切り替わります。 この状態では、このホストに新しいデータを書き込むことはできません。 リソースを計画するときは注意してください。



結論




All Articles