最強のL7ロードバランサーNetScalerをAWS Marketplaceから使ってみる(1)

cloudpackエバンジェリストの吉田真吾@yoshidashingo)です。


Amazon ELB(Elastic Load Balancing)は、HTTP/HTTPSアプリケーションでX-Forwardedやスティッキーセッション、SSLターミナーション、HTTPヘルスチェックといったL7ロードバランシングが主軸で、場合によってTCPやUDPでのL4ロードバランシングも行うことができる、非常に便利で強力でコスト効率がよいロードバランシングサービスです。

ただ、いわゆるURLやCookieの中身やホストヘッダによるロードバランシング機能はありません。ということで、L7ロードバランス機能が豊富なCitrixのNetScalerを使ってみます。


AWSでNetScalerを使う際の特徴

NetScaler MPX/SDXとVPXの違い

  • MPX/SDX:H/Wアプライアンス、MPXが性能的な上位機種
  • VPX:仮想サーバーに搭載するソフトウェアアプライアンス。オプション機能的な差異はなく、MPX/VPXともに同様のエディションから必要なオプションが含まれているものを購入する

ソフトウェアのエディション

以下の3種類ある

  • Standard Edition
  • Enterprise Edition
  • Platinum Edition

ソフトウェアのバージョン

現在のバージョンは以下のとおり、10.1

  • NS10.1(10.1.e-126.1220.e / NS10.1: Build 126.1220.e.nc, Date: Jul 17 2014, 08:12:50)

※参照ドキュメントがVer.9系列のものでできているため管理画面の差異などに注意が必要である

AWS Marketplaceから利用可能なプラットフォーム

ライセンス持込み型と、ライセンスインクルードでそれぞれ制限の違うモデルがある。また、ここには記載していないが、NetScalerと合わせて利用するCloudBridgeのAMIもある。

  • NetScaler VPX - Customer Licensed
  • VPX-10 (Standard Edition / Enterprise Edition / Platinum Edition)
  • VPX-200 (Standard Edition / Enterprise Edition / Platinum Edition)
  • VPX-1000 (Standard Edition / Enterprise Edition / Platinum Edition)
  • その他、ソフトウェアを入手して構築する方法についての情報がないため、利用する場合はMarketplaceから起動するのがよいと判断される。

ライセンス

  • AWSでNetScalerを動作させるためのライセンスは(1)BYOL型と(2)Liscence Included型の2種類がある
  • (1)Customer Licensed型についてはBYOLで利用する形式
  • (1)BYOLは日本語サポート可
  • (2)Liscence Included型についてはライセンスが時間課金される
  • (2)Liscence Included型については英語でのみのサポートとなる
  • AWS資料(AWS環境へのNetscaler活用事例_Final.pdf)においては、常時起動して運用するメインのノードについては日本語でサポートしてもらえるようにライセンスを購入してBYOLし、DRやテスト環境はLiscence Included型で利用することが可能と記載されている

アーキテクチャ

  • VPC構成(3サブネット)
    • Management Subnet: 管理画面への接続やNetScaler機器の冗長化のため
      • 管理画面用Public IP = NSIP
    • Public Subnet: インターネット側のVIPや広域負荷分散用のサイトIP、ADNS用IPを配備するため
      • インターネット側のPublic IP = Virtual IP(HTTP)
      • 広域負荷分散用のサイトPublic IP = Mapped IP
      • ADNS用Public IP = Virtual IP(ADNS)
    • Private Subnet側の口のIPやBranch Repeaterを配備する「Private Subnet」(Private Subnet側の口のPrivate IPはSNIPと言う)が必要

※こんな感じ:インスタンス中心の図にすると見づらくて大変申し訳ないです。
f:id:yoshidashingo:20140830164134p:plain

  • IAM権限:事前にVPCを作ったり、起動後にEIPを設定したりするコンソール作業用
    • EC2:VPC、サブネットの作成権限(詳細については要調査※もう少し必要かもしれない)
  • IAM権限:Marketplaceから起動するユーザーに最低必要な権限
    • EC2:AttachNetworkInterface,ec2-DescribeInstances,DescribeNetworkInterfaces,DetachNetworkInterface(詳細については要調査※もう少し必要かもしれない)
    • CloudFormation:CreateStack,DescribeStacks,GetTemplate
  • 機能の有効化
    • 機能の有効化はhttpでNSIPに接続することで管理画面にログインでき、ここから行う。
    • 初期で有効化されている管理ユーザーはnsroot、パスワードはインスタンスIDである
    • 設定項目が非常に多いが、以下のような項目が 管理画面>System>Settings で設定できる
    • BYOLの場合、ライセンスのアップロードもこの管理画面から行う
  • 管理画面

f:id:yoshidashingo:20140830163417p:plain

  • モード

f:id:yoshidashingo:20140830162634p:plain

  • 基本機能

f:id:yoshidashingo:20140830162650p:plain

  • アドバンスト機能

f:id:yoshidashingo:20140830162707p:plain

  • グローバル変数

f:id:yoshidashingo:20140830162729p:plain

  • HTTPパラメータ

f:id:yoshidashingo:20140830162748p:plain

  • TCPパラメータ

f:id:yoshidashingo:20140830162828p:plain

  • 暗号化パラメータ

f:id:yoshidashingo:20140830162846p:plain

  • タイムゾーン

f:id:yoshidashingo:20140830162903p:plain

  • タイムアウト値

f:id:yoshidashingo:20140830162923p:plain

  • 可用性機能
    • 機器の冗長化:マスター機と同一のManagement Subnetに管理ポートを用意して配備。Public/Private Subnetは、マスターがフェイルした際にNSIP、SNIPがENIごとこのスレーブ機に移動してくるので不要。
    • 拠点の冗長化:GSLB(広域負荷分散)機能
  • CloudBridge および Branch Repeaterとは
    • NetScalerのVIPで受けたリクエストを他のリージョンや距離の離れたデータセンターにルートする必要がある場合に、セキュアに高速に通信できるVPNトンネルがCloudBridge。
    • 高速化のためにトラフィックを最適化するのがBranch Repeater。

環境構築後の設定

基本設定

  • VIPとしてEIPを割当て
  • Gateway, Hostname, MIP(GSLB用Public IP)/SNIP(Private Subnetの口のIP)を設定
  • 管理パスワードの変更
  • タイムゾーンの変更
  • MBF(MAC base forwarding)の有効化
  • 基本機能の有効化
  • アドバンスト機能の有効化
  • 振り分け先のサーバーインスタンスの作成・起動
  • サーバーの登録
  • サービスの作成
  • 仮想サーバーの作成
  • VIPのサブネットマスクの変更
  • PBR(Policy Based Routing)の設定、適用

HA構成にする

  • スレーブのインスタンスの登録
  • RPCパスワードの変更

GSLB(広域負荷分散)構成にする

  • GSLBの有効化
  • MIPの作成
  • ADNSサービスの作成(MIPを使う)
  • GSLBサイト(ローカル、リモート)の作成
  • GSLBサービス(ローカル、リモート)の作成
  • GSLB仮想サーバーの作成

CloudBridge, BranchRepeaterを構成する

今回はリージョン間の検証は行わない



ということで、次回から実際に環境構築後の設定や、実機を使った実際の振り分けなどを見てみたいと思います。