web-dev-qa-db-ja.com

Haproxyで実際に同じサーバーのヘルスチェックが重複しないようにするにはどうすればよいですか?

次の構成ファイルは期待どおりに機能しますが、実際に同じプロキシサーバーに対して重複したヘルスチェックを実行します。このような重複したヘルスチェックを回避するにはどうすればよいですか? (私はまだヘルスチェックを行いたいが、ヘルスチェックを複製したくない)

global
    external-check
defaults
    option httplog
    log 127.0.0.1:514 user
    timeout connect 5000s
    timeout client 5000s
    timeout server 5000s
#Close the using connection when backend server marked as down
listen main-proxy1
    bind 127.0.0.1:8079
    mode http
    option external-check
    external-check command /checker
    balance static-rr
    server proxy1 127.0.0.1:9999 check on-marked-down shutdown-sessions on-marked-up shutdown-backup-sessions
#Don't close the using connection when backend server marked as down
listen main-proxy2
    bind 127.0.0.1:8080
    mode http
    option external-check
    external-check command /checker
    balance static-rr
    server proxy2 127.0.0.1:9999 check
1
illiterate

trackディレクティブを使用して、別のサーバーのステータスを追跡できます。あなたの場合、2番目のserver行は次のようになります。

server proxy2 127.0.0.1:9999 track main-proxy1/proxy1
3
wurtel

これを解決する最も簡単な方法は、フロントエンドとバックエンドを定義することだと思います。

例:

frontend www.mysite.com
    bind 10.0.0.3:80
    bind 10.0.0.3:443 ssl crt /etc/ssl/certs/mysite.pem
    http-request redirect scheme https unless { ssl_fc }
    use_backend api_servers if { path_beg /api/ }
    default_backend web_servers

backend web_servers
    balance roundrobin
    cookie SERVERUSED insert indirect nocache
    option httpchk HEAD /
    default-server check maxconn 20
    server server1 10.0.1.3:80 cookie server1
    server server2 10.0.1.4:80 cookie server2

バックエンドにヘルスチェックがあり、複数のフロントエンドに同じバックエンドを使用できるようになります。

1
c4f4t0r