
10.2
クローニングと負荷分散
345
スティッキー負荷分散には大きな問題がひとつあり、それは冗長なシステムをもっていることの利点
をほぼ台無しにしてしまうという事実です。冗長システムの利点はすべてのインスタンスが同じで、動
作を止めたインスタンスがあれば他のインスタンスが取って代わることから生まれるのです。そのよう
な理由から、常にスティッキー負荷分散を避けるようにし、セッションのステートを共有ストアに保持
するようなアプリケーションを構築するか、ステートのある接続をまったく用いないようにする(たと
えばリクエスト自体にステートを含める)ことが推奨されます。
スティッキー負荷分散を必要とするライブラリとして、
Socket.io
(
http://socket.io/
blog/introducing-socket-io-1-0/#scalability
)があげられます。
10.2.3
リバースプロキシによるスケーリング
Node
ウェブアプリケーションをスケーリングする際の選択肢としては、
cluster
が唯一のものでは
ありません。実際、より伝統的な技法が採用される場合が多いのです。というのは、実運用環境にお
いてそうした技法のほうが制御しやすく、より高いパワーも引き出せるからです。
cluster
を使わない方法とは、同じアプリケーションの「スタンドアローンのインスタンス」を異な
るポートやコンピュータで起動し、リバースプロキシ(ゲートウェイ)を使ってこうしたインスタンスに
アクセスできるようにし、トラフ