調べてみると、現状lvsではsource IP addressでのpersistence処理しかないみたいですね。L4だから当然なのか。
ipvsadmでの設定
ipvsadmで設定するときに-pオプションをつけるだけ。
お好みでtimeoutの秒数も設定できる。
ipvsadm -A -t www.example.com:80 -p
keepalived.confでの設定
virtual_server groupの設定に
persistence_timeout 300
を設定する。
persistenceするときの注意
persistenceを有効にする場合はkeepalived.confにinhibit_on_failureを設定してはいけない模様。
- inhibit_on_failure
realserverが落ちた際に、設定から削除せずweightを0にする
inhibit_on_failureが入っている状態でclientが以前に接続したreal serverが落ちたとする。この時、persistenceがtimeoutする前にclientから接続が来続けると、ずっと落ちているreal serverに行こうとする。(weightが0になっているにも関わらず)
ドキュメントはまだちゃんと読んでないです。実験してみた例です。