More Related Content
Similar to Using LXC on Production (20)
Using LXC on Production
- 1. Using LXC on Production
第4回 コンテナ型仮想化の情報交換会@東京
2014.9.6
Isao SHIMIZU
@isaoshimizu
- 3. 自己紹介
清水 勲 (Isao SHIMIZU)
!
株式会社ミクシィ モンストスタジオ所属
!
現在4年目(2011年入社)
mixiのインフラ運用
モンスターストライクのインフラ・サーバ運用(現在)
エンジニアブログ執筆(Fedora、systemd、OpenStack、LXCなど)
!
前職:
2003~2011年 SIerで企画、開発、インフラ運用
組み込み、Web、スマフォアプリ、動画配信など
!
最近気になっていること
・Golang、CoreOS、AWS
3
- 12. OpenStack
• 2013年春頃に検証開始
• VersionはGrizzly 2013.01
• 同年の夏頃に本番導入
• 用途は社内プロダクト向けのPaaS(Gizmoと呼ばれる)
• アプリサーバは独自のデプロイツールを使って
• ミドルウェアの構成はChefで
• MySQL、Redis、Jenkinsなど
• ダッシュボード(Horizon)便利
• のちに開発環境にも展開
12
- 15. LXCを使う前の印象
• とにかく軽いらしい(でもよくわかってない)
• KVMとかと何が違うのかいまいちわかってない
• LXCのバージョンがあがってきていてそろそろいい感じかも?
• Kernel少し上げれば使えそう
• 新しい技術気になる、使ってみたい
• 本番で使っている話はほとんどない
• ちょうどLinuxCon Japan 2013でLXCの話を聞いた
• でも社内では誰も触ってなかった
15
- 16. LXCについて
• KVMのようにハードウェアなどのエミュレーションの上に仮
想マシンを動作させるのではない
• プロセスやネットワーク、ユーザー空間などを分離して、仮
想的な環境を提供
• Kernelの機能を使って分離された環境
• KVMで起きていたような、CPUやディスクIOなどのパフォー
マンス劣化がほとんど発生しない
• 起動が速い(init以降の起動だけ)
• もちろんオープンソース
16
- 20. LXCの検証を始める
• バージョン0.8.0(2012.11.11リリース)から0.9.0
(2013.4.5リリース)へアップデートされていた
• 1.0.0は2014年2月を予定していた(待てない)
• まずは、0.9.0を検証してみたい
• まずやったこと
• templatesにあるFedoraのシェルスクリプトを使って
LXCのイメージ作り
• すんなり動かない(当時)
• Fedora向けにメンテされてないのかいろいろ修正
• とりあえず試行錯誤して動いた(手作業コマンドレベル)
20
- 24. 気になっていたDockerの存在
• 当時のバージョン 0.6.x(現在は1.2.0)
• AUFS気になる
• Docker Registry便利そう
• Goのポータビリティすばらしい
!
• IPマスカレードはちょっと面倒くさい
• コンテナにIPを個別に振って、仮想マシンのように扱いたい
(macvlan使いたい)
• taggedVLANの環境でも問題なく使いたい
• バージョンアップが激しい
24
- 27. trailerとは
• Ruby製の自社で開発したツール
• LXCのラッパー
• 運用に必要な機能のみを実装
• IP、MACアドレスの採番(ARMと呼ばれるサーバと連携)
• コンテナイメージをダウンロードして展開する
• 起動中のコンテナからイメージを作る
• Trailerfileと呼ばれるコンテナ定義
27
- 29. trailerを使ったコンテナ起動フロー
①あらかじめ作られたイメージをレポジトリサーバからダウンロード(trailer pull)
②イメージを起動(trailer start)
(1)ローカルにダウンロードされたイメージをインスタンス用のディレクトリに展開
(2)ARMと呼ばれる内製のアドレス管理ツールに対してAPIアクセスし、IPアドレスと
MACアドレスが払い出される(ARMはAPIアクセス可能なDHCPサーバのようなもの)
(3)取得したIPアドレスとMACをインスタンスに設定
(macvlan bridgeモード)して、init(systemd)を起動
(4)trailer start実行からsshで接続可能になるまでにかかる時間は10秒程度
(イメージサイズによって多少の変動あり)
29
- 34. スレッド数、PID数上限
•kernel.threads-max
•kernel.pid_max
•vm.max_map_count
•/etc/security/limits.d/90-nproc.conf をunlimited に
•たぶん他にもある
•用途に応じてFile Descriptor数や、TCP/IP周りのKernelパラメータ
の調整が必要。
•インスタンス側では設定できないKernelパラメータがあったりす
るので、sysctlやechoなどで設定する際に要注意。
34
- 39. •OpenStackとLXCを導入した話 - mixi Engineers' Blog
•http://alpha.mixi.co.jp/entry/2014/12171/
•LXCで学ぶコンテナ入門 -軽量仮想化環境を実現する技術
•http://gihyo.jp/admin/serial/01/linux_containers
•Lxc で始めるケチケチ仮想化生活?! - SlideShare
•http://www.slideshare.net/enakai/lxc-8300191
•LXC - Linux Containers
•https://linuxcontainers.org/jp/
•LXC(Linux Container)
•http://events.linuxfoundation.org/sites/events/files/cojp13_feng.pdf
•Dockerを支える技術
•http://www.slideshare.net/enakai/docker-34668707
•GitHub - lxc/lxc
•https://github.com/lxc/lxc
39