ITよろづや

ITの参考になる情報を備忘録代わりに残していきます

ロードバランサ、負荷分散装置を多段構成した場合のCookieセッション維持(パーシステンス)

ロードバランサ、負荷分散装置を多段構成した場合のセッション維持(パーシステンス)に関する情報を探したのですが、全く情報が見つかりませんでした。

 

構成によってはLBを多段で使用する構成がでてくることもあるかもしれません。例えば、PCがあるシステムに接続するまでに、負荷分散装置(ロードバランサ)を複数かませる構成の場合に、セッション維持の考え方はどうなるのか気になりました。

 

ちょっと文章だけだとわかりにくいので、マイクロソフトAWSの構成図に近しいものがあったので掲載します。情報元はこちら。

 

Azure Load Balancer の概要

https://docs.microsoft.com/ja-jp/azure/load-balancer/load-balancer-overview

 

以下は文章抜粋です。

 

Azure Load Balancer は、開放型システム間相互接続 (OSI) モデルのレイヤー 4 で動作します。 クライアントにとっての単一接続点となります。 Load Balancer は、ロード バランサーのフロントエンドに到着したインバウンド フローを、バックエンド プールのインスタンスに分配します。 これらのフローは、構成された負荷分散規則と正常性プローブに従っています。 バックエンド プール インスタンスには、Azure Virtual Machines か、仮想マシン スケール セット内のインスタンスを使用できます。

 

以下は図の抜粋です。

f:id:merrywhite:20200411091143p:plain

 

例えばインターネットの雲の図から接続してきた場合に、図の一番下のレイヤにある仮想マシンをWEB/APサーバと位置付けた場合に、セッション維持の設定は、2台に対して行う事になります。

 

セッション維持の設定は、配下のメンバーサーバで動作すると考えていますので、二つのLBでは一貫したセッション維持の設定をしないと、外部から接続してくるクライアントのセッションが意図せず切れてしまうということもあるのではないかと考えてしまいます。

 

仮に、一番したのWEB/APサーバとクライアントのセッション維持をCookie(クッキー)によるセッション維持を考えた場合、当然、WEB/APの前段にいるLBに対してセッション維持の設定が必要になると考えますが、その前に配置されているLBはどのように考えればいいのかということですね。

 

ただ単にセッションタイマーを合わせれば、同じ手法をとらなくてもいいのか。それとも、同じ設定したほうがいいのか。こればかりは動作検証をしてみないと分かりませんが、さらに図の場合はインターネット接続があると考えると、当然、証明書を使用したSSLによる暗号化通信が必要になりますので、さらに考慮する点が増えますね。

 

使用するサーバ、通信要件によって設定も変わってくると思いますが、引き続き、こちらはいい情報がないか調査していきたいと思います。実績があるという方は情報をいただけると幸いです。