はじめに
10/5(土)に第2回 コンテナ型仮想化の情報交換会@東京に参加してきたので発表資料と共に纏めてみる。詳細なまとめや発表の動画等は @syuu1228 さんにてこちらにまとめて頂いているので、実際の内容等についてはそちらをご覧頂ければと思う。
コンテナ型仮想化の基礎からそれを支えている技術(namespace
や cgroup
)の紹介とハッキング、はたまたカーネルハッキングの話題まで詰め込みすぎて頭痛になってしまうくらいに濃い内容だった。また、LXC
に限らず OpenVZ
や Jail
等、様々なコンテナ型仮想化を知る機会が得られて本当に良い機会に恵まれた。そして、このような機会を企画して頂いた主催者の皆さんや場所を提供して頂いた IIJ さん、登壇して頂いた皆さんに感謝!
尚、ちょっとずつ思い出しながら書いていくので中途半端なところがあったり、抜けがあったりするけどすいません。
発表
Linux コンテナ入門
資料はこちら。
@ten_forward さんによるLXC
の概要説明と最新情報の紹介。個人的には LXC
と言えば @ten_forward さんということで神からお話を聞けたことだけでも嬉しかった。
LXC
については使っているだけで、その仕組み等については不勉強だったのお話を聞いて改めてその仕組みなどについて興味を持てた。
また、最近、日本語に翻訳した man page が本家にマージされたとのことで、自分も何か協力できないかなーと思ったり。
OpenVZ
@ebiken さんによる OpenVZ の紹介。個人的には OpenVZ は名前を聞いたことがあるレベル。
構成するコンポーネントは namespace
によるリソースの分離、cgroups
によるリソースの管理は LXC
と共通だけど、ploop
と呼ばれる disk の loopback block device とコンテナのすべてのプロセスのスナップショットを取るCRIU
という機能が特徴なのかな。
ちょっと敷居が高いイメージがあったけど意外に簡単に試せると紹介されていたので近いうちに試してみる。
OpenStack環境で、FreeBSD Jail + VIMAGE を使った疑似インターネット実験環境の構築
資料はこちら。
FreeBSD
の軽量仮想化機能としての Jail
と VIMAGE
という異なるネットワークスタックを追加出来る拡張を利用した仮想環境の紹介。
Sqale で cgroup に forkbomb 対策入れた話
serverspec の mizzy さん(※個人的な印象)によるペパボが提供している sqale のリリース前に発生した fork bomb を cgroups
にパッチを当てて対策を施したお話。
実際のコードを見せて頂きながらの説明だったが、プログラミングが全く理解出来ない自分でも雰囲気(...)は掴むことが出来たと思う。
Sqale で遭遇した何かしらのネタ
@hiboma さんによるペパボが提供している sqale という PaaS の構成についてのかなり濃い内容のお話。「そんなところまでお話してくれるのか!?」という印象。
いろんなテクニックが詰まっているなー sqale #lxcjp
— かっぱ (@inokara) 2013, 10月 5
自分のこのツイートに色々と詰まっているのが伝わるかな...
資料については、実際の発表資料では無いものの、以下の資料で紹介されている内容を参考になるとのこと。
かなり濃い内容。
個人的にはサーバーの構成(AWS
を使っている)とか Lua
と Redis
を利用した動的なリバースプロキシ、Xen
のバグを踏んでしまったことなど興味深い内容だった。
ペパボのお二人の発表に関しては、「こんな突っ込んだ内容までお話してくれるのか!?」と目を疑ってしまう位にサービスを支える基盤のあれやこれやのお話が聞けて大変参考になったし、サービス精神(?)旺盛な会社だなーと思った。
libcgroupとmrubyを使ったWebサーバのリソース制御アーキテクチャ
タイトルだけを拝見した時点で「ちゃんと理解出来るかな...」と心配していたが、半分くらい(w)は理解出来たかな...
@hiboma さんの発表で出てきた Lua
と Redis
による nginx の動的リバースプロキシ等の Web サーバーのリソースコントロールを mruby
と cgroups
で実装された @matsumotory さんのお話。
上記のブログも参考になった。
気になったのが mruby
で設定を書いてシンタックスエラーがあった場合にはどのような挙動になるのかなという点。あと、適用時のオーバーヘッドに関しては、もう少し突っ込んだ情報が聞きたかったなー。
vagrantとdockerでの簡単開発環境 / hot patchingで遊ぼう
@masahide7 さんによる docker
と docker
を用いたちょっと変わった開発環境構築と hot patching によるカーネルのお手軽デバッグのお話。
ちょっと変わったというのは amd64 環境の PHP バイナリを i386 な環境なコンテナにコピーする手法。32bit 互換の amd64 カーネルでビルドされたバイナリであれば気軽にコピーして利用出来るとのこと。面白い!
コンテナ型仮想化環境をデバッグする際に避けては通れない kernel のデバッグを hot patching でお手軽にする手法をデモを交えて紹介頂いた。デモでは ps
コマンドで特定のプロセスを表示させない手順を示しながら「これを使えば悪いことが出来ますw」で締めくくられた。悪いことは決してしないが、試してみたいことの一つに登録したい。
感想
- 中身をあまり理解しないまま使っていた
LXC
について理解を深めることが出来た - リソースの分離(
namespace
)とリソースの管理(cgroup
) LXC
自体は発展途上、これからどんどん良くなっていく- コンテナ型仮想化を語るなら
OpenVZ
やJail
の存在も忘れてはいけない - あと、デバッグが必要ならカーネルのソースを読まなければいけない
- ペパボの sqale は
LXC
をはじめ色々な技術がギュッと詰まったサービス - 濃い内容を詰め込み過ぎて途中が頭痛が酷かった
- 座席は前に陣取るべきだった(遅刻してしまった...)
- 資料の文字が小さくて見づらかったが、事前に資料の URL を案内して頂いたので助かった
- 懇親会に参加したかった
- 次は自分も何か発表出来る位になれるように日々精進していきたい