レイヤー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など。
-
ヘッダー: キーパラメーターで定義されたヘッダーは、ルールの値パラメーターと比較されます。
-
Cookie: キーパラメーターで指定されたCookieは、ルールの値パラメーターと比較されます。Cookie要求ヘッダーフィールドの値には、そのURLに保存されている情報の名と値のペアが含まれます。一般的な構文は次のとおりです - Cookie: name=value。たとえば、「stores」という名前のCookieで、「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 Consoleは、コンテンツスイッチング仮想サーバーにバインドされ、コンテンツ取得およびユーザーへの提示のためのアプリケーションサーバーのターゲットプールを指定するコンテンツスイッチングアクションに関連付けられたコンテンツスイッチングポリシーを作成します。 |
| アクションREDIRECT_TO_URLを持つL7ポリシー | レスポンダーポリシー > レスポンダーアクション | NetScaler Consoleは、コンテンツスイッチング仮想サーバーにバインドされ、ユーザーに提示されるターゲットURLを指定するレスポンダーアクションに関連付けられたレスポンダーポリシーを作成します。 |
| アクションREJECTを持つL7ポリシー | レスポンダーポリシー > リクエストを破棄 | NetScaler Consoleは、コンテンツスイッチング仮想サーバーにバインドされ、リクエストを破棄するレスポンダーアクションに関連付けられたレスポンダーポリシーを作成します。 |
ポリシーの配置
-
新しいポリシーに既存のポリシーと同じ優先順位を割り当てると、新しいポリシーがその優先順位を取得します。既存のポリシーの優先順位は下がります。必要に応じて、ポリシーが評価される順序を維持するために、他のポリシーの優先順位も下げられます。
-
位置を指定せずに新しいポリシーを作成した場合、新しいポリシーはリストの末尾に追加されます。
-
新しいポリシーを作成し、リストに既に存在するポリシーの数よりも大きい位置を割り当てた場合、新しいポリシーはリストの末尾に追加されます。つまり、新しいポリシーは常に次に利用可能な優先順位を取得します。たとえば、優先順位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>