以下を提供するHTTP負荷分散ソリューションを探しています。
1)ポートXでHTTP接続を受け入れ、ランダムに、またはラウンドロビン方式で、他の複数のホスト(および/またはポート)の1つに転送します。
2)サーバーの応答に特定の値を持つ特定のHTTPヘッダーが含まれている場合(つまり、 'Magic-Number:12345')、それを覚えて、同じヘッダーを含む後続のすべてのリクエストをこのサーバーに転送します。
3)一定の間隔で、指定されたHTTP要求をすべての宛先サーバーに送信して、キープアライブテストを実行します。どちらかのサーバーが応答しない場合は、サーバーが再びオンラインになるまで転送を停止します。
4)(重要ではありませんが、持っていて良かったです)クライアントからのHTTPS接続を受け入れ、サーバーへのHTTP接続に変換します。
ソリューションは、無料またはオープンソースソフトウェア、あるいはその両方で構成され、Windows 200xServerで実行される必要があります。
助言がありますか?
pdate: CygwinまたはPortableUbuntu(または他のColinuxディストリビューション)も、適切な* nixソリューションを実行できる場合、実行可能なオプションです。
正しく動作するかどうかを確認するものが手元にないので、これを頭/記憶から書きますが、これがあなたのヒントになることを願っています。
だから、私の答えは:
もちろん、Apacheの mod_proxy_balancer
でこれを行うことができます。あなたはそのような何かでこれを達成することができるはずです:
ProxyPassReverse / http://Host1:80/
ProxyPassReverse / http://Host2:80/
<Proxy balancer://cluster>
BalancerMember http://Host1:80 route=LB1
BalancerMember http://Host2:80 route=LB2
ProxySet stickysession=MYSESSIONID
</Proxy>
したがって、ポイント1に関しては、mod_proxy_balancer
の「リクエストカウントアルゴリズム」セクションをお読みください。
ポイント2について:HTTPヘッダーの解析については本当に知りません。上記の例では、追加のURLパラメータMYSESSIONID
を使用して、同じホストへの同じ接続の一部であるトラフィックをプロキシします。クッキーも使えると思います。いずれにせよ、これはLB1またはLB2として識別されるアプリケーションによって処理される必要があります(これらはセッションIDまたはCookieの一部として追加されます)。
Re 3:ロードバランサーはすべてのメンバーを監視し、応答がない場合はメンバーを無効にします。 Webインターフェイスを介してノードを有効/無効にすることもできます(mod_status
、「Balancer Managerサポートの有効化」を参照)。
ポイント4に関しては、すべてのトラフィックをバランサーメンバーのポート80にプロキシするポート443でリッスンするSSL対応のVirtualHostをセットアップできます。
私はここ数年nginxを使用していて、非常に満足しています。
nginx(「エンジンX」と発音)は、軽量で高性能なWebサーバー/リバースプロキシおよび電子メール(IMAP/POP3)プロキシであり、BSDのようなライセンスでライセンスされています。
負荷分散と逆プロキシが得意です。例をチェックしてください ここ
これはWindows用ではないことはわかっていますが、この代替案を検討することはセットアップで非常に興味深いと思うので、とにかく答えるつもりです。
HAProxy はHTTPプロキシです(レイヤー4以下にある以外はプロキシできます)。それはあなたがしたいことのほぼすべてを行います。ドキュメントはあまりきれいではありませんが、実際に時間をかけて読むと、必要な情報がすべて含まれていることがわかります。
それはほとんど何でも実行されるので、SSLを大量に実行しない限り、大きくて高価なマシンを購入する必要はありません。
HTTPヘッダーベースのLBを実行するPoundLoadBalancerを確認してください。
これは、IIS 7でも、URL書き換えをネットワーク負荷分散と組み合わせて使用することで可能だと思います。基本は次のとおりです。
私は過去にUnix環境でmod_cacheを使用してApacheを使用していました。ユーザーの負荷が低い場合は正常に機能しましたが、負荷が高い日はシステムが1日中ダウンしました。
いくつかのテストの後、Varnish Cacheに移動しましたが、今ではすべてがうまく機能しています。
問題は、Unix環境のみがサポートされており、新しいニスウィンドウのcygwinベースのバージョンが存在することですが、本番環境に適しているかどうかはわかりません。