BIG-IP LTM VEをVirtualBox上で稼動させる
モチベーション
- BIG-IP LTM VEはVirtualBox上での稼動をサポートしていない
-
サポート仮想化基盤
- VMware ESXi 5.1 and 5.5
- vCloud Director 5.1
-
サポート仮想化基盤
- でも、とりあえず手元の環境で動かしたい
動作確認環境
Host | CentOS 6.5 x86_64 |
仮想化基盤 | VirtualBox 4.3.20 |
BIG-IP LTM VE | v11.3.0 HF1 |
BIG-IP LTM VE Trialのダウンロード
- ダウンロードにあたってユーザ登録が必要
-
https://www.f5.com/trial/big-ip-ltm-virtual-edition.phpからダウンロードする
- 90-Days BIG-IP Trial かつ VMware ESXi用
- ダウンロードしたら、ハッシュ値(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.