LoginSignup
22
22

More than 5 years have passed since last update.

ELB入門 ELBのスティッキーセッションを試してみる

Posted at

ELBネタを少し追加でやってみます。
ELBのスティッキーセッションを有効にしてみましょう。

0.スティッキーセッション

ELBはデフォルトでは配下のinstanceに均等に負荷分散するため、一定のinstanceにずっと繋ぎに行くといったことはできません。
しかし、Cookie情報を保持させ、一定のinstanceと通信を続けさせることができます。
スティッキーセッションを確立させる方法は2種類あります。

- 時間ベースのセッション維持(ELBデフォルトのセッション維持機能)

- アプリケーション制御によるセッション維持

今回はELBの標準機能を使った時間ベースのスティッキーセッションの設定方法を見ていきましょう。

1.準備

ELBの準備をします。
ELBの設定方法はAWS入門 ELB〜マネジメントコンソールとCLI〜[2015年10月版]を参考にしてください。

使用するWEBサーバはAWS入門 EC2〜マネジメントコンソールとUserData〜[2015年10月版]で作ったものを流用します。

ただし、その構成だとWEBサーバが1台しかないので複数台に増やしたいと思います。
また作っても良いのですが、面倒なので複製することにします。

スクリーンショット_2015-10-12_0_01_12.jpg
こんな感じで複製できます。
現在起動しているインスタンスと異なったAZに配置するようにしましょう!耐障害性の考慮です。
さて、ページもどっちに振られてるのかわかるようにしてみましょう。
現在はhttp://<インスタンスのパブリックIP>/phpinfo.phpでPHPのサンプルが出るようになっていますが、HTMLページを作って設定します。

/var/www/html配下に現在phpinfo.phpが配置してあると思うので以下のファイルに置き換えてください。

index.html
<html>
    <head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

        <title>ELBのステッキーセッションを試す</title>


    </head>
    <body>
        <p>
            instance-001
        </p>
    </body>
</html>

インスタンスを2台使うので<body>内の記述をどっちのインスタンスかわかるようにしておきましょう。
さて、設定が終わったら複製したインスタンスをELBに追加してみてください。
2台のインスタンスのヘルスチェックがOKならELBのエンドポイントにブラウザからつなぎに行ってください。
何回かF5を押すと両方のインスタンスに通信が振り分けられていることがわかるかと思います。

2.スティッキーセッションの有効化

ELB設定画面を開きます

スクリーンショット_2015-10-12_0_14_25.jpg
画面中央の「維持設定」を編集します
スクリーンショット_2015-10-12_0_14_43.jpg
ロードバランサによってい生成されたCookieによる維持を有効化を選択し、有効期間を60秒に設定します。

スクリーンショット_2015-10-12_0_15_04.jpg
ポート構成のところで有効化されているのがわかるかと思います。
これで指定時間内に何回更新しても同じインスタンスにしか行けないと思います。
セッションの確立ができましたね!

3.CLIでやってみる

ではこの操作をCLIでやってみましょう。

変数
ELB_NAME='my-sample-elb'
POLICY_NAME='my-duration-cookie-policy'
COOKIE_TIME=60
ELB_PORT=80
create-lb-cookie-stickiness-policy
aws elb create-lb-cookie-stickiness-policy --load-balancer-name ${ELB_NAME} --policy-name ${POLICY_NAME} --cookie-expiration-period ${COOKIE_TIME}

ロードバランサーが生成する Cookie の維持ポリシーを作成します。

set-load-balancer-policies-of-listener
aws elb set-load-balancer-policies-of-listener --load-balancer-name ${ELB_NAME} --load-balancer-port ${ELB_PORT} --policy-names ${POLICY_NAME}

ロードバランサーのセッション維持を有効にします。


以上でELBによるセッション維持の方法を終わります。
実際に使う際にはアプリケーションからセッションを設定する方が使うかとは思いますが、ELB単体の機能を使っても可能だということを見てい行きました。


番外(クロスゾーン負荷分散)

SSの中にクロスゾーン負荷分散という項目があったと思います。
なんだかわかりますか?

ELBははデフォルトで複数のAZにまたいで作ると両方の中に存在するインスタンスの数は気にせず、トラフィックを2つのAZに均等に流します。
そう、両方のインスタンスの数が同じならいいのですが、数に偏りがあると均等に負荷分散されません。
その辺を考慮して、ゾーンをまたいで全インスタンスに均等にトラフィックを振り分けるってことをしてくれるのがこの機能です。ロードバランサーのクロスゾーン負荷分散を設定する


参考

22
22
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
22
22