4

弾力的な負荷分散を行う方法があるかどうか疑問に思っています。HAProxyについて読んだことがありますが、HAProxyを停止して、多かれ少なかれマシンで動作するように再構成する必要があるようです。

全体像をより明確にするために:私はWebバックエンドのクラスターを持っています(apache + mod_railsとしましょう)。トラフィックが非常に高くなった場合、バックエンドの使用状況を監視し、同じコンテンツを持つ別のマシンを非常に迅速に(秒単位で)起動できます。ただし、HAProxyを再起動せずに追加のバックエンドを使用させる方法がわかりません(可用性を損なう)。これを行うためにHAProxyまたは他のロードバランサーを使用する方法はありますか?

冗長性のために2つのロードバランサーを用意する方法があるのではないかと考えていました。次に、一方を停止し、構成を更新し、元に戻し、もう一方を停止します。しかし、これを行う方法についてはよくわかりません。

4

2 に答える 2

2

新しいサーバーを追加する必要がある場合は、再起動する必要がありますが、「-sf $oldpid」で新しいプロセスを開始すると、新しいプロセスと古いプロセスの両方が並行して動作するため、ほとんど検出されません。

サーバーを一時的に無効にする必要がある場合は、いくつかのオプションがあります。

1) (推奨) : 「option http-disable-on-404」を有効にし、サーバーのチェック応答を操作して 404 を返します。これにより、新しい接続が無効になりますが、既存のユーザーは引き続きセッションを終了できます。次に、500 を返すように手配し、プロセスを停止できます。この方法の利点は、LB に触れる必要がなく、操作しているサーバーからすべてが制御されることです。これは、賢明なインフラストラクチャのほとんどがそれを行う方法です。

2)簡単なもの:socatを使用して、統計ソケットに接続し、作業する予定のサーバーを無効にします:

printf "disable server 1\n" | socat stdio unix-connect:/var/state/haproxy.stat

終了したら有効にします。

printf "enable server 1\n" | socat stdio unix-connect:/var/state/haproxy.stat

構成を変更していない限り、検出されないままであっても、再起動する理由はありません。

于 2010-07-16T21:36:17.267 に答える
0

これに対する予算がある場合は、www.Zeus.com を参照してください。数週間後にリリースされる新しいリリースでは、すぐに使用できますが、既存のリリースを使用してサービス レベルの監視を提供し、スクリプト言語と API を使用してバックエンド サーバーの自動プロビジョニング機能を作成することもできます。 .

無料の評価は開発者ライセンスとして利用できるため、達成しようとしているものを無料でモデル化できます。

ある時点でそのルートをたどりたい場合は、多くのクラウド プロバイダーから Zeus ソフトウェアを入手することもできます。

于 2010-07-16T09:57:03.617 に答える