皆さん、
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つだけでローカルのピアであっても、各soft restart
haproxyの場合、状態を新しいプロセスに複製する必要があります。