ELBのローカルIPを2つ取得するケース

記事タイトルとURLをコピーする

こんにちは、AWSチームの横倉です。

ELBを利用して少し気になった部分を簡単に記載します。東京リージョンで2つのゾーンを利用し、ゾーンA、ゾーンBをまたいだELBを作成しました。また、セッション維持ができるようにELBのスティッキーセッションを有効にしました。

ネットワーク構成

こちらの構成で、アクセスログにX-Forwarded-Forを出力した場合にELBのローカルIP(10.xx.xx.xx.)が2つ表示されることがありました。
クライアントからWebサーバーまでの経路でELBを2台経由したことにより、ELB2台分のローカルIPがHTTPヘッダのX-Forwarded-For に挿入される挙動があったように思われます。

 

 

  •  ELB1台経由時 X-Forwarded-For: client1, 10.xx.xx.xx(ELB1)
  •  ELB2台経由時 X-Forwarded-For: client1, 10.xx.xx.xx(ELB1), 10.yy.yy.yy(ELB2)

以下に2台のELBを経由するケースを記載します。

 

1.ELBと同一内にあるインスタンスのヘルスチェック失敗時

ELBは同一ゾーン内に振り分け先のインスタンスがない場合はもう片方のゾーンにあるELBに対してルーティングする挙動になります。
例として、ゾーンAにあるELBは配下の振り分け先インスタンスのヘルスチェックが失敗した場合にゾーンBにあるELBへルーティングします。

 

 

 

2.スティッキーセッション 利用時

ELBのスティッキーセッションはCookieを利用したものになります。ELBがCookieの値を確認することで、クライアントは同一サーバーにアクセスできるようになります。
下図はクライアント側でCookieの値としてBを持った状態でアクセスを行った場合、ゾーンAにあるELBはCookieの値Bを確認するとゾーンBにあるインスタンスへの振り分けと判断し、ゾーンBのELBにルーティングを行います。

 

 

 

どちらのケースも結果として、クライアント、ゾーンAのELB、ゾーンBのELBそれぞれのIPアドレスがX-Forwarded-Forに挿入されているような動作かと思われます。
もし、アクセスログに10.xxから始まるアドレスが2つ入っていたらELBを2つルーティングした通信かもしれません。
他にもX-Forwarded-Forに挿入されるケースがあったらまた記載したいと思います。