16

3 つのサーバーをセットアップしました。

  • Nginx + HAproxy を使用して負荷分散を実行するサーバー A
  • バックエンド サーバー B
  • バックエンド サーバー C

ここに私たちの/etc/haproxy/haproxy.cfg

global
        log /dev/log   local0
        log 127.0.0.1   local1 notice
        maxconn 40096
        user haproxy
        group haproxy
        daemon

defaults
        log     global
        mode    http
        option  httplog
        option  dontlognull
        retries 3
        option redispatch
        maxconn 2000
        contimeout      50000
        clitimeout      50000
        srvtimeout      50000
                stats enable
                stats uri /lb?stats
                stats realm Haproxy\ Statistics
                stats auth admin:admin
listen statslb :5054 # choose different names for the 2 nodes
        mode http
        stats enable
        stats hide-version
        stats realm Haproxy\ Statistics
        stats uri /
        stats auth admin:admin

listen  Server-A 0.0.0.0:80    
        mode http
        balance roundrobin
        cookie JSESSIONID prefix
        option httpchk HEAD /check.txt HTTP/1.0
        server  Server-B <server.ip>:80 cookie app1inst2 check inter 1000 rise 2 fall 2
        server  Server-C <server.ip>:80 cookie app1inst2 check inter 1000 rise 2 fall 3

3 つのサーバーはすべて、要求を処理するための十分な量の RAM と CPU コアを備えています。

ブラウズすると、ランダムな HTTP 503 エラーが表示されます。503 Service Unavailable - No server is available to handle this request.

また、サーバーのコンソールでも:

Message from syslogd@server-a at Dec 21 18:27:20 ...
 haproxy[1650]: proxy Server-A has no server available!

90% の確率でエラーがないことに注意してください。これらのエラーはランダムに発生します。

4

7 に答える 7

29

同じ問題がありました。何日も髪を抜いた後、私は問題を見つけました。

2 つの HAProxy インスタンスを実行していました。1 つは、おそらく更新または haproxy の再起動中に何らかの理由で殺されたことがないゾンビでした。/haproxy 統計ページを更新すると、PID が 2 つの異なる数値の間で変化することに気付きました。数字の 1 つを含むページには、ばかげた接続統計がありました。私がしたことを確認するために

netstat -tulpn | grep 80

または

sudo lsof -i:80

2 つの haproxy プロセスがポート 80 をリッスンしていることがわかりました。

この問題を修正するために、「kill xxxx」を実行しました。ここで、xxxx は疑わしい統計情報を含む pid です。

于 2015-06-17T17:24:40.587 に答える
1

Linuxボックスで実行されている2つのHAProxyサービスが原因で、同じ問題が発生しましたが、名前/ pid /リソースが異なります。不要なものを停止しない限り、必要なインスタンスはランダムに 503 エラーをスローします。たとえば、5 回に 1 回です。

複数の URL ルーティングに単一の Linux ボックスを使用しようとしていましたが、haproxy または定義した haproxy の構成ファイルに制限があるようです。

于 2015-07-22T20:08:36.860 に答える
0

詳細がなければなんとも言えませんが、各バックエンドに設定された maxconn を超えている可能性はありますか? 統計 UI は、フロントエンドと個々のバックエンドの両方でこれらの統計を表示します。

于 2013-10-01T09:04:20.063 に答える
0

option http-server-closeバックエンドに追加することで、HAProxy で断続的な 503 を解決しました。uWSGI (アップストリーム) がキープアライブでうまく機能していないようです。問題の背後にあるものはよくわかりませんが、このオプションを追加してから、503 は 1 回も発生していません。

于 2019-07-05T12:26:09.190 に答える