11.18. Cookie を使用して既存の本番サイトで A-B テストを設定
レイヤー 7 (L7) ポリシーと共に Red Hat OpenStack Platform (RHOSP) Load-balancing サービス (octavia) を使用して、実稼働環境 Web サイトの A-B テスト (または分割テスト) を設定できます。
以下の例では、Web サイトの “B” バージョンにルーティングする Web クライアントは、プール (pool1) のメンバーサーバーによってクッキー site_version を B に設定します。
前提条件
- 2 つの実稼働環境用 Web サイト (サイト A とサイト B)
HTTP ロードバランサーが、「開始パスに基づくリクエストのプールへのリダイレクト」の手順に従って設定されている。必要な設定の概要は以下のとおりです。
-
ロードバランサー (
lb1) のリスナー (listener1)。 -
/jsまたは/imagesで始まる URL を持つ HTTP リクエストは、プール (static_pool) に送信される。 -
他のすべてのリクエストは、リスナーのデフォルトプール (
pool1) に送信される。 - 設定の詳細は、「開始パスに基づくリクエストのプールへのリダイレクト」 を参照してください。
-
ロードバランサー (
手順
Source コマンドで認証情報ファイルを読み込みます。
例
source ~/overcloudrc
$ source ~/overcloudrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow ロードバランサー (
lb1) に 3 番目のプール (pool_B) を作成します。注記丸かっこ内の値は、この手順のコマンド例で使用されるサンプルの値です。これらのサンプル値を、実際のサイトに適した値に置き換えてください。
例
openstack loadbalancer pool create --name pool_B \ --lb-algorithm ROUND_ROBIN --loadbalancer lb1 --protocol HTTP
$ openstack loadbalancer pool create --name pool_B \ --lb-algorithm ROUND_ROBIN --loadbalancer lb1 --protocol HTTPCopy to Clipboard Copied! Toggle word wrap Toggle overflow プライベートサブネット (
private_subnet) のロードバランサーメンバー (192.0.2.50および192.0.2.51) をプール (pool_B) に追加します。例
この例では、バックエンドサーバー
192.0.2.50と192.0.2.51の名前は、それぞれmember1とmember2です。Copy to Clipboard Copied! Toggle word wrap Toggle overflow ロードバランサー (
lb1) に 4 番目のプール (static_pool_B) を作成します。例
openstack loadbalancer pool create --name static_pool_B \ --lb-algorithm ROUND_ROBIN --loadbalancer lb1 --protocol HTTP
$ openstack loadbalancer pool create --name static_pool_B \ --lb-algorithm ROUND_ROBIN --loadbalancer lb1 --protocol HTTPCopy to Clipboard Copied! Toggle word wrap Toggle overflow プライベートサブネット (
private_subnet) のロードバランサーメンバー (192.0.2.100および192.0.2.101) をプール (static_pool_B) に追加します。例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow リスナー (
listener1) に L7 ポリシー (policy2) を作成します。ポリシーには、アクション (REDIRECT_TO_POOL) を追加し、プール (static_pool_B) を示す必要があります。1の位置にポリシーを挿入します。例
openstack loadbalancer l7policy create --action REDIRECT_TO_POOL \ --redirect-pool static_pool_B --name policy2 --position 1 listener1
$ openstack loadbalancer l7policy create --action REDIRECT_TO_POOL \ --redirect-pool static_pool_B --name policy2 --position 1 listener1Copy to Clipboard Copied! Toggle word wrap Toggle overflow リクエストパスの最初の
/jsまたは/imagesにマッチする正規表現を使用する L7 ルールを、ポリシー (policy2) に追加します。例
openstack loadbalancer l7rule create --compare-type REGEX \ --type PATH --value '^/(js|images)' policy2
$ openstack loadbalancer l7rule create --compare-type REGEX \ --type PATH --value '^/(js|images)' policy2Copy to Clipboard Copied! Toggle word wrap Toggle overflow 文字列 (
B) のクッキー (site_version) にマッチする 2 番目の L7 ルールを、ポリシー (policy2) に追加します。例
openstack loadbalancer l7rule create --compare-type EQUAL_TO \ --key site_version --type COOKIE --value B policy2
$ openstack loadbalancer l7rule create --compare-type EQUAL_TO \ --key site_version --type COOKIE --value B policy2Copy to Clipboard Copied! Toggle word wrap Toggle overflow リスナー (
listener1) に L7 ポリシー (policy3) を作成します。ポリシーには、アクション (REDIRECT_TO_POOL) を追加し、プール (pool_B) を示す必要があります。2の位置にポリシーを挿入します。例
openstack loadbalancer l7policy create --action REDIRECT_TO_POOL \ --redirect-pool pool_B --name policy3 --position 2 listener1
$ openstack loadbalancer l7policy create --action REDIRECT_TO_POOL \ --redirect-pool pool_B --name policy3 --position 2 listener1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 文字列 (
B) のクッキー (site_version) にマッチする L7 ルールを、ポリシー (policy3) に追加します。例
openstack loadbalancer l7rule create --compare-type EQUAL_TO \ --key site_version --type COOKIE --value B policy3
$ openstack loadbalancer l7rule create --compare-type EQUAL_TO \ --key site_version --type COOKIE --value B policy3Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記最も厳しいルールを持つ L7 ポリシーが低い位置に割り当てられることが重要です。これは、すべてのルールが True と評価される最初のポリシーが、アクションが実行されるポリシーになるからです。この手順では、誤ったプールにリクエストが送信されないように、
policy3の前にpolicy2が評価される必要があります。
検証
-
openstack loadbalancer l7policy listコマンドを実行し、ポリシーpolicy2およびpolicy3が存在することを確認します。 openstack loadbalancer l7rule list <l7policy>コマンドを実行し、それぞれのポリシーごとにcompare_typeがSTARTS_WITHのルールが存在することを確認します。例
openstack loadbalancer l7rule list policy2 openstack loadbalancer l7rule list policy3
$ openstack loadbalancer l7rule list policy2 $ openstack loadbalancer l7rule list policy3Copy to Clipboard Copied! Toggle word wrap Toggle overflow