レイヤー7コンテンツスイッチングを構成する
http://example-sports.com/about-us を閲覧するエンドユーザーには、会社とサービスに関するコンテンツをホストするサーバープールがサービスを提供し、http://example-sports.com/shopping-cart-football を閲覧するユーザーには、オンライン購入を可能にする別のサーバープールがサービスを提供します。
L7 ルール
-
ホスト名: HTTP 要求のホスト名は、ルール内の値パラメーターと比較されます。例: 「www.example-sports.com」。
-
パス: HTTP URI のパス部分は、ルール内の値パラメーターと比較されます。例: 「www.example-sports.com/shopping-cart/football_pump.html」
-
file\_type: URI の最後の部分は、ルール内の値パラメーターと比較されます。例: txt、html、jpg、PNG、xls など。
-
ヘッダー: キーパラメーターで定義されたヘッダーは、ルール内の値パラメーターと比較されます。
-
クッキー: キーパラメーターで指定されたクッキーは、ルール内の値パラメーターと比較されます。クッキーの要求ヘッダーフィールド値には、その URL に保存されている情報の名と値のペアが含まれます。一般的な構文は次のとおりです。Cookie: name=value。たとえば、「stores」という名前のクッキーで、「football-」で始まる値を探すルールは次のようになります。type = Cookie, compare_type=StartsWith, key = stores value = football-。
比較タイプ
-
regex: Perl タイプの正規表現マッチング
-
starts\_with: 文字列が〜で始まる
-
ends\_with: 文字列が〜で終わる
-
contains: 文字列が〜を含む
-
equal\_to: 文字列が〜と等しい
L7ポリシー
-
プールへのリダイレクト - L7ポリシーに関連付けられたルールによって識別されるアプリケーションサーバープールにリクエストを転送します。つまり、ドメイン名に基づいて特定のロードバランサープールにリクエストを誘導するアプリケーションルールを作成できます。例えば、example-football.comへの一部のリクエストをpool\_1に、example-sports-online\_purchase.comへの他のリクエストをpool\_2に誘導するルールを作成できます。
-
URLへのリダイレクト - ロケーション応答ヘッダーに新しいロケーションが含まれるリダイレクトHTTP応答をクライアントに送信します。ブラウザはアドレスバーを新しいロケーションで更新し、新しいリクエストを発行します。用途は多岐にわたります。例えば、ウェブサイトのアドレスが変更された場合、リクエストを破棄する代わりに新しいアドレスにリダイレクトできます。または、ウェブサイトのメンテナンス中に、ユーザーを読み取り専用サイトにリダイレクトできます。
-
拒否 - リクエストを拒否し、それ以上のアクションを実行しません。例えば、制限されたウェブページへのユーザーのアクセスを拒否するために、401 Unauthorized応答を返すことができます。
OpenStack L7ポリシーとNetScalerエンティティ間のマッピング
| OpenStack | NetScalerエンティティ | 説明 |
| アクションREDIRECT_TO_POOLを持つL7ポリシー | コンテンツスイッチングポリシー > コンテンツスイッチングアクション | NetScaler ADMは、コンテンツスイッチング仮想サーバーにバインドされ、コンテンツの取得とユーザーへの提示のためのアプリケーションサーバーのターゲットプールを指定するコンテンツスイッチングアクションに関連付けられたコンテンツスイッチングポリシーを作成します。 |
| アクションREDIRECT_TO_URLを持つL7ポリシー | レスポンダーポリシー > レスポンダーアクション | NetScaler ADMは、コンテンツスイッチング仮想サーバーにバインドされ、ユーザーに提示されるターゲットURLを指定するレスポンダーアクションに関連付けられたレスポンダーポリシーを作成します。 |
| アクションREJECTを持つL7ポリシー | レスポンダーポリシー > リクエストを破棄 | NetScaler ADMは、コンテンツスイッチング仮想サーバーにバインドされ、リクエストを破棄するレスポンダーアクションに関連付けられたレスポンダーポリシーを作成します。 |
ポリシーの配置
-
新しいポリシーに既存のポリシーと同じ優先順位を割り当てると、新しいポリシーがその優先順位を取得します。既存のポリシーの優先順位は下がります。必要に応じて、ポリシーが評価される順序を維持するために、他のポリシーの優先順位も下げられます。
-
位置を指定せずに新しいポリシーを作成すると、新しいポリシーはリストの末尾に追加されます。
-
新しいポリシーを作成し、リストに既に存在するポリシーの数よりも大きい位置を割り当てると、新しいポリシーはリストの末尾に追加されます。つまり、新しいポリシーは常に次に利用可能な優先順位を取得します。たとえば、優先順位が1、2、3の3つのポリシーA、B、Cがある場合、ポリシーを作成して優先順位8を割り当てると、新しいポリシーの優先順位は4になります。
-
リストにポリシーを追加したり、リストからポリシーを削除したりすると、ポリシーの位置の値は番号をスキップせずに1から再順序付けされます。たとえば、ポリシーA、B、C、Dがそれぞれ1、2、3、4の位置値を持っている場合、リストからポリシーBを削除すると、ポリシーCが2番目の位置になり、ポリシーDが3番目の位置になります。
csvserverに関連付けられたデフォルトポリシーが存在します。このデフォルトポリシーは、lbvserverが任意の時点で処理するTCP接続の数を指定します。したがって、NetScalerで対応するレスポンダーポリシーとコンテンツスイッチングポリシーが作成されるとき、それらは常に、対応するL7ポリシーの優先順位よりも1大きい優先順位が割り当てられます。たとえば、優先順位1のL7ポリシーが評価され、優先順位2のコンテンツスイッチングポリシーが作成される場合です。同様に、優先順位2のL7ポリシーが評価され、優先順位3のレスポンダーポリシーが作成される場合です。
csvserverに関連付けられたデフォルトポリシーが存在します。このデフォルトポリシーは、lbvserverが任意の時点で処理するTCP接続の数を指定します。したがって、NetScalerで対応するレスポンダーポリシーとコンテンツスイッチングポリシーが作成されるとき、それらは常に、対応するL7ポリシーの優先順位よりも1大きい優先順位が割り当てられます。たとえば、優先順位1のL7ポリシーが評価され、優先順位2のコンテンツスイッチングポリシーが作成される場合です。同様に、優先順位2のL7ポリシーが評価され、優先順位3のレスポンダーポリシーが作成される場合です。
構成タスク
リクエストをドロップするL7ポリシーを作成する
neutron lbaas-l7policy-create --name <L7 policy name> --listener <listener name> --action<action-name>
特定のURLにリクエストをリダイレクトするL7ポリシーを作成する
neutron lbaas-l7policy-create --name <L7 policy name> --listener <listener name> --action <action-name> --redirect-url <redirect-url>
http://example-sports/about-us.html
neutron lbaas-l7rule-create --type HOST_NAME --compare-type CONTAINS --value <value-string> <L7 policy name>
neutron lbaas-l7rule-create --type PATH --compare-type CONTAINS --value <value-string> <L7 policy name>
リクエストをプールにリダイレクトするL7ポリシーを作成する
neutron lbaas-l7policy-create --name <L7 policy name> --listener <listener name> --action <action-name> --redirect-pool <redirect-pool>