概要
ここでは、curl
コマンドを使用してSLBのセッション持続性の有効性をテストする方法について説明します。
説明
このトピックでは例を示します。
サンプル情報
SLBインスタンス: SLBインスタンスのパブリックIPアドレスが1.1.1.1で、バックエンドサーバーが2つのECSインスタンスであると仮定します。
2つのバックエンドECSインスタンス: どちらもWebサービスを実行し、内部ネットワークIPアドレスはそれぞれ192.168.32.175と192.168.32.177です。 両方のECSインスタンスのcheck.phpファイルにテストページを作成します。 このページには、ECSインスタンスのCookieと内部IPアドレス情報が表示されます。 check.phpコードは次のとおりです。
<? php setcookie('mycookie','cookietest'); echo 'Cookie is: '; echo ($_COOKIE['mycookie']); echo '</br>'; echo 'Current ECS is : '; echo '</br>'; var_dump($_SERVER['SERVER_ADDR']); ? >
check.phpにアクセスします。 同様の出力が表示されます。
テストアドレス:
http:// 1.1.1.1/check.php
クライアントテストマシン: Linuxでは、テストアドレスにアクセスできます。
テスト手順
レイヤー4 (TCP/UDP) およびレイヤー7 (HTTP/HTTPS) リスニングのセッション持続性の機能テストは異なり、別々に説明されます。
レイヤー4リスナー
セッション維持の有効性をテストするには、次の手順を実行します。
クライアントのテストマシンにログオンします。
新しいテストスクリプトcheck_4.shを作成します。内容は次のとおりです。
for ((a=1;a<=30;a++)) do curl http://1.1.1.1/check.php 2>/dev/null | grep 'ECS' sleep 1 done
説明注: デフォルトでは、スクリプトは30回テストされます。 変更できます。You can modify テスト時間を変更するには、
aonce=30
です。次のコマンドを実行してセッション永続性テストを実行します。
sh check_4.sh
次のシステム出力が表示されます。
すべてのバックエンドECSインスタンスの返された内部IPアドレスが同じである場合、セッション持続性が適用されます。
バックエンドECSインスタンスの返されたイントラネットIPアドレスが固定されていない場合、セッションの永続化は失敗します。
レイヤー7リスナー
セッション維持の有効性をテストするには、次の手順を実行します。
クライアントのテストマシンにログオンします。
次のコマンドを実行して、SLBインスタンスのCookie値を保存します。
説明注: レイヤー7 SLBのAlibaba Cloudセッション維持は、デフォルトでCookieを挿入します。 次のリクエストの開始に使われる
curl
コマンドはCookieを保存または送信しません。 テストする前に、対応するCookieを保存する必要があります。 それ以外の場合は、カール
のテスト結果はランダムになり、テスト結果の精度に影響します。curl -D test.cookie http://1.1.1.1/check.php
新しいテストスクリプトcheck_7.shを作成します。内容は次のとおりです。
for ((a=1;a<=30;a++)) do curl -b test.cookie http://1.1.1.1/check.php 2>/dev/null | grep 'ECS' sleep 1 done
説明注: デフォルトでは、スクリプトは30回テストされます。 変更できます。You can modify テスト時間を変更するには、
aonce=30
です。次のコマンドを実行してセッション永続性テストを実行します。
sh check_7.sh
次のシステム出力が表示されます。
すべてのバックエンドECSインスタンスの返された内部IPアドレスが同じである場合、セッション持続性が適用されます。
バックエンドECSインスタンスの返されたイントラネットIPアドレスが固定されていない場合、セッションの永続化は失敗します。
関連トピック
適用範囲
SLB