問題タブ [haproxy]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
72888 参照

haproxy - グローバル maxconn とサーバー maxconn haproxy の違い

私のhaproxy設定について質問があります:

ご覧のとおり単純明快ですが、maxconn のプロパティがどのように機能するかについて少し混乱しています。

listen ブロックには、グローバルなものとサーバー上の maxconn があります。私の考えは次のとおりです。グローバルなものは、サービスとしての haproxy が一度にキューまたは処理する接続の総数を管理します。数値がそれを超えると、接続が切断されるか、Linux ソケットにプールされますか? 4000を超えるとどうなるかわかりません。

次に、サーバーの maxconn プロパティを 15 に設定します。まず、これを 15 に設定します。これは、別のサーバーに転送する php-fpm が使用できる子プロセスが非常に多いためです。 php-fpm ではなく、ここでリクエストをプールします。どちらが速いと思います。

しかし、本題に戻ると、この数に関する私の理論では、このブロック内の各サーバーは一度に 15 接続しか送信されないということです。そして、接続は開いているサーバーを待ちます。Cookie をオンにすると、接続は正しいオープン サーバーを待機します。しかし、私はしません。

質問は次のとおりです。

  1. グローバル接続が 4000 を超えるとどうなりますか? 彼らは死ぬのですか?または何とか Linux にプールしますか?
  2. サーバー接続の総数をグローバルよりも大きくすることはできないという事実以外に、グローバル接続はサーバー接続に関連していますか?
  3. グローバル接続を計算するとき、それはサーバー セクションに追加された接続の量とプール用の特定の割合ではないでしょうか? もちろん、接続には他にも制限がありますが、実際には、プロキシに送信したい数は何ですか?

前もって感謝します。

0 投票する
0 に答える
1288 参照

haproxy - HAproxy: ダイジェスト認証

2 台のサーバーのバランスをとるロードバランサーをセットアップしました。構成は次のようになります。

グローバル
maxconn 40960
ユーザー haproxy
グループ haproxy
デーモン

デフォルト
ログ グローバル
オプション dontlognull
再試行 3
タイムアウト クライアント 10 秒
タイムアウト サーバー 10 秒
タイムアウト 接続 4 秒
maxconn 40960

listen webpool lbIP:80
mode http
cookie SERVERID insert indirect
balance
roundrobin server slave1 slave1IP:80 cookie A check port 8981
server slave2 slave2IP:80 cookie B check port 8982

サーバーslave1とslave2にはダイジェスト認証が必要です。クライアントがリクエストを送信すると、最初のリクエストがスレーブ 1 に分散されます。これは 401: Unauthorized を返します。2 番目の要求は、slave2 に分散されて成功し、200: OK を返します。問題は、認証が常にスレーブ 1 で行われ、応答が常にスレーブ 2 から送信されることです。両方の要求 (認証とデータを返す) を 1 つの接続/スレーブにしたい。

これを HAproxy で構成することは可能ですか?

ありがとうジョン

0 投票する
1 に答える
4957 参照

failover - HAProxy - フェイルオーバー後にセッションの持続性を維持する

ノードに障害が発生した場合に備えて、セッションの持続性を維持しなければならない状況にあります。構成は次のとおりです。

  • JBoss 4.2.3 (同種クラスター) でエンタープライズ アプリケーションを実行する 3 つのノード (as1、as2、as3)
  • ノードごとにラウンドロビン (1 つの TCP サーバーと 1 つの Tomcat) を実行する HAProxy
  • レプリケートされた tomcat セッション (フェイルオーバー時の SSO 用)
  • スティック セッションを有効にする (appsession ディレクティブ)

私の問題は、ノードの 1 つ (つまり、as3) を停止すると、セッションのスティッキ性がすぐに壊れることです。セッションは再認証なしでフェールオーバーします (Tomcat 共有セッション)。 as1 as2 ...)。

フェイルオーバー要求がフェイルオーバー時に最初に使用可能なサーバーに固定されるようにするにはどうすればよいですか?

0 投票する
1 に答える
405 参照

nginx - URL 固有のバランシング

私の質問には、haproxy に関する 2 つの部分があります。

質問1:

私が扱っているサービスは、大量の XML ドキュメントのアップロードと、かなり大きな結果のダウンロードを扱っています。アップロードされた XML ドキュメントは、後でワーカーからダウンロードできる応答を生成するためにワーカーによって使用されます。大まかな設定は次のとおりです。

--request--> www.domain.com --> worker(1 または 2).domain.com

www.domain.com は静的コンテンツ サーバーであり、haproxy が常駐する場所でもあります。すべてのリクエストは、最初にここに送信されます。静的コンテンツ (html、画像など) は、www.domain.com で nginx によって提供される必要があります。

ただし、www.domain.com/[upload]/[id1] や www.domain.com/[download]/[id1] などの特定の URL を含むリクエストは、ワーカー自身が処理する必要があります。ここでの追加の問題は、転送が URL に基づいてスティッキーである必要があることです。

例えば:

XML ファイルが www.domain.com/upload/123 にアップロードされたとします。haproxy は、URL にアップロードが含まれていることを確認し、worker1.domain.com または worker2.domain.com にリクエストをルーティングします。後で、www.domain.com/download/123 への GET 要求が行われると、最初に同じ ID (123) でアップロード要求を処理したワーカーにルーティングするために haproxy が必要になります。基本的に、特定の ID のアップロード リクエストを worker1 に送信し、同じ ID のダウンロード リクエストを worker2 に送信することはできません。haproxyを使用すると、このようなことが可能になりますか?

質問2:

ファイルを www.domain.com/upload にアップロードし、haproxy がそれを worker1.domain.com にルーティングした場合、ファイル全体が haproxy を通過しますか? つまり、worker1.domain.com はファイルを受信しますが、転送を行っているため、haproxy も同じ帯域幅を使用しますか?

どうもありがとうございました!

0 投票する
1 に答える
283 参照

ruby-on-rails - Rails 3.1 のログ エントリが冗長すぎる

UPDATE : HAProxy が Rails を認識しないのは問題ではなく、私のミスでした。ただし、本当の問題は、すべてのリクエストがログを詰まらせることです。質問全体を更新しました。

rails プロセスがリクエストを受け取るたびに、rails.xxxx.log に次のような行が生成されます。

どうすれば彼らを黙らせることができますか?

0 投票する
4 に答える
5433 参照

node.js - 大量の SSL 接続をコスト効率よく終了する

私は最近、小さな EC2 インスタンス (m1.small) で 1 秒あたり約 2,000 の新しい接続要求を処理することがテストされている Node.js ベースの Web ソケット サーバーをセットアップしました。m1.small インスタンスのコストと、複数のインスタンスを HAProxy などの WebSocket 対応プロキシ サーバーの背後に置く機能を考慮すると、結果には非常に満足しています。

ただし、SSL を使用したテストをまだ行っていないことに気付き、いくつかの SSL オプションを調べました。プロキシ サーバーで SSL 接続を終了することが理想的であることが明らかになりました。これは、プロキシ サーバーがトラフィックを検査し、X-Forward-For などのヘッダーを挿入して、サーバーが要求の送信元の IP を認識できるようにするためです。

そこで、私は Pound、stunnel、スタッドなどの多くのソリューションを調べました。これらはすべて、443 で着信接続を終了できるようにし、ポート 80 で HAProxy に渡し、次に接続を Web サーバーに渡します。しかし残念なことに、c1.medium (高 CPU) インスタンス上の SSL ターミネーション プロキシ サーバーにトラフィックを送信すると、すべての CPU リソースが非常に速く消費され、1 秒あたり 50 リクエスト程度しか消費されないことがわかりました。上記の 3 つのソリューションをすべて使用してみましたが、いずれも OpenSSL に依存していると思われるのとほぼ同じように動作しました。64 ビットの非常に大きな High CPU インスタンス (c1.xlarge) を使用してみましたが、パフォーマンスはコストに比例してしか変化しないことがわかりました。したがって、EC2 の料金に基づくと、1 秒あたり 200 件の SSL リクエストに対して約 600 ペンス/月を支払う必要があります。1 秒あたり 000 件の非 SSL リクエスト。1 秒あたり 1,000 または 10,000 のリクエストを受け入れることを計画し始めると、前者の価格は経済的にすぐに実行不可能になります。

また、Node.js の https サーバーを使用して SSL を終了しようとしましたが、パフォーマンスは Pound、stunnel、およびスタッドと非常に似ていたため、そのアプローチに対する明らかな利点はありません。

だから私が誰かに助けてもらいたいのは、SSL接続を提供するために吸収しなければならないこのばかげたコストを回避する方法をアドバイスすることです. ハードウェアは SSL の暗号化と復号化用に設計されているため、SSL ハードウェア アクセラレータのほうがはるかに優れたパフォーマンスを提供すると聞いていますが、現在すべてのサーバーに Amazon EC2 を使用しているため、個別のデータがない限り、SSL ハードウェア アクセラレータを使用することはできません。物理サーバーを備えたセンター。私は、Amazon、Google、Facebook などの企業が SSL 経由ですべてのトラフィックを提供する方法を理解するのに苦労しています。SSL のコストが非常に高い場合です。そこにはもっと良い解決策があるはずです。

アドバイスやアイデアをいただければ幸いです。

ありがとうマット

0 投票する
1 に答える
1431 参照

amazon-ec2 - AmazonEC2上のWeblogic10gR3RMIサーバーへの負荷分散リクエスト

私は、RMIに基づいて、複数のWeblogic 10gR3(10.3.0.0)ノードにデプロイされた分散ソリューションの開発に参加しています。ノードの1つはRMIサーバーをホストし、他のノードは外部JNDIプロバイダーを介してRMIサーバーにアクセスします。RMIサーバーを追加してインフラストラクチャを改善しようとしたときに、いくつかの問題に直面しました。

インフラストラクチャの詳細:
-RMIサーバーは、ポート7005の管理対象サーバーで実行されています。
-RMIクライアントは、t3:// hostname:7005のようなリモートJNDIプロバイダーを介してサーバーにアクセスします。

追加のRMIサーバーを作成する際に、これまでに試したことと、それが機能しなかった理由を投稿します。

1)Amazon ELBを使用する->インターネット全体にランタイムポート(7005)を開く必要があるため、これはオプションではありません。これは明らかにセキュリティ上の欠陥です。

2)マルチエンドポイントJNDIプロバイダー(t3:// hostname1:7005、hostname2:7005など)を構成します。これは明らかにJMSキューで機能します->すべての要求はhostname1で実行されているRMIサーバーに送信されました。実際、アプリケーションは正常に機能しました。ただし、hostname1の背後にあるサーバーを故意にクラッシュさせた場合、hostname2にリクエストは送信されませんでした。(リダイレクトする必要がありますか?)

3)HAproxyなどのソフトウェアロードバランサーを使用して、HTTPレイヤーでバランシングする場合、リクエストは「t3 10.3.0.0」として解釈されていたため、HAproxyでHTTP502エラーが発生しました。TCPレイヤーでバランスを取ると、単一のTCP接続が複数のHTTP要求に使用されているかのように、いくつかの「オブジェクトの欠落」エラーが発生し、最初の接続が終了した後、後続の要求はリモートオブジェクトにアクセスできませんでした(推測するだけです)。

4)クラスタ化されたWebLogic環境を使用する気はありませんでした。

5) spring-remoting-clusterのような高レベルのフレームワークの使用についてはまだ検討していません。

手がかり/提案はありますか?前もって感謝します!

0 投票する
1 に答える
308 参照

haproxy - ハプロキシーは釣りに行く

私はhaproxyを使用して、ポートAへのトラフィックをポートBで実行されているサービスに向けています。私はhaproxyドキュメントを調べましたが、これを達成する方法を見つけることができませんでした. 誰かが私の問題に光を当てることができますか? ありがとう!

0 投票する
3 に答える
6078 参照

proxy - プログラムでノードをHaproxyのようなロードバランサーに追加しますか?

この問題は解決されたと確信していますが、どこにも情報が見つかりません...

システム管理者は、既存の実行中のロードバランサーに新しいノードをプログラムで追加するにはどうすればよいですか?ロードバランサーを実行していて、2つのEC2インスタンス間でAPIサーバーのバランスをすでに取っているとしましょう。突然トラフィックが急増し、ロードバランサーに3つ目のノードが必要ですが、眠っています...おそらくRAM使用量と、別のノードが必要な時期を示すいくつかの主要なパフォーマンスインジケーターを監視するものがあり、ロードバランサーだけに新しいノードを追加できればさらに良いです...

これはnode-http-proxydistributeで可能であり、些細なことでもあると確信していますが、これがHAproxyやNginxで可能かどうかを知りたいです...Amazonの柔軟な負荷分散を知っていますおそらく私の最善の策ですが、自分でやりたいと思っています(ラックスペース、EC2、Joyentなどの便利なインスタンスからインスタンスを生成したいと思います)。

繰り返しになりますが、ノードの生成は簡単です。プロキシ全体をリロードせずに、haproxy.cfgまたはNginxに類似したものにノードを追加し、プログラムで追加する方法を知りたいです。Bashスクリプトはこれに対する私の最善の策ですが、それでもプロキシ全体をリロードする必要があります。これは接続が失われるため、悪いことです...

0 投票する
1 に答える
397 参照

haproxy - haproxy をゆがめる可能性はありますか?

haproxy は負荷分散プロキシです。ただし、私の使用例は、トラフィックをサーバー A に転送するために haproxy を作成することです。サーバー A がダウンしている場合にのみ、haproxy はトラフィックをサーバー B に転送する必要があります。サーバー B は基本的に、「建設中」または「一時的に利用不可」のページを表示する以外は何もしません。来るたびに。