0

ロードバランサとしてHAプロキシを使用しています。 ラウンドロビン方式で2つのノードをロードバランシング用に指定しました。物事はうまくいけば、私は要求を手動で投稿すると、reqがラウンドロビン方式で各ノードにルーティングされていることがわかります。私はカールを使用して約5000 reqを発射すると、約100 reqが1つのノードに行き、次に100が別の別のノードに行くことがわかります。それはreqに基づいて交替していません。私はこれが正しいbeahviourだとは思わない。私は変更する必要があるいくつかの設定はありますか? またはそれはカールの動作ですか?HAプロキシグループ化要求

curl -k <url>?name=[1-5000] 

答えて

1

あなたはURL中括弧でこれらの数字で、インクリメントカウンタとシーケンシャル要求を行うカール演出している、とカールは、HTTPキープアライブを経て、HAProxyへの接続を再利用しようとしています。

HAProxyは、バックエンドへの接続をデフォルトで再利用します。これは、最も効率的な動作であり、新しいTCP接続を確立するオーバーヘッドを避けるためです。すべての要求が、再利用された接続上の単一のクライアントから来て、同時性が1である場合に、人為的にラウンドロビンの配信を強制する理由はありません。

いくつかのオプションの1つを使用して、これは主にテスト方法論の成果物であるため、これは不要です。デフォルトHAProxyによって

は、永続的 の接続に関しては、キープアライブモードで動作:各接続のためには、各要求と応答を処理し、 は、応答の終わりと 間の両側に接続アイドルを去ります新しい要求の開始。このモードは、 "http-server-close"、 "option forceclose"、 "option httpclose"、または "http-tunnel"オプションなどのいくつかのオプションで変更できます。 "option http-server-close"を設定すると、クライアント側で HTTPキープアライブとパイプライン処理をサポートしながら、サーバー側でHTTP 接続クローズモードが有効になります。これは、クライアント側(低速ネットワーク)で最も遅い レイテンシを提供し、サーバー側は "option forceclose"と同様にサーバー側で サーバーリソースを最速で再利用します。 また、非キープアライブ対応サーバーは、RFC7230の要件に準拠している場合、キープアライブモードの をクライアントに提供できます。 要求の中で 「Connection:close」と表示されている場合、一部のサーバーがこれらの要件に常に準拠していないことに注意してください。その効果はキープ・アライブになります は決して使用されません。回避策は、「 http-pretend-keepalive」オプションを有効にすることです。

http://cbonte.github.io/haproxy-dconv/1.6/configuration.html#4-option%20http-server-close

、なぜそれがすべての〜100を交互ん?キープアライブ接続は通常は無期限に使用できないため、クライアントまたはサーバーのいずれかが接続を最後に終了し、新しい接続が確立されます。

+1

これはすばらしい説明です..ありがとう.. – Katiyman

関連する問題