web-dev-qa-db-ja.com

HAProxyをキープアライブにする方法

私の環境では、2つのWebサーバー(Apache)のhaproxyロードバランスがあります。これは私のHAプロキシ構成です。

global
    log         127.0.0.1 local2

    chroot      /var/lib/haproxy
    pidfile     /var/run/haproxy.pid
    maxconn     4000
    user        haproxy
    group       haproxy
        tune.ssl.default-dh-param 2048
    daemon
        nbproc      1
    stats socket /var/lib/haproxy/stats
        stats       timeout 1m
        nogetaddrinfo
listen front
    bind :80
    redirect scheme https if { hdr(Host) -i domain.com } !{ ssl_fc }
listen front_ssl
    bind :443 ssl crt /opt/certificate/domain.pem
    mode http
        option dontlognull
    stats      enable
    stats      uri /ha?stats
    stats      realm system
    stats      auth root:*********
    stats      refresh 5s
    option http-keep-alive
    option forwardfor
    option redispatch
    reqadd X-Forwarded-Proto:\ https if { ssl_fc }
         timeout client  15s
        timeout connect 3s
        timeout server  15s
        timeout http-request 15s
        timeout http-keep-alive 15s
        default_backend bk_http
backend bk_http
        mode http
        balance source
        option http-keep-alive
        default-server inter 1s
        retries 3
        timeout connect 3s
        timeout server  15s
        timeout queue 60s
        timeout check 10s
        timeout http-request 15s
        timeout http-keep-alive 15s
        server node1 1.2.3.4:82 check id 1 weight 1 maxconn 2000 maxqueue 2000
        server node2 5.6.7.8:82 check id 1 weight 1 maxconn 2000 maxqueue 2000

/etc/httpd/conf/httpd.confの「KeepAliveOn」しかし、curlでテストすると、キープアライブが機能していないことがわかります。

curl -Iv http://domain.com 2>&1 | grep -i 'connection #0'
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0* Closing connection #0
curl -Iv https://domain.com 2>&1 | grep -i 'connection #0'
* Closing connection #0

キープアライブが機能しているかどうかはわかっていますが、結果は次のようになります。

  0   162    0     0    0     0      0      0 --:--:--  0:00:05 --:--:--     0* Connection #0 to Host domain.com left intact
* Closing connection #0

設定に問題がある場合はお知らせください。

5
user36814

適切な構成があります。必要なのはoption http-keep-aliveこれはhaproxy1.5のデフォルトです。インストールしたバージョンを確認してください。

http://www.haproxy.org/download/1.5/doc/configuration.txt セクション4を参照してください。プロキシ

HTTPモードでは、接続を介して流れる要求と応答に適用される処理は、フロントエンドのHTTPオプションとバックエンドのHTTPオプションの組み合わせによって異なります。 HAProxyは5つの接続モードをサポートしています:

  • KAL:デフォルトモードであるキープアライブ(「オプションhttp-keep-alive」):すべての要求と応答が処理され、接続は開いたままですが、応答と新しい要求の間はアイドル状態です。

  • TUN:トンネル(「オプションhttp-tunnel」):これはバージョン1.0から1.5のデフォルトモードでした-dev21:最初の要求と応答のみが処理され、他のすべては分析なしで転送されます。このモードは、ロギングとHTTP処理で多くの問題を引き起こすため、使用しないでください。

  • PCL:パッシブクローズ(「オプションhttpclose」):トンネルモードとまったく同じですが、最初の要求/応答交換の後に両端を閉じようとするために、両方向に「接続:クローズ」が追加されています。

  • SCL:サーバーを閉じる( "option http-server-close"):応答の終了を受信した後、サーバーに面した接続は閉じられますが、クライアントに面した接続は開いたままになります。

  • FCL:強制クローズ( "option forceclose"):応答の終了後に接続がアクティブにクローズされます。

バックエンドnode1/node2が接続を閉じている可能性があります。キープアライブが有効になっていない可能性があります。

Http/1.1のトラフィックチェックを傍受し、「Connection:close」ヘッダーがない場合

10
KCD