Edited at

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のダウンロード




  • ダウンロードしたら、ハッシュ値(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の無効化


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が出力され続ける



  • /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..が出力されて以降進まない


  • ネットワークアダプターの設定が誤っている

  • シリアルポートを有効化していない


MP-BIOS bug: 8254 timer not connected to IO-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