lvsでsession persistence(セッションパーシステンス)

調べてみると、現状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になっているにも関わらず)


ドキュメントはまだちゃんと読んでないです。実験してみた例です。