問題タブ [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 投票する
2 に答える
2050 参照

varnish - haproxyを使用した複数のワニスサーバー

インフラストラクチャに 2 つ目のワニス サーバーを追加する予定です。

2 つのサーバーをスローするトラフィックのバランスをとるには、どのような方法がよいでしょうか? 2 つのサーバーの前で haproxy を使用できると思いますが、2 つのワニス間のトラフィックを負荷分散するように構成するにはどうすればよいですか? 理想的な解決策は、1 つのワニスが停止した場合、すべてのトラフィックが別のワニスに移動することです。

編集: 理想的な動作は、それぞれ 50% の負荷を持つアクティブ/アクティブな conf であり、一方がダウンすると、haproxy は他方に 100% の負荷を送信します。

0 投票する
2 に答える
3103 参照

node.js - Node.JS、HAproxy、Socket.IOからNGINXまで、アプリはサブディレクトリにあります

私は何時間も努力していて、このサイトとインターネットが提供するものを読みました。ここでSocket.IOを正しく動作させることができないようです。nginxはデフォルトでSocket.IOを処理できないことは知っていますが、HAproxyは処理できます。nginxがUNIXソケットを介してNodeアプリを提供するようにしたいのですが、それはうまく機能します。それぞれにnginxによって設定されたサブディレクトリの場所がありますが、最後のアプリにSocket.IOが必要であり、この時点で構成できなくなっています。

最新のsocket.io、HAproxy 1.4.8、nginx1.2.1を使用しています。Ubuntuを実行しています。

繰り返しになりますが、ソケット.ioをnginxを介して、サブディレクトリ内のノードアプリ(例:localhost / app /)に対して機能させる必要があります。

私が他に何かを提供できるなら、今私にさせてください!

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

proxy - haproxyはuse_backendのさまざまな条件に一致します

次のように、1つのバックエンド内のさまざまな条件に一致させようとしています。

しかし、どうすればこの「and」を2つのルールの間に置くことができますか?

0 投票する
2 に答える
3834 参照

node.js - nginx、node.js、およびsocket.io - 働く結婚はありますか?

nginxキラーの静的ファイル サーバーです。

この例node.jsのように機能しますが、限定的な方法です。

しかしnginx明らかにプロキシできませんwebsockets

この記事のようにHAProxyフロントエンドを使用することだけが機能する可能性があることがわかりましたが、それは 2011 年 10 月 6 日のものです。

これ一般的な問題である必要がありますが、非常に一般的な解決策が見つかりません。


解決

(完全なソリューションと詳細については、https://github.com/bangkok-maco/barebone-nodeを参照してください)

IP テスト スキーマ:

  • 127.0.0.12 - www.chat.nit - パブリック、/etc/hosts および haproxy 内
  • 127.0.1.12 - 内部 nginx Web サーバー
  • 127.0.2.12 - node.js socket.io を提供する内部チャット

/etc/haproxy/haproxy.cfg:

/etc/nginx/sites-enabled/www.chat.nit

チャット (node.js): server.js

チャット: client.html

ノート:

  1. socket.io クライアント js をscripts/ディレクトリにリンクする

    /.../scripts$ ln -s ../node_modules/socket.io/node_modules/socket.io-client/dist/socket.io

  2. /etc/default/haproxy (テキストに反して、まったく機能するように設定する必要があります)

    有効=1

  3. このバージョンの haproxy はログに記録されません。127.0.0.1 経由での使用方法に関するkvz の書き込みを見つけましrsyslogdたが、飛行させることはできませんでした。

  4. このソリューションは機能しています-確かにsysadminの品質ではありません。(歓迎以上の機能強化。)

0 投票する
2 に答える
5004 参照

amazon-ec2 - Haproxy Load Balancer、EC2、独自の可用性スクリプトを作成

ハートビートや、haproxy ロード バランサーがダウンしたときにフェールオーバーするための keepalived などの高可用性ソリューションを検討してきました。私たちは高可用性を望んでいますが、現時点では、2 つのロード バランサー インスタンスを同時に実行するための支出の範囲で高可用性を実現する必要はないことに気付きました。私たちのセットアップでは冗長になります)。

私の別の解決策は、現在のロード バランサーが機能しなくなった場合に AMI から新しいロード バランサー EC2 インスタンスを起動し、それをドメイン名が指すエラスティック IP に関連付けることです。これにより、ダウンタイムが新しいインスタンスを起動してエラスティック IP を関連付けるのにかかる時間に制限されるようになります。これは、現在の状況を考えると、特にマルチ AV を簡単に実行できるため、高可用性に対する合理的な費用対効果の高いソリューションのように思えます。ゾーン。次の手順を使用してこれを行うことを検討しています。

  1. ロードバランサーの AMI を準備する
  2. ロードバランサーとして機能する単一の ec2 インスタンスを起動し、それに Elastic IP を割り当てます
  3. マイクロ サーバーが現在のロード バランサーに定期的に ping を実行するようにします (いずれにせよ、追加のマイクロ サーバーが常に実行されています)。
  4. ping がタイムアウトした場合は、ロード バランサー AMI を使用して新しい EC2 インスタンスを起動します。
  5. Elastic IP を新しいインスタンスに関連付ける
  6. 古いロード バランサ インスタンスをシャットダウンする
  7. 新しいインスタンスで手順 3 以降を繰り返します。

スクリプトでコマンドを実行して EC2 インスタンスを起動およびシャットダウンし、エラスティック IP アドレスをインスタンスに関連付け、サーバーに ping を実行する方法を知っています。

私の質問は、ここで適切な ping は何でしょうか? 標準的な ping は一定の間隔で十分でしょうか? また、適切な間隔はどれくらいでしょうか? それとも、これはかなり単純化されたアプローチであり、私が行うべきよりスマートなヘルスチェックがありますか?

また、誰かがこのアプローチで問題を予見する場合は、お気軽にコメントしてください

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

linux - haproxy - 現在のポートをヘッダーに追加

現在のポート番号をヘッダーに追加したいと思います。私は試した:

dst_portただし、数値の代わりに追加します。

ヘッダーに変数 dst_port を追加する方法はありますか?

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

node.js - Webソケットを提供するsocket.ioは物理的にポート80にある必要がありますか?

使用node.jssocket.ioて提供するwebsockets

socket.ioポート 80 ( の実際のポート) でリッスンする必要がありwebsocketsますか、それともサーバーの別のポート (ポート 8011 など) にプロキシできますか?

ブラウザは、 を使用しwebsocketsて 80/http 経由で通信します。サーバー上の は にhaproxy リダイレクトさwebsocketsnode.jsます。

haproxyはに指示し127.0.4.11:80ます。これは正常に動作しますがsudo、実行する必要がありますnode.js

にリダイレクトしたいのですが、正しくサポートするために実際にポート 80 を使用する必要があるlocalhost:8011かどうかはわかりません。socket.iowebsockets

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

web-services - Coffeescriptで書かれたNode JSサーバーは動くが、JS版は動かない

バックエンド サーバーとして 2 つのノード サーバーがあり、前面に haproxy サーバーがあり、着信 HTTP 要求をラウンド ロビンします。コーヒーを含むサーバーは正常に動作しますが、JS で記述されたコンパイル済みの coffeescript バージョンを含むサーバーは、数時間の起動後に爆発します。コーヒーのコードとコンパイルされた JS コードは同じように見えます。JS のバージョンが爆発すると、502 応答の送信が開始されます。これらのサーバーは、1 日あたり約 500 万件のリクエスト (合計) を処理します。この問題を見た人はいますか?

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

haproxy - HAProxyで静的URLを維持する方法

「地理的に分散した」異なるマシンを持つ2つの異なるノードでHaproxyを使用しています

  • ロードバランサー-dns=http1.example.comを持つもの
  • ロードバランサー-2つのdns=http2.example.com

サービスは、元のホスト名--haproxyを使用してDNSメインサイトでリッスンしています

私の質問は、静的URLを維持する方法ですか?つまり、バックエンドサーバーのドメインまたはIPを表示してはなりません。元のホスト名のみを表示したいのですが、

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

apache - Firefox の URL が不可解に書き換えられるが、他のブラウザでは書き換えられない

私は、(これまでのところ) Firefox でのみ現れる奇妙な問題を抱えており、そこで URL を別のドメイン (これも私たちがホストしています) に書き換えます。ただし、書き換えは Safari または Chrome では発生しません (私は MacBook Pro からテストしています)。

私の設定は次のとおりです: HAProxy を実行しているロードバランサーは、80 でリッスンし、内部的に 8080 でリッスンし、Apache は 443 でリッスンしています。 . バックエンドでは、80 からのすべてのトラフィックは非 SSL と見なされますが、8443 では復号化された SSL と見なされます。バックエンド サーバーは Apache を実行しています。

SSL サイトの任意のブラウザーからhttps://www.sslexample.com/ (以降、SSL_DOMAIN) にアクセスすると、すべてが正常に動作します。これは Apache SSL アクセラレータに到達し、復号化されてプロキシに渡され、バックエンドに送信されます。http://www.nonsslexample.com/ (以降、NONSSL_DOMAIN)にアクセスすると、すべてが非 SSL サイトで期待どおりに動作し、プロキシにヒットしてからバックエンドに到達し、非 SSL トラフィックが期待どおりに処理されます。 .

ここで物事が奇妙になります。http 経由で SSL_DOMAIN にアクセスすると、https にリダイレクトされるはずです。SSL と非 SSL が混在するドメインの 1 つで、これはすべてのブラウザーで期待どおりに機能します。しかし、Firefox (同僚の場合は Safari で、Chrome では決してない) で http 経由で SSL_DOMAIN にアクセスすると、最初に URL がすぐに NONSSL_DOMAIN に書き換えられ、まったく別のドメインにリダイレクトされます。

は?

LB のログを見ると、Chrome と Safari は正常に動作し、ポート 80 で lb をヒットしますが、Firefox はポート 80 で SSL_DOMAIN を使用してロードバランサーをヒットすることはありません。 .

改ざんデータ プラグインを Firefox にインストールしたところ、結果がさらに混乱しました。最初の正しい URL ヘッダーは、応答ヘッダーを受け取りません。すぐに間違ったものに置き換えられます。そして、SSL 以外の URL を意図したかのように、事態は進行します。

/etc/hosts ファイルを調べたところ (これはテスト中であり、これらのドメインをオーバーライドしているため)、すべてが正しいように見えます。

以前にこのような問題に遭遇したことがある場合は、デバッグ方法に関するヒントをいただければ幸いです。