このドキュメントで説明するソフトウェアは、Extended SupportまたはSustaining Supportのいずれかにあります。 詳細は、https://www.oracle.com/us/support/library/enterprise-linux-support-policies-069172.pdfを参照してください。
Oracleでは、このドキュメントに記載されているソフトウェアをできるだけ早くアップグレードすることをお薦めします。
多くのwebベースのアプリケーションでは、ユーザー・セッションが同じWebサーバーによって永続的に処理される必要があります。 Webセッションを同じサーバーに永続的に接続する場合は、hdr
、rdp-cookie
、source
、uri
、url_param
などのbalance
アルゴリズムを使用できます。 実装でleastconn
、roundrobin
またはstatic-rr
アルゴリズムを使用する必要がある場合は、サーバー依存Cookieを使用してセッションの永続性を実装できます。
1つのWebサーバーですべてのページのセッションの永続性を有効にするには、次の例のように、cookie
ディレクティブを使用して、挿入するCookieの名前を定義し、cookie
オプションとサーバー名をserver
の行に追加します。
cookie WEBSVR insert server websvr1 192.168.1.71:80 weight 1 maxconn 512 cookie 1 check server websvr2 192.168.1.72:80 weight 1 maxconn 512 cookie 2 check
HAProxyは、Webサーバーを識別する追加のSet-Cookie:
ヘッダーをクライアントへの応答に含めます(例: Set-Cookie: WEBSVR=
)。 以降にクライアントがリクエストでN
; path=page_path
WEBSVR
Cookieを指定すると、HAProxyは、server cookie
の値がWEBSVR
の値と一致するWebサーバーにリクエストを転送します。
次の例に、挿入されたCookieがセッションの永続性を確保する方法を示します。
$while true; do curl http://10.0.0.10; sleep 1; done
This is HTTP server websvr1 (192.168.1.71). This is HTTP server websvr2 (192.168.1.72). This is HTTP server websvr1 (192.168.1.71).^C
$curl http://10.0.0.10 -D /dev/stdout
HTTP/1.1 200 OK Date: ... Server: Apache/2.4.6 () Last-Modified: ... ETag: "26-5125afd089491" Accept-Ranges: bytes Content-Length: 38 Content-Type: text/html; charset=UTF-8 Set-Cookie: WEBSVR=2; path=/ This is HTTP server svr2 (192.168.1.72). $while true; do curl http://10.0.0.10 --cookie "WEBSVR=2;"; sleep 1; done
This is HTTP server websvr2 (192.168.1.72). This is HTTP server websvr2 (192.168.1.72). This is HTTP server websvr2 (192.168.1.72).^C
Webサーバーで選択的に永続性を有効にするには、次の例のように、cookie
ディレクティブを使用して、指定したCookie(通常はセッションID Cookieまたはその他の既存のCookie)の前にserver cookie
値および~
デリミタが付くことをHAProxyが必要とすることを指定します。
cookie SESSIONID prefix server websvr1 192.168.1.71:80 weight 1 maxconn 512 cookie 1 check server websvr2 192.168.1.72:80 weight 1 maxconn 512 cookie 2 check
SESSIONID
の値の前にserver
cookie
値を付けると(例: Set-Cookie: SESSIONID=
)、HAProxyは、N
~Session_ID
;SESSIONID
Cookieから接頭辞とデリミタを取り除いてから、server cookie
値がその接頭辞と一致するWebサーバーにリクエストを転送します。
次の例に、接頭辞付きのCookieの使用によってセッションの永続性を有効にする方法を示します。
$while true; do curl http://10.0.0.10 --cookie "SESSIONID=1~1234;"; sleep 1; done
This is HTTP server websvr1 (192.168.1.71). This is HTTP server websvr1 (192.168.1.71). This is HTTP server websvr1 (192.168.1.71).^C
実際のWebアプリケーションは通常、サーバー側にセッションIDを設定し、この場合、最初のHAProxyレスポンスでSet-Cookie:
ヘッダーに接頭辞付きのCookieが含められます。