web-dev-qa-db-ja.com

HAProxy appsession request-learnとは何ですか?

HAProxyマニュアル を読んでいて、理解していない部分があります:

request-learn
               If this option is specified, then haproxy will be able to learn
               the cookie found in the request in case the server does not
               specify any in response. This is typically what happens with
               PHPSESSID cookies, or when haproxy's session expires before
               the application's session and the correct server is selected.
               It is recommended to specify this option to improve reliability.

「サーバーが応答を指定しない場合」とはどういう意味ですか。具体的には、サーバーが何に応答するのか、サーバーがCookieを指定しない場合にCookieを学習する意味は何ですか。

「haproxyのセッションがアプリケーションのセッションの前に期限切れになるとき」の問題は重要な問題のように思われますが、haproxyによるその処理はここでは意味がありません。

2

通常、Cookieを使用している場合は、バックエンドサーバーからの応答に「set-cookie」ヘッダーが付いています。これは通常、ログインへの応答です。これが起こらない場合、HAProxyは同じバックエンドサーバーにあなたを固定することができません

このオプションにより、HAProxyは、「set-cookie」を使用したHTTP応答だ​​けでなく、HTTP要求に基づいてCookieについて「学習」することができます。

特定の質問に答えるには:

"サーバーは何に応答していますか?"任意のHTTPリクエスト

"サーバーが提供しなかったCookieを学習するポイントは何ですか?"非標準の処理を実行し、提供しない/提供できないサーバーがある場合、HAProxyがスティッキを実行できるようにします。期待通りのクッキー。彼が提供する例は「PHPSESSID」Cookieです。

"HAproxyのセッションはアプリケーションのセッションの前に期限切れになりますか?" HAProxyはスティッキネスを実行するためにCookieを保存します。それらは、もはや良くなくなる前にTTLを持っています。バックエンドサーバーのTTLがTTLの場合、HAProxyはバックエンドサーバーの前にCookieを忘れます。クライアントはリクエストにCookieを持ち、HAProxyはCookieを再学習できます。

バックエンドサーバーがセッション情報を複製しない場合、このオプションはTTLの場合、有用性が制限されます。これは、非標準のCookieの場合のシナリオにも適用されるためです。しかしながら。

2