壊滅的なフェイルオーバー

2005年3月7日

最新のアプリケーション サーバーでよく宣伝されている機能の 1 つは、クラスター内でフェイルオーバーを提供する機能です。クラスタリングはアプリケーションの信頼性を向上させます。サーバーの 1 つがダウンした場合、顧客にサービスを提供するためにさらに多くのサーバーを使用できます。フェイルオーバーはさらに信頼性を向上させることができます。やり取りの途中でサーバーがダウンした場合、クラスターはそのやり取りを別のサーバーに移動できます。

ただし、これは問題になる可能性があります。

リクエストによって、サーバー ソフトウェアのバグをうっかり公開してしまうなど、サーバーがクラッシュするようなことが行われる可能性があります。そのため、フェイルオーバーが発生すると、致命的なリクエストが別のサーバーに移動され、そのサーバーが次にダウンする可能性があります。タイミングがぴったり合うと、最初のサーバーが再起動した時点で、そのリクエストを再度受信する準備が整っています。

(心配する必要はありません。これは実話です。)

そのため、サーバーが繰り返しダウンしている場合は、誤ったトランザクションが原因である可能性があります。これを防ぐには、数回のフェイルオーバーが行われたリクエストを移行しないようにするチェックが必要です。フェイルオーバーするのは良いことですが、ファームが頻繁に行うようにはしたくありません。

更新: クリストファー バウスは、この問題はクラスターに意図的に異なる機器を使用する必要があることを示唆していると指摘しました。そのため、Java アプリケーションを実行している場合は、異なるアプリケーション サーバー、オペレーティング システム、ハードウェアを組み合わせて使用することを検討してください。もちろん、ミックスは管理が複雑になりますが、この問題が発生する可能性は大幅に低減されます。