負荷を分散し、本番サーバーで冗長性を実現するためのさまざまなシステムがあります (Web サーバーだけではありません)。
- ラウンドロビン DNS
- Linux 仮想サーバー
- シスコ ローカル ディレクタ
- F5 BigIP
- Windows NLB
- 等?
これら (または別のもの) のいずれかを本番環境で使用する場合、どれを使用しますか? それはあなたにとってどれくらいうまくいきますか?他人を評価したことはありますか?
負荷を分散し、本番サーバーで冗長性を実現するためのさまざまなシステムがあります (Web サーバーだけではありません)。
これら (または別のもの) のいずれかを本番環境で使用する場合、どれを使用しますか? それはあなたにとってどれくらいうまくいきますか?他人を評価したことはありますか?
HAProxyは優れたソフトウェア ロード バランサーです。設定が簡単で、高度なカスタマイズが可能で、パフォーマンスが非常に優れています ( 10Gb NIC を飽和させる可能性があります)。
HAProxy を当社に適したものにする主な機能:
HAProxy で煩わしいのは構成ファイルだけです。サーバーの構成をプログラムで変更する便利な方法はなく、さまざまなオプションを理解するには学習曲線が必要です。
私はLVSを使用してきましたが、一度セットアップするとメンテナンスが非常に少ないことがわかりました。サイド プロジェクトで、3 つの Web サーバーのバランスを取っていたサイトでhaproxyを試しました。魔法のように機能し、構成が非常に簡単でした-強くお勧めします.
Apache プロセスでは、(d) を使用します: http://www.f5.com/products/big-ip/ これは業界標準のようです。それはすべて、あなたが支払っている金額と、何を負荷分散しているかにかかっていると思います.
たとえば、Websphere は次のように実行できます。
大きな IP -> Apache 1 -> WebSphere 1
大きな IP -> Apache 2 -> WebSphere 2
またはそれを越えることができます:
big ip -> Apache 1 -> WebSphere 1 & 2 (ラウンドロビン)
big ip -> Apache 2 -> WebSphere 2 & 1 (ラウンドロビン)
後者を使用しましたが、完全に機能しました。1 つのホストに障害が発生するシナリオに注意してください。ほとんどの場合、タイムアウトになるだけでその要求は失われます。
37signalsのMarkImbriacoは、彼の会社がRailsの負荷分散にHAproxyをどのように使用しているかを示す短いスクリーンキャストを作成しました。
Ultramonkeyを下のリストに加える。
冗長性のためにのみDBを使用する傾向があります。Oracle Dataguardはうまく機能しますが、セットアップが複雑です。
coyotepointのE250siを使用しています。
この特定のロードバランサーを選択した理由
追加することの1つは、ロードバランサーに物理ポートが4つしかない場合でも、スイッチを物理ポートの1つに接続することで、より多くのポートを有効にできることです。
このロードバランサーについて言うことはあまりありません。それは私たちにとって良いことであり、再起動や問題なしで10か月ほど実行されています。サーバーに障害が発生すると、サーバーは即座にローテーションから外されました。あまり文句は言えません。
最初は慣れることがいくつかありますが、弱点について考えなければならない場合、頭に浮かぶのは2つだけです。
全体として、E250siはすべての構成を節約し、別のサーバーの保守などを行いました。しかし、HAproxyとpoundについて多くの良いことを聞いたので、遅かれ早かれこの方向に移行するでしょう。ただし、ソフトウェアルートを使用する場合は、サーバーに配置したコンポーネント(メインボード、ネットワークカードなど)の後で非常に慎重になります。
小規模な Web サイトにローエンドのCoyote Pointロード バランサーの 1 つを使用しました。セットアップは直感的で、製品は安定していて使いやすいことがわかりました。
彼らの製品は、以前は hoststated だった BSD のRelaydへの優れた Web GUI インターフェイスだと思います。
振り返ってみると、ロード バランサーを SSL エンドポイントとして使用し、証明書のコストを節約できたので、ミドル エンドからハイエンドの製品を購入していればよかったのにと思います。
LVSの上にkeepalivedを使用します。サーバーの追加は簡単で、フェイルオーバー負荷分散サーバーをサポートしています。
HAProxy(負荷分散) + Pound (SSL 終了) + keepalived (ライブ バックアップ ロードバランサーを持つ VRRP)
私はいくつかのジョブで F5 bigips を使用しました。通常のハードウェア負荷分散機能に加えて、書き換えの柔軟性が非常に高い irule が特に好きです。
その基本的にイベント駆動型のスクリプト言語
http://devcentral.f5.com/Default.aspx?tabid=75
ウィキがありますが、アクセスするにはアカウントを作成する必要があります
現在、Zeuz ZXTM ロード バランサーを使用しており、これまでのところ満足しています。ただし、ホスティング プロバイダーは当初、ファイアウォール サービスを実行しているマシン上の仮想マシンで構成しました。トラフィックが問題になるずっと前に接続が飽和状態になったため、これはかなりばかげた間違いでした。独自の専用ボックスに移動すると、100Mb/s の送信トラフィックを失敗や問題なく処理できました (4Gb/s のバースト可能なインターネット パイプで)。
ラウンドロビン DNS は負荷分散を提供しますが、冗長性は提供しません。サーバーの 1 つに障害が発生した場合でも、そのサーバーは引き続きリクエストのシェアに影響を受けます。
Apache mod_jk を使用して、Java アプリケーション サーバーのペア間の負荷分散と冗長性を処理します。これは非常にうまく機能し、簡単です。
また、プライマリに障害が発生した場合に備えて、コールド フェイルオーバー Apache サーバーも用意しています。Linux-HA を使用して apache のホット フェイルオーバーを実現するのが理想的ですが、複雑さを正当化できるかどうかはわかりません。
UCLA のある部門はジュニパー アクセラレーション プラットフォームを使用しており、非常に満足しています。それは SSL 暗号化のタスクを引き継ぐところまで行っており、ハードウェアベースの SSL は非常に高速です! 彼らは現在、それと連携するために、より多くのサービスを移行しています。
それについてのクールな点:
安くはありませんが、大量のトラフィックを持つ企業にとっては非常に効率的です。UCLA の選択の仕様については、こちらを参照してください。
HAProxy を使用して大きな成功を収めています。平均負荷が高い場合でも、CPU 使用率が 2% を超えるのを見たことがありません。
スティッキー セッションを使用したラウンド ロビンは、私たちが使用していると私が信じているものです。ASP/ASP.Net セッション情報が保持されるように設定して、ユーザーがセッションを持つ 1 つのサーバーに固執するようにする必要があります。
http から SSL に切り替えると、サイトが認証されたユーザーを安全でないページに送信し、認証されていないユーザーが安全なログイン ページに送信されるという小さな問題がありました。即時の解決策である単一のサーバーに戻ることを除いて、最善の解決策として SSL ターミネーションによって解決された終わり。
より洗練されたものを使用して、どのサーバーが「最も忙しい」かを判断し、そのマシンに次のリクエストを送信する必要がある時が来るかもしれませんが、インフラ担当者が負荷のその機能にどのように到達するかはわかりません.バランサー。