Virtual Server(IPアドレス)

BIG-IPは基本的にVirtual Serverというオブジェクトが然るべきトラフィックを拾い上げ、その設定にマッチした動作をさせます。動作というのは単純に振分けたり、iRulesでURLごとに振分けたり、HTTPのヘッダをいじったりというものを指します。
Virtual Serverがそのパケットを拾い上げるかどうかを決めるマッチ条件はIPアドレスとポート番号です。従ってVIPという習慣的な表現は正確ではありません。

Self IPとの関連性

Virtual Serverに設定するIPアドレスは、上述の通りマッチ条件にしか過ぎないので、Self IPと同一である必要はありません。従って以下のような構成も可能です。

Virtual ServerにグローバルIPを設定したいときに、BIG-IP自身が属するサブネットにも同じようにグローバルIPアドレスが必要な場合、上位ルータのBIG-IP側も含めると最低4個のホスト用IPアドレスにプラスしてネットワークアドレスとブロードキャストアドレスが必要になりますが、上図の構成を使用すると本当にサービスで必要なIPアドレスのみを効率的に使用することができます。当然上位ルータにはルーティングの設定が必要になりますが。

論理構成(IPネットワーク)

今回は論理構成(IPアドレッシング)について解説したいと思います。
だいたいマニュアル等に掲載されている内容では有りますが・・・


  1. ノーマルなL3構成

    うまい名前が思いつかなかったのでL3構成としましたが、クライアント側とサーバ側が異なるサブネットになる構成です。
    サーバから見たゲートウェイアドレスはBIG-IPのSelf IPになります。
    Self IPはBIG-IPに設定されるデバイス自身のIPアドレスで、実際にサービスを受け付けるIPアドレス(Virtual Server)とは異なります。

    また、この構成ではVirtual Serverを設定しない限りはクライアントとサーバが直接通信するすることはできません。
    そしてクライアント側、サーバ側ともにエンドポイントが同じセグメントに存在する必要は無く、以下のような構成も可能ですが、当然サーバおよびBIG-IP上にルーティングの設定が必要になります。


    いずれの構成でも、BIG-IP上でアドレス変換の設定を明示的に行わない限りは、サーバにパケットが到達する際のソースIPアドレスはクライアントのIPアドレスになります。

  2. クライアントとサーバが同一セグメント(ワンアーム)

    クライアントとサーバが同一セグメントに存在する場合の構成です。たとえばWeb-AP-DBの通信があるケースで、すべてを同じセグメントに置いておいてかつBIG-IPでトラフィックを管理するような場合です。

    BIG-IPは、TCPであれば通常はTCPのProxyとして動作し、クライアント側/サーバ側それぞれで個別にTCPのセッションを確立するため、ステートを管理しています。このため、明示的に設定をしない場合は非対称経路の通信は基本的には行うことができません。この構成での通信は、行きのパケットは

    Client -> BIG-IP -> Server

    という経路になりますが、戻りパケットはクライアントとサーバが同一サブネット上にあり、BIG-IPを介さずとも通信できるため、

    Server -> Client

    という経路になり、サーバとBIG-IPの間でセッションを確立することができないため正しく通信することができません。
    回避策はBIG-IPでソースIPをBIG-IPのSelf IPに変換する(SNAT)ことです。
    これによって、サーバはそのパケットの戻りをBIG-IPに返せるため正しく通信できます。

    クライアントのIPアドレスを保持したい場合はクライアントとサーバを別セグメントに配置するか、同セグメントに配置してHTTPであればHTTPヘッダにクラインとのIPアドレスを埋め込む必要があります。

  3. DSR

    Direct Server Returnという一般名称なのですが、BIG-IPのマニュアルにはnPathという名前で記載されています。構成等もマニュアルに書いてあるので割愛しますが、このために必要な設定は

    • L4モードで動かす
    • Virtual ServerのIPアドレスを同じIPアドレスを振分先リアルサーバ(Pool Member)のループバックアドレスに設定する
    • VSの設定で、Port TranslationをDisableにする

    です。このように、DSRの場合はL4モードでしか動作しないため、L7に関連する処理は何も入れることができません。
    また、L4モードはTCPのエンドポイントがクライアントとサーバになり、BIG-IPでProxyしないため各種DoS対策機能を使用することができません。LVS等ならともかくBIG-IPのようなシステム全体のトラフィック管理を担うような物でDSRを使用するメリットはあまり無いでしょう。

物理構成

前回のエントリーで物理構成について振れましたが、ここではもう少し詳しく見ていきたいと思います。

VLAN対応スイッチにはVLAN tagという便利な機能があります。BIG-IPも同様にサポートしている機能で、考え方については"タグVLAN"や"VLAN tag"でググってください。

たとえば以下のような構成をやりたい場合、ケーブルとスイッチは何本必要でしょうか。

物理的にもこれと同じ構成にして、スイッチ3個でBIG-IPを囲むという構成がありがちなんでしょうが、VLANを使用すると以下のようにすることもできます。

スイッチを少なくすることができました。
これを見てシステムの可用性について一言言いたい人がいるかもしれません。
図では簡単のために書いていませんが、商用で使用するシステムで冗長可されていない構成などありません。このスイッチも当然二重化されるべきです。

可用性が十分と判断された後は性能のことを考えなければなりません。
インターネット回線が1GbpsだからといってBIG-IPとスイッチの間が1Gbpsで良いはずはありません。単純なWebサーバのトラフィック振り分けならまだしも、他にも処理対象とするトラフィックがたくさんあるでしょう。その場合はLink Aggregation(IEEE802.3ad)を使います。802.3adでBIG-IPが束ねられるリンク数は2のべき乗が推奨。BIG-IPの帯域にもよりますが、1600と3600なら2本、6900なら8本、8400/8800は10Gbpsを2個束ねれば良いでしょう。リンク分散アルゴリズムは以下から選べます。


  • Source/Destination MAC address
  • Destination MAC address
  • Source/Destination IP address

システム構成を考える

柔軟性のあるネットワーク構成がひとつの特徴でもあると思いますが、スパゲッティネットワークは誰も望んでいないと思います。高いシステムやコンサルを売りたい人達にとっては別でしょうけど・・・

簡単な構成を作るためのセオリーは、簡単にいうと以下のような感じではないかと。


  1. 物理的にはワンアーム構成
  2. NAT/SNATは使わず、すべてのトラフィックをVirtualServerで処理する
  3. この場合、適用範囲をできるだけ狭くする(80しか通さないのにAll Protocols, All Portsのようなことはしない)

これらについては次回以降にするとして、今回はSelf IPアドレスの取扱いについて考えたいと思います。

Self IPアドレスとはBIG-IP自身が持っているアドレスのことで、以下の用途に使われます。

  1. 管理インターフェイスへのアクセス
  2. SNAT Automap時のアドレス
  3. 冗長構成時のActive-Standby間の諸々のやりとり

これらはいずれもインターネット(外部)からアクセスする必要はありません。ですので個人的には外からのSelf IPへのアクセスはすべて遮断されるべきです。この場合、Port Lockdownの設定をAllow NoneにしておけばSelf IPに対するあらゆるTCP/UDPトラフィックを遮断します(ICMPは対象外)。ICMPに関しては上位のルータやBIG-IP自身のパケットフィルタで制御しておけば問題ないでしょう。また、BIG-IPにはいくつかのICMP関連の防御機能があります。

管理ネットワーク利用のススメ

現在販売されているすべてのBIG-IPシリーズには筐体の左端にmanagement portが備わっています。
これを使用すると、ここ経由でBIG-IPにログインすることができます。

この機能により、以下のようなメリットがあります。


  • 運用管理サーバから直接アクセス可能になるので、運用管理系のネットワーク構成がシンプルになる(複数のVLANが設定されているような構成で、どこからアクセスしていいか等悩む必要が無い)
  • 各VLANに割り当てられるSelf IPアドレスに穴をあけて(Port Lockdown設定)、sshやhttpsなどの管理用トラフィックを受け付ける必要がなくなる
  • シリアルケーブルの物理的な接続無しにBIG-IPのバージョンアップやインストール、再起動が行える


以下で管理ポートの設定と関連項目の説明をします。


  • アーキティクチャ
    BIG-IPのハードウェアは以下の3種類のサブシステムから成り立っています。

    1. Host サブシステム
      M/Bです。CPU処理やメモリアクセスを行います
    2. SCCP(AOM) サブシステム
      システム全体の管理を行います
    3. Switch サブシステム
      L2処理等のネットワーク処理を受け持ちます


    管理ポートはSCCP(AOM)と接続されています。

  • SCCPとAOM

    SCCPとはSwitch Card Control Processorの略です。詳細はこちら。
    SOL3454: Overview of the SCCP

    AOMはBIG-IPの新しいハードウェア(1600/3600 : 黒いの)に搭載されるSCCP相当のサブシステムで、Always On Managementの略です。
    以前の型(1500-8800 : 青いの)では各サブシステムがそれぞれEthernetケーブルで接続されて別々に動作していたためSCCPを使用してコントロールしていたようですが、黒いのは一枚のボードになったようで、AOMではそれほど複雑な制御はしていないようです。外から使う分にはインターフェイスのスピードが100BASEから1000BASEになった以外に変化はありませんが、シンプルになっている分信頼性は高いのではないかと思います。

    SCCP/AOMにログインした場合、Hostには内部のシリアルインターフェイスを使用してアクセスすることができます。
    このため、Hostへのシリアルアクセスの方法は、コンソールケーブルによる直接アクセスとSCCP/AOM経由の2種類用意されていることになります。

  • IPアドレス割当

    内部的には2個のコンピュータ(SCCP/AOMとHost)が動作していることになるので、管理ポートには2個のIPアドレスを割り当てることができます。1個がSCCP/AOMにログインするため、もう一つがHostに直接入るためです。SCCP/AOMに外部からアクセスしない場合はSCCP/AOM用のIPアドレスを設定する必要はありません。個人的には両方設定しておくのがおすすめです。

  • IPアドレスの設定

    SCCP/AOMを使用する場合、最初だけはコンソールケーブルで接続してIPアドレスを設定します。設定手順は以下の通りです。

  • PCとBIG-IPをシリアルケーブルで接続します

  • PCのターミナルソフト(Hyper TerminalやTera Term)でターミナルセッションを開始します
    スピードを19200にすれば、他はデフォルト設定でいけるはずですが、設定の詳細は以下を参照してください。

    SOL7683: Connecting a serial terminal to a BIG-IP system


  • メニューを表示させます

    --- Press ( for Command Menu.

    と表示されるので指示に従います。
    以下のようなメニューが表示されます。

    Enter AOM ESC Command Handler

    AOM Command Menu

    1 --- Connect to Host subsystem console
    2 --- Reboot Host subsystem (sends reboot command)
    3 --- Halt Host subsystem (sends halt command)
    4 --- Reset Host subsystem (issues hardware reset--USE WITH CARE!)
    5 --- Reboot AOM subsystem (issues hardware reset--USE WITH CARE!)
    L --- AOM subsystem login
    N --- AOM network configurator
    P --- AOM platform information

    Enter Command:


    'N : AOM network configurator'はコンソールケーブル経由でしか表示されません。

  • ネットワークの設定

    ここで設定するのは以下の内容です。

    • DHCPの有無

      以下、DHCP無しの場合
    • ホスト名(オプション)
    • IPアドレス
    • ネットマスク
    • ブロードキャストアドレス(オプション)
    • Default gateway(オプション)
    • DNSサーバIPアドレス(オプション)

    設定がうまくいっているかどうかは'L : AOM subsystem login'でシェルに移行し、そこからifconfig -aを実行すると確認できます。ちなみにログイン名/パスワード(初期)は'root/default'です。

  • SCCP/AOMにログイン
    SSHクライアントからSCCP/AOMにログインするとプロンプトが表示されるので、以下のコマンドでメニューに入ります。

    root@AOM1:~# hostconsh


    この後 ESC + ( でメニューを表示させ、1 : Connect to Host subsystem console でホストにログインできます。
    ここでホストを再起動させるとsshのようにセッションが切られず、再起動の様子を見ることができます。
    ホストを抜けてSCCP/AOMに戻るときは ESC + ( です。

インストールのつづき

4. GuestOSの起動とターミナルの設定

VMWareからGuestOSを起動しましょう。アラームのダイアログが出ますが無視。
ターミナルの種類を聞かれますが、VT100でOKなのでそのままEnterを押します。


5. PXEサーバの起動



自分(GuestOS)がインストールサーバになるのでServerを選択します。


6. インストールサーバのネットワーク設定

GuestOSとBIG-IPが直接接続されているはずなので、以下の設定はすべてデフォルトでOKです。

  1. Use existing DHCP server on subnet [no]?
  2. IP network [10.1.10]?
  3. IP address of server 10.1.10.[n] [199]?
  4. Lower IP range for clients 10.1.10.[n] [200]?
  5. Upper IP range for clients 10.1.10.[n] [210]?

これらの設定を確定させると転送プロトコルを指定します。これもHTTP(デフォルト)でOKです。
これでインストールサーバが起動しました。

7. BIG-IP側の準備

BIG-IP3600は以下の方法でNetbootします。古いハードウェアだと他の方法もありますが、同じ方法でも大丈夫です。

rootでログインし、
# b db Boot.NetReboot enable
# reboot

でネットブートを有効にした上で再起動します。
再起動後にBIG-IPがDHCPクライアントになりインストールサーバからIPアドレスを取得し、インストーラが起動します。


8. インストールウィザード

BIG-IPが起動してターミナルの種類を指定するとウィザードが始まります。ここでは以下の設定を行います。

  1. インストールソースの選択(他の場所を指定しないのでNoを選択)
  2. 起動イメージの選択(HD1.1かHD1.2にします)
  3. インストールするソフトウェアの選択(1種類しか選択できないと思いますのでそれを)
  4. 引き継ぎたい設定が入っているパーティションの指定(クリーンインストールの場合はNoneを選択)
  5. どこのパーティションに何をインストールするかの確認
  6. デフォルトのブートパーティション・syslog・management portの設定


特に迷うことは無いと思いますが、デフォルトの選択しが[No]だったり[None]になっているので要注意です。
また、最後のブートパーティションやsyslogの設定はデフォルトでOKです。

この後続けるかどうかの確認で[Yes]を指定するとインストールが始まり、その後Enterを押すと再起動します。このときは内蔵ディスクから起動してくれます。ログインプロンプトが出れば完了です。

インストール(準備)

BIG-IPを購入すると、出荷時点で最新のOSがインストールされて納品されます。
このため出荷されたときのバージョンをそのまま使用する際には必要ありませんが、インストール手順のメモとして残しておきます。検証環境だとバージョンの上げ下げが結構あると思うので。

準備するもの

  1. VMWare(PlayerでもServerでもESXでも可)
  2. BIG-IPのOSのISOイメージ(AskF5からダウンロード)
  3. シリアルケーブル
  4. Ethernetケーブル

それではインストールの準備に入りましょう。

1. VMWareのセットアップ

VMWareをインストールしたら、GuestOSを作ります。
Ctrl+NでVirtual Machineの作成ウィザードを実行します。
Other Linuxのテンプレートを使用し、メモリを256MBくらいアサインしておけばOKでしょう。
Ethernetの設定をBridge等にして、BIG-IPからGuest OSにアクセスできるようにしておく必要もあります。

2. ISOイメージのダウンロードと起動の指定

AskF5にログインし、左ペーンの"F5 Downloads"をクリックし、PXEサーバになるPC(VMWareを動かすPC)に必要なISOイメージをダウンロードしてきます。

ダウンロード後、GuestOSのCD-ROM deviceの設定で、USE ISO Imageのラジオボタンをクリックし、今ダウンロードしたISOファイルを指定します。

3. ケーブルの接続

下の図の通り、シリアルケーブルとethernetケーブルを接続します。
シリアルケーブルはオペレーション用、ethernetケーブルはOSイメージの転送用です。


準備はここまでで完了です。