web-dev-qa-db-ja.com

レイヤー7セッションを終了せずにHaproxy1.5xリロード構成?

皆さん、

SaaSアプリケーションの1つを、コヨーテポイントハードウェアロードバランサーから、ハッシュ永続性を処理するhaproxyを使用してnginx + haproxyを実行しているVMに移動しました。

私が直面している問題は、アプリが単一のバックエンドサーバー(元のリクエストを受け取る方)へのセッションスティッキネスを必要とすることですが、haproxy.cfgに変更を加えてサービスhaproxyリロードを実行すると、haproxyが新しいプロセスとして再起動されて強制終了されます特定のバックエンドサーバーへの既存の接続を終了する古いプロセス。つまり、すべてのユーザーがアプリからすぐにログアウトされます。

HA-Proxyバージョン1.5.4のhaproxyバックエンド構成は次のとおりです2014/09/02

backend webapp
    balance hdr(X-Real-IP)
        hash-type consistent
        mode http
        server server1 192.168.10.50:8080 check port 8080
        server server2 192.168.10.53:8080 check port 8080
        server server3 192.168.10.55:8080 check port 8080
        server server4 192.168.10.62:8080 check port 8080 backup

これは私たちにとって大きな問題です。特定のバックエンドサーバーのメンテナンスを実行したり、バックエンドプールからサーバーを追加/削除したりする必要がある場合、アプリのクライアントエクスペリエンスに影響を与えずにそれを行うことはできません。

Haproxyが正常にリロードされない場合、変更しないバックエンドへの既存のセッションを終了せずに、バックエンドのサーバーに動的に変更を加えるにはどうすればよいですか?

1
Jchieppa

サーバーのピアを定義すると、それが1つだけでローカルのピアであっても、各soft restart haproxyの場合、状態を新しいプロセスに複製する必要があります。

ドキュメント

2