2011-07-06 10 views
9

私たちは独自のロードバランシングを管理したいと考えてEC2アーキテクチャをスケールアウトしています。現在、基本的な負荷分散を行うためにHAProxyに一連のマシンを設定していますが、新しいインスタンスをオンラインにして自動的に(またはほぼ自動的に)HAProxyに参加させるというベストプラクティスを探しています。EC2インスタンスを自動的にHAProxyに参加させるためのベストプラクティスは何ですか?

理想的には、システムの負荷を監視したり、数年分の分析データを使用してルーチスケジュールを作成したり、しきい値や予定時刻に達するとプロセスを起動して新しいインスタンスを作成したり、新しいノードがHAProxyマシン上のシステムに接続し、そのホスト名をconfigに書き込んでHAProxyを再ロードしてプールの一部にするようにしてください。

ゾーンのカバレッジが必要なほど大きくなったら、AmazonのELBを検討していますが、これまではHAProxyからマシンを追加/削除できる簡単な設定が必要でした。

私はこのサービスを管理するために支払うことができるサービスがあることを知っていますが、Scalrは非常に特定のインスタンスタイプに制限しているようですが、Rightscaleも高価です。独自のソリューション。

残念なことに、独自の解決策を採用している人は、プロセス上、少し面倒なようです。

あなたが過剰だと思う。このソリューションには必要ありません
+1

scalrの問題は何ですか? scalrクライアントをインストールする限り、カスタム・インスタンス・タイプを使用できます。私たちはnginxロードバランサを使用しています。 – aporat

+0

ああ、Scalrがカスタムビルドを許可するかどうかは分かりませんでした。彼らの提供の私の一見は、あなたが正しく動作するために使用しなければならなかったインスタンスをあらかじめ設定したように見えました。 – iandouglas

答えて

10

;)

することはでき単に「前の設定」のサーバあなたHAProxy設定ファイルインチ彼らはあなたが実際にそれらをオンラインに持って来るまで "ダウン"と表示され、要求を受け取ることはありません。ここで

はあなたがオンラインでのみ5台のマシンを持っていると仮定すると、一例だし、今後2年間で10を持っていることを期待:この設定では

listen web *:80 
    balance source 
    server web1 192.168.0.101:80 check inter 2000 fall 3 
    server web2 192.168.0.102:80 check inter 2000 fall 3 
    server web3 192.168.0.103:80 check inter 2000 fall 3 
    server web4 192.168.0.104:80 check inter 2000 fall 3 
    server web5 192.168.0.105:80 check inter 2000 fall 3 
    server web6 192.168.0.106:80 check inter 2000 fall 3 
    server web7 192.168.0.107:80 check inter 2000 fall 3 
    server web8 192.168.0.108:80 check inter 2000 fall 3 
    server web9 192.168.0.109:80 check inter 2000 fall 3 
    server web10 192.168.0.110:80 check inter 2000 fall 3 

、あなたはHAProxyを再起動するか、いずれかの種類を行う必要がありません。少なくとも10年以上醜いハックをしている(あなたが10以上を必要としない限り、100を加えれば設定されます)。

また、この構成を自動的に生成するためのクイックシェルスクリプトを作成することもできます。SHOULDプールに100台のサーバーを追加する場合はスクリプトを作成してください。

+1

ちょうど上記のsugestionを微調整して、私は過去数時間にわたって戦ってきました...内部IPに直接指し示すようになっています.Staticを使用することはできますが、私は、DynDNSサービス(dyndns.orgなど)やAPIを提供しているDNSプロバイダ(Zerigoなど)を使用することになります。これらのサービスを使用するには、外部IPには割り当てられていない料金があり、ファイアウォール/ )、マシン上にいくつかのホストを設定します。たとえば、10ホストを作成し、それらに内部のアマゾンIPを割り当てるなら、それはうまくいくはずです。 – TiernanO

+1

上記のコメントでスペースがなくなったので、私は注意します:DNSをきれいにする必要があるかもしれません。なぜなら、6つのインスタンスに拡大縮小し、4つに戻すと、もう1つのIPは新しいインスタンスに属することができます。おそらくスタートアップとシャットダウンのスクリプトとアマゾンのインスタンスデータを使用してマシンの名前を...それは私の問題を解決する方法です。 – TiernanO

+1

更新:私は最後にこの質問を投稿して以来、私は新しい問題に直面していますが、同じ問題に直面していますが、RackSpaceを使用する何百ものマシンの規模で、haproxyマシンのデーモンに対してpingを実行する方法が必要です構成に追加されました。 – iandouglas

関連する問題