20
本本本本本本本本本

FreeBSD VPSでLive Migration

Embed Size (px)

Citation preview

Page 1: FreeBSD VPSでLive Migration

本日私のハイライト

Page 2: FreeBSD VPSでLive Migration

コンテナ勉強会初参加だけどせっかくだから LT しよう

VPS の話ならまぁ誰もやらないよな~

Page 3: FreeBSD VPSでLive Migration
Page 4: FreeBSD VPSでLive Migration

_人人人人人人人人人人_> まさかの同じネタ <

 ̄ Y^Y^Y^Y^Y^Y^Y^Y^Y ̄

Page 5: FreeBSD VPSでLive Migration

FreeBSD VPS でLive Migration

@spg_games第 8 回 コンテナ型仮想化の情報交換会@東京

Page 6: FreeBSD VPSでLive Migration

自己紹介

• 仕事 インフラエンジニア

• 社会人 2 年目• 学生時代から FreeBSD ユーザ

名前  spg( 初心者pg)@spg_games

Page 7: FreeBSD VPSでLive Migration

FreeBSD VPS とは

Page 8: FreeBSD VPSでLive Migration

http://vps.sakura.ad.jp/

Page 9: FreeBSD VPSでLive Migration

ではなく

Page 10: FreeBSD VPSでLive Migration

http://www.7he.at/freebsd/vps/

Page 11: FreeBSD VPSでLive Migration

VPS(Virtual Private Systems) とは

• FreeBSD の jail を Live Migration を可能にした実装

• カーネルベースで動作するため高速– LXD に相当

• VPS で作成したコンテナを VPS インスタンスと言います

• EuroBSDCon 2010 で発表– http://news.mynavi.jp/articles/2010/10/18/eurobsdcon201

0-vps/

Page 12: FreeBSD VPSでLive Migration

参考 ) jail process

Page 13: FreeBSD VPSでLive Migration

Jail の Live Migration で必要な事

• プロセステーブルをホストで 1 つずつ持っている。– ps の STAT に J が付くプロセス

• 他ホストへ Migration するとプロセス番号が衝突する可能性

• コンテナ毎にプロセステーブルを分離– Namespace(Linux)– VPS(FreeBSD)

Page 14: FreeBSD VPSでLive Migration

VPS install• カーネルにパッチ当てる– パッチサイズ 1MB 超え & 約 5 万行パッチ

• VPS 管理用バイナリのインストール– vpsctl, rsync_vps 等

• 対応 OS バージョン ( 公式 )– FreeBSD 9.0-RELEASE– FreeBSD 9.1-RELEASE– FreeBSD 10.0-RELEASE

もうすべて EoL…

Page 15: FreeBSD VPSでLive Migration

FreeBSD 10.1-RELEASE by spgVPS パッチ作成!!

https://github.com/spg-games/vps

Page 16: FreeBSD VPSでLive Migration

VPS インスタンスの操作

VPSCTL(8)で操作可能

vpsctl start <id> <file> stop <id> <file> list show <id> execin <id> <cmd> [args ...] execwt <id> <cmd> [args ...] shell <id> console <id> ifmove <id> <ifname> [ifnewname] suspend <id> resume <id> snapshot <id> <file> abort <id> restore <id> <file> migrate <id> <remote-host> [norsync|onersync|tworsync]

argshow <id> ipnet <id> add <address/network, ...> ipnet <id> rem <address/network, ...> priv <id> allow <privilege number, ...> priv <id> deny <privilege number, ...> priv <id> nosys <privilege number, ...> limit <id> <resource:soft:hard,...>

showdump <file> (attention: loads of output !)

Page 17: FreeBSD VPSでLive Migration

FreeBSD 10.1Live Migration

DEMO

Page 18: FreeBSD VPSでLive Migration

まとめ

• VPS とは FreeBSD の jail コンテナをLive Migration する実装

• VPS の中でプロセステーブルをコンテナ毎に持つように実装

• ソースにマージされていないため、パッチを当てる必要がある

• FreeBSD 10.1 のパッチ作りました

Page 19: FreeBSD VPSでLive Migration

オチ

Page 20: FreeBSD VPSでLive Migration

最後に• フィーリングでパッチ書いたら build 通っ

て動いた–実際マイナーアップデートでも vnet 系の変

更が結構あり、カーネルデバッグ力なく苦戦…というか今でも…

• Clang 最高!• vSphere DRS の様に負荷均等化したい• ダウンタイムなしの kernel security

update で脆弱性対策の PoC したい