[Pound 2.8] 負荷分散とCookieによるセッション維持
はじめに
前回の記事で、Poundのインストールと初期設定の説明を行い、リバースプロキシサーバとして動作させてみました。
今回は、バックエンドサーバを2台用意して負荷分散をします。また、同一のクライアントからのリクエストを常に同じバックエンドサーバに割り振るようにセッション維持(パーシステンス)の設定を行います。
構成
CentOS8でPoundをリバースプロキシとして動作させます。PoundはインターネットからHTTPS/TCP443のリクエストを受けます。続いて、Poundはインターネット側から受け取ったリクエストをバックエンドの2台のうちのどちらかにHTTP/TCP8080でリクエストを転送します。また、2回目以降の接続には同じバックエンドサーバに割り振られるようにセッション維持をさせます。
セッション維持の方式ですがPoundではクライアントIPやURLベース、Cookie等いくつかあります。今回はCookie方式を使います。
なお、Poundの負荷分散やセッション維持の詳細動作について、manやググったりしましたが詳細な説明を述べている情報は見つけられませんでした。そのため推測となりますが、(1)初回のリクエストをWebサーバへ転送。複数のWebサーバへの転送基準は不明だが後述の「Priority」設定で重みづけが可能。(2)WebサーバがCookieを付与してレスポンスをする。(3)おそらくその際にPoundはレスポンスを行ったバックエンドサーバとCookie情報を記憶する。(4)2回目以降のリクエスト時はCookieが付与されているので、PoundはCookieを読み取り記憶しているバックエンドサーバにリクエストを送る。という動作だと思います。
Poundの設定
負荷分散とCookieのセッション維持設定です。
17~30行目がバックエンドサーバ2台分の設定です。Priorityは1~9まで指定できデフォルトが5です。高いほどリクエストが転送されるようになります。
31~35行目がセッション維持の設定です。
TypeをCOOKIEにします。
IDはバックエンドサーバで付与するCookieの名前を指定します。当方の場合は先日WordPressでCookieを発行させる設定を行っておりその名前を使います。(WordPressでCookieを発行させたブログ記事)
TTLはアイドルタイムアウトです。120秒間通信が無ければセッション維持を開放します。
# vi /etc/pound.cfg
User "pound"
Group "pound"
Control "/var/lib/pound/pound.cfg"
Alive 30
ListenHTTPS
Address 192.168.200.12
Port 443
Cert "/etc/pki/tls/certs/www.lab-infra.com.pem"
AddHeader "X-Forwarded-Proto: https"
xHTTP 0
End
## WordPress
Service
HeadRequire "Host:.*www.lab-infra.com"
BackEnd
Address 192.168.201.21 #1台目のWebサーバ
Port 8080
TimeOut 10
Priority 5
Disabled 0
End
BackEnd
Address 192.168.201.22 #2台目のWebサーバ
Port 8080
TimeOut 10
Priority 5
Disabled 1
End
Session
Type COOKIE
ID "PHPSESSID"
TTL 120
End
End
設定は以上です。(『systemctl restart pound』などの反映コマンドは省略します)
動作確認
セッション維持『無効』で確認
まず、Session維持を設定しない状態で動作を確認します。
Sessionをすべてコメントアウトします。)
# Session
# Type COOKIE
# ID "PHPSESSID"
# TTL 120
# End
次にサイトへ接続します。なお、それぞれのWebサーバには『TESTPAGE-1』と『TESTPAGE-2』のページを配置してます。その状態で数回接続をすると、同じくらいの頻度で両ページが表示されます。つまり負荷分散が行われていることが確認できます。
セッション維持『有効』で確認
次にセッション維持を有効にして動作確認をします。
先ほどのSessionのコメントアウトを全て外します。
Session
Type COOKIE
ID "PHPSESSID"
TTL 120
End
サイトに数回接続しましたが、何度接続しても『TESTPAGE-1』が表示され、セッション維持が機能していることが確認できました。
なお、Cookieを削除し再度接続したところ『TESTPAGE-2』が表示され、その後数回接続をしても『TESTPAGE-2』が表示され続けセッション維持が効いていることが確認できました。
(Google ChromeでCookieを削除するには「F12」キー>Application>Cookiesから対象サイトのURL上で右クリックでコンテキストメニューを開き「Clear」)
以上でPoundの負荷分散、Cookieによるセッション維持の設定に関する説明を終わります。
ディスカッション
コメント一覧
まだ、コメントがありません