Help us understand the problem. What is going on with this article?

BIG-IP LTM VEをVirtualBox上で稼動させる

More than 3 years have passed since last update.

BIG-IP LTM VEをVirtualBox上で稼動させる

モチベーション

  • BIG-IP LTM VEはVirtualBox上での稼動をサポートしていない
  • でも、とりあえず手元の環境で動かしたい

動作確認環境

Host CentOS 6.5 x86_64
仮想化基盤 VirtualBox 4.3.20
BIG-IP LTM VE v11.3.0 HF1

BIG-IP LTM VE Trialのダウンロード

90-Days BIG-IP LTM Trial
Download BIG-IP LTM Trial

  • ダウンロードしたら、ハッシュ値(md5)を比較して破損してないか確認する

VirtualBoxにインポート

  • VirtualBoxメニューバー[ファイル]->[仮想アプライアンスのインポート]

仮想アプライアンスのインポート

  • 名前(仮想マシン名)、CPU、RAM(メモリ)はHost環境にあわせて適宜変更する
変更前 変更後
名前 vm BIG-IP_11.3.0
CPU 1 1
RAM 2048MB 1024MB

仮想アプライアンスの設定

  • ネットワークアダプターは以下のようにする
    • どのネットワークアダプターがHAやExternalなどかはマウスカーソルを合わせることで確認できる
ネットワークアダプター(HA) PCnet-FAST 3
ネットワークアダプター(External) Intel PRO/1000 MT Desktop
ネットワークアダプター(Internal) Intel PRO/1000 MT Desktop
ネットワークアダプター(Management) Intel PRO/1000 MT Desktop

ネットワークアダプターの設定
ネットワークアダプターの設定

インポート後の設定

  • ネットワークアダプターが以下となっていることを確認する
ネットワークアダプター1 1.1 ブリッジアダプター Intel PRO/1000 MT Desktop
ネットワークアダプター2 1.2 内部ネットワーク Intel PRO/1000 MT Desktop
ネットワークアダプター3 1.3 ブリッジアダプター Intel PRO/1000 MT Desktop
ネットワークアダプター4 1.4 ブリッジアダプター PCnet-FAST 3
  • シリアルポートの有効化

シリアルポートの有効化

  • I/O APICの無効化

I/O APICの無効化

BIG-IP LTM VE起動後の設定

  • ログイン情報
username password
CLI root default
GUI admin admin
  • 注意点は以下2点
    • キーボード設定がUS
    • SSHアクセスの際はチャレンジレスポンス認証

localhost emerg logger: Re-starting chmandへの対処

  • BIG-IP LTM VE起動後、1~3分ほど待つとログインプロンプトが表示される
  • ただし、10秒ごとにemerg logger: Re-starting chmandが出力され続ける

emerg logger: Re-starting chmand

  • /var/log/ltmを確認するとchmandによって以下errおよびcritメッセージが出力されていることを確認できる
    • chmandがプラットフォームを正しく識別できなかったことが原因のようだ。
/var/log/ltm
Apr 29 12:37:32 localhost notice chmand[4325]: 012a0005:5: Starting ChassisManager (chmand)
Apr 29 12:37:32 localhost info chmand[4325]: 012a0006:6: Found platform 'Unknown' in /PLATFORM
Apr 29 12:37:32 localhost err chmand[4325]: 012a0003:3: unexpected init failure : HalSvcs: platform name not found in HAL system types
Apr 29 12:37:32 localhost crit chmand[4325]: 012a0002:2: critical platform initialize failure. exiting...
Apr 29 12:37:32 localhost err chmand[4325]: 012a0003:3: Shutdown of LCD message pass handling failed: Unknown Type
Apr 29 12:37:42 localhost notice chmand[4325]: 012a0005:5: Stopping chmand
Apr 29 12:37:42 localhost notice chmand[5802]: 012a0005:5: Starting ChassisManager (chmand)
Apr 29 12:37:42 localhost info chmand[5802]: 012a0006:6: Found platform 'Unknown' in /PLATFORM
Apr 29 12:37:42 localhost err chmand[5802]: 012a0003:3: unexpected init failure : HalSvcs: platform name not found in HAL system types
Apr 29 12:37:42 localhost crit chmand[5802]: 012a0002:2: critical platform initialize failure. exiting...
Apr 29 12:37:42 localhost err chmand[5802]: 012a0003:3: Shutdown of LCD message pass handling failed: Unknown Type
  • このままでは操作がしにくいので、メッセージを出力しているchmandを停止する
# bigstart stop chmand
  • /bin/qpを以下となるように編集する
    • if [ -f /bin/halid ]; thenより上部を編集すればよい
/bin/qp
#!/bin/sh
#
# Script to query and return platform type (D44, D50, etc.)
#
# It uses the info saved in /PLATFORM if available; otherwise it
# simply calls halid & returns the appropriate field (writing /PLATFORM as well)!
if [ -f /PLATFORM ]; then
    grep platform= /PLATFORM | sed -e 's/platform=//'
    exit 0
fi

if [ -f /bin/halid ]; then
    /bin/halid > /tmp/platform_info &

    pid=$!
    cnt=$(expr 10)
    while [ $cnt -gt 0 ]; do
    if [ -n "$pid" ]; then
        kill -0 $pid > /dev/null 2>&1
        if [ $? -eq 1 -a -f /tmp/platform_info ]; then
        break
        fi
    else
        break
    fi
    cnt=$(expr $cnt - 1)
    # amazingly, /bin/sleep is off-by-one when run by 'throttle' which is what 
    # live install does, so give plenty of time here waiting for 
    # halid to finish. ( 'time throttle sleep 5' = 4.2s reliably)
    sleep 5
    done

    if [ $cnt -gt 0 -a -f /tmp/platform_info ]; then
    cnt=`grep -c system_id  /tmp/platform_info`
    if [ -n "$cnt" -a $cnt -eq 1 ]; then
        family=`grep system_family /tmp/platform_info | awk '{print $3}'`
        platform=`grep system_id /tmp/platform_info | awk '{print $3}'`
        host=`grep host_id /tmp/platform_info | awk '{print $3}'`
        systype=`grep system_type /tmp/platform_info | awk '{print $3}'`
        echo "platform=${platform}" > /PLATFORM
        echo "family=${family}" >> /PLATFORM
        if [ -n "$host" ]; then
            echo "host=${host}" >> /PLATFORM
        fi
        if [ -n "$systype" ]; then
            echo "systype=${systype}" >> /PLATFORM
        fi
        echo "${platform}"
        rm -f /tmp/platform_info
        exit 0
    fi
    else
    if [ -n "$pid" ]; then
        kill -9 $pid > /dev/null 2>&1
    fi
    rm -f /tmp/platform_info
    fi
fi
echo "platform=Unknown"  > /PLATFORM
echo "family=Unknown" >> /PLATFORM
echo "host=Unknown" >> /PLATFORM
echo "Unknown"
exit 1
--- /bin/qp.org 2014-03-24 14:41:46.000000000 -0700
+++ /bin/qp     2015-04-29 12:50:28.000000000 -0700
@@ -4,25 +4,11 @@
 #
 # It uses the info saved in /PLATFORM if available; otherwise it
 # simply calls halid & returns the appropriate field (writing /PLATFORM as well)!
-
-# Check whether the platform information is fully populated and valid.
-# Note the boot scripts populate platform but not family, systype, or host.
-populated=0
 if [ -f /PLATFORM ]; then
-    . /PLATFORM
-    if [ "${platform:-Unknown}" != "Unknown" -a \
-            "${family:-Unknown}" != "Unknown" -a \
-            "${systype:-Unknown}" != "Unknown" -a \
-            "${host:-Unknown}" != "Unknown" ]; then
-         populated=1
-    fi
-fi
-if [ $populated -ne 0 ]; then
-    echo "$platform"
+    grep platform= /PLATFORM | sed -e 's/platform=//'
     exit 0
 fi

-
 if [ -f /bin/halid ]; then
     /bin/halid > /tmp/platform_info &
  • /tmp/platform_infoを以下となるように編集する
/tmp/platform_info
Info:system_id         = Z99
Info:system_family     = 0x80000000
Info:system_type       = 0xb
Info:system_id         = Z99
Info:host_id           = Z99
Info:base_mac          = @leave this unchanged@
Info:mac_offset        = 0
--- /tmp/platform_info.org      2015-04-29 12:37:40.000000000 -0700
+++ /tmp/platform_info  2015-04-29 12:52:30.000000000 -0700
@@ -1,7 +1,7 @@
-Info:system_id         = unknown
+Info:system_id         = Z99
 Info:system_family     = 0x80000000
 Info:system_type       = 0xb
-Info:system_id         = unknown
-Info:host_id           = unknown
-Info:base_mac          = 08:00:F5:59:B9:00
+Info:system_id         = Z99
+Info:host_id           = Z99
+Info:base_mac          = @leave this unchanged@
 Info:mac_offset        = 0
  • /PLATFORMを以下となるように編集する
/PLATFORM
platform=Z99
family=0x80000000
host=Z99
  • 以上、設定変更後に再起動する

初期設定

  • DHCPでManagement-IPが割り当てられるので、コンソール上でifconfigコマンドで確認する
  • Webブラウザのアドレスバーにhttps://《Management-IP》/を入力する
  • あとはSetup UtilityにしたがってアクティベーションならびにManagement-IPに固定IPを割り当てる

トラブルシュート

GRUB Loading Stage2..が出力されて以降進まない

  • ネットワークアダプターの設定が誤っている
  • シリアルポートを有効化していない

GRUB Loading Stage2..

MP-BIOS bug: 8254 timer not connected to IO-APICが出力される

MP-BIOS bug: 8254 timer not connected to IO-APIC

  • I/O APICを無効化すれば解消される

I/O APICの無効化

補足説明

  • chmand
    • Provides chassis monitoring and configuration, as well as other related functions.
    • Cannot perform platform identification, send platform information to MCPD service, or start SCCP services.
  • MCPD
    • Known as the Master Control Program, controls messaging and configuration.
    • Cannot manage traffic; cannot retrieve or update system status; users cannot reconfigure system; disables some of the other services.
  • SCCP(switch card control processor)
    • The SCCP is a separate subsystem that controls the F5 switch hardware.

参考資料

  1. Running BIGIP-11.3.0.39 on Oracle VirtualBox under Mac OS 10.9.2
  2. Setup F5 Big-IP with VirtualBox on OS X
  3. BIG-IP LTM VE Trialセットアップガイド
  4. Understanding Core System Services
  5. SOL3454: Overview of the SCCP
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away