こんてなぐらし!〜freebsd vpsでライブマイグレーション〜
TRANSCRIPT
自己紹介• Twitter ID: @furandon_pig • 家ではNetBSDを使っています • 興味ドリブンで勉強会開催しています • ECMA-262 Edition5.1読書会 • https://ecma262reading.doorkeeper.jp/
• 「理論から学ぶ データベース実践入門」読書会 • http://riron-db.connpass.com
• ゆるいUNIX勉強会~ゆるゆに~ • https://yry2.doorkeeper.jp/
• Live2Dで遊ぶ会 • https://enjoying-live2d.doorkeeper.jp/
本日の内容FreeBSDでのコンテナ実装である VPS(Virtual Private Systems)を 試してみた、という話です。 VPSの機能として、コンテナの ライブマイグレーションが提供 されているので、その様子を 実際にデモする形で紹介します。
VPSとは?• VPS(Virtual Private Systems) • FreeBSDにおけるコンテナ型仮想化の一実装 • 現状ではまだexperimentlな印象が強い
OS level virtualization
FreeBSDでの実装
Hypervisor
Emulation of Hardware
AIX Workload Partitions Solaris Containers
Virtuozzo/OpenVZ LXC Docker
VPS Jail
Xen VMware ESX
bochs
VPSの機能/Jailとの違い• VPSの機能 • 小さいオーバーヘッドで仮想環境を提供 • ライブマイグレーション機能 • Nested virtualization • Fine grained resource control
• Jailとの違い • Jailはセキュリテイ面からの資源分割 • VPSはコンテナ型仮想化自体を意識した設計 • Jailはグローバルテーブルを各エントリに区切っている • VPSはインスタンス毎にプロセスツリー/グループを持つ
テスト用環境• vps{03,04}のそれぞれにVPSをインストール • vps03でコンテナ作成、vps04にマイグレーション
vps03 vps04
192.168.98.0/24192.168.10.55 192.168.10.54
VPSのインストール• FreeBSD-9.1-RELEASE(i386)
• 9.1のISOイメージは既に公式サイトからは削除
• 以下のURLよりダウンロードする
• https://archive.org/details/freebsd-9.1_release_i386
• VPS関連のバイナリ
• VPS for FreeBSD
• http://www.7he.at/freebsd/vps/
FreeBSD-10でVPS• 最新のVPSバイナリはFreeBSD-10系向けの模様
• が、それでも対象はFreeBSD-10.1と若干古い
• 幾つかの機能を利用する際にpanicが発生する
• 例えばライブマイグレーション
• マイグレーション後のリストアでpanic
インストール手順# uname -rms FreeBSD 9.1-RELEASE i386 # # fetch http://www.7he.at/freebsd/vps/files/pkgs/vps-fbsd91-r130-i386-dbg.tbz # pkg_add vps-fbsd91-r130-i386-dbg.tbz # (VPS対応カーネルと関連するカーネルモジュールがインストールされる) # shutdown -r now (VPS対応カーネルで起動してくる) # /etc/rc.vpssetup.sh # # mount -t cd9660 /dev/cd0 /mnt # find /mnt/ -name base.txz /mnt/usr/freebsd-dist/base.txz # cp /mnt/usr/freebsd-dist/base.txz .
コンテナを作成する
• 公式サイトの以下の手順に従いコンテナを作成する • http://www.7he.at/freebsd/vps/docs/setup_testenv.txt
• とはいえ、毎回手順を頭から実施するのは煩雑 • 以下のスクリプトでコンテナを作成すると楽 • https://gist.github.com/furandon-pig/02f3f9c097d20f22b017
コンテナを起動する
• vpsctl startでVPSコンテナを起動する
• 起動しているコンテナはvpsctl listで確認できる
vpsctl start vps_id
vpsctl list
コンテナのマイグレーション(1/2)
• vpsctl migrateでコンテナをライブマイグレーションできる
• 事前にssh root@migrate_hostでログイン可能にしておく必要がある
• sshd_configで“PermitRootLoing yes”を設定する
vpsctl migrate node_id migrate_host
コンテナのマイグレーション(2/2)
vps03 vps04
192.168.98.0/24192.168.10.55 192.168.10.54
# vpsctl migrate test01 vps04
マイグレーション時の注意点• コンテナから抜けている状態でないとマイグレーションが失敗する
• 場合によってはpanicする
• 端末を掴んだ状態でのマイグレーションがダメ?
• vps0のインタフェース以外と疎通しながらマイグレーションすると効果覿面(panic的な意味で)
• これはこちらの設定に抜けがあるのかも…