質問

Amazon EC2では、数日間 HAProxy と戦っています。これまでの経験は素晴らしいものでしたが、ソフトウェアロードバランサーからより多くのパフォーマンスを引き出すことにこだわっています。私たちは、Linuxネットワーキングの正確さではありません(通常は.NETショップです)が、これまでのところ、適切なulimitの設定、カーネルメッセージおよびtcpdumpの異常の検査を行ってきました。 これまでのところ、約1,700リクエスト/秒のプラトーに達しており、その時点でクライアントタイムアウトがたくさんあります( httperf この目的のため)。同僚と私は最新のStack Overflowポッドキャストを聞いていました。Redditのファウンダーは、サイト全体が1つのHAProxyノードで実行されており、これまでのところボトルネックになっていないことに気付きました。了解!多数の同時リクエストが何らかの形で見られないか、恐ろしく間違ったことをしているか、EC2の共有性がEc2インスタンスのネットワークスタックを制限しています(大きなインスタンスタイプを使用しています)。 JoelとRedditのファウンダーの両方がネットワークが制限要因になる可能性が高いことに同意しているという事実を考慮すると、それが私たちが見ている制限である可能性はありますか?

どんな考えでも大歓迎です!

編集実際の問題は、実際にはロードバランサーノードではなかったようです。この例では、犯人は実際にはhttperfを実行しているノードでした。 httperfは、リクエストごとにソケットを構築して破棄するため、カーネルでかなりのCPU時間を消費します。リクエストレートを高くすると、TCP FIN TTL(デフォルトでは60秒)がソケットを長すぎて保持し、ip_local_port_rangeのデフォルトがこの使用シナリオに対して低すぎました。基本的に、クライアント(httperf)ノードが新しいソケットを絶えず作成および破壊してから数分後、未使用ポートの数が不足し、この段階で後続の「リクエスト」がエラーになり、リクエスト/秒数が少なく大量になりましたエラーの。

nginxも見てきましたが、RighScaleで作業しており、HAProxyのドロップインスクリプトがあります。ああ、絶対に必要であると証明されない限り、コンポーネントを切り替えるのは[もちろん]締め切りが厳しすぎます。ありがたいことに、AWSを使用することで、nginxを使用して別のセットアップを並行してテストし(保証されている場合)、後で一晩で切り替えることができます。

このページでは、sysctl変数のそれぞれについてかなり詳しく説明しています。 (この場合、ip_local_port_rangeとtcp_fin_timeoutが調整されました。)

役に立ちましたか?

解決

実際にはあなたの質問に対する答えではありませんが、nginxとpoundはどちらもロードバランサーとして評判が良いです。 Wordpressは nginxに切り替えただけで良い結果が得られました。

ただし、より具体的には、問題をデバッグします。 100%のCPU使用率(I / O待機を含む)が表示されない場合は、ネットワークにバインドされています、はい。 EC2は内部でギガビットネットワークを使用しているため、XLインスタンスを使用してみてください。そのため、基盤となるハードウェアを自分で使用でき、そのギガビットネットワークポートを共有する必要はありません。

他のヒント

質問に直接回答していませんが、EC2は実行するのではなく、弾性負荷分散を介して負荷分散をサポートするようになりましたEC2インスタンスの独自のロードバランサー。

編集: AmazonのRoute 53 DNSサービスは、「エイリアス」を使用してELBでトップレベルドメインを指す方法を提供するようになりました。記録。 AmazonはELBの現在のIPアドレスを知っているため、CNAMEレコードを使用せずに、その現在のIPのAレコードを返すことができますが、IPを時々自由に変更できます。

はい、オフサイトのロードバランサーを使用できます。..ベアメタルLVSは素晴らしい選択肢ですが、レイテンシーはひどいものになります! AmazonがCNAMEの問題を修正するという噂があります。ただし、https、詳細またはカスタムヘルスチェック、フィードバックエージェント、URLマッチング、Cookie挿入を追加することはほとんどありません(そして、優れたアーキテクチャを備えた一部の人々も非常に正しいと言うでしょう)。ラウンドロビンDNSエントリの背後にあります。 Loadbalancer.orgでは、独自のEC2ロードバランシングアプライアンスを開始しようとしています。 http:// blog。 loadbalancer.org/ec2-load-balancer-appliance-rocks-and-its-free-for-now-anyway/ 私たちは、SSHスクリプトを使用して、rightscaleと同じ方法で自動スケーリングを統合することを計画しています。コメントはブログで高く評価されています。 ありがとう

クラウドではなく、オフサイトのロードバランサーに切り替えることを検討し、その上でIPVSなどを実行します。 [Amazonのクラウドから離れる理由は、カーネルの問題が原因です] Amazonから送信されるパケットのソースIPを制限しない場合、単方向の負荷分散メカニズムを使用できます。このようなことを行い、約80万件の同時リクエストを取得します(ただし、待ち時間は処理しません)。また、「ab2」を使用すると言うでしょう。 (Apache Bench)、これはユーザーフレンドリーで、私の謙虚な意見では使いやすいからです。

問題は解決しましたが。 KEMP Technologiesは現在、AWS用の完全に機能するロードバランサーを備えています。手間を省くことができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top