方針
* ホストはUbuntu15.04をクリーンインストールしたところに、openssh-serverと lxc だけ入れる
* lxdはlxcコンテナの中で動かす(仮想の仮想)
* 構築した録画システムは、lxcコンテナ上で稼働させる
インストール関係は過去の記事で書いたので、ここでは上のプランを実施する上で行ったことを書く。
lxcコンテナ作成と日本語化
ぼやぼやしているうちに、lxcもバージョンアップしたのか15.04だからか不明だけれど、テンプレートがスクリプトになったため、テンプレートからコンテナ作成するとものすごく遅くなった。日本語化も同時にやってくれるので面倒な無いけど、余計なものも入ってしまう。
ということでイメージダウンロードでコンテナ作成する。
$ sudo lxc-create -n test -t download -d ubuntu -r vivid -a amd64
前はこんな感じで出来た気がするのだけれど、-dが理解してくれない。仕方ないので
$ sudo lxc-create -t download -n
で、対話式でやった。
このクラウドイメージは素の状態なので、日本語化とか、いくつか手を加える
#!/bin/bashこんなスクリプトを書いてそのコンテナに対して実行すると、デフォルトのubuntuユーザと日本語化を一気にやる。といってもubuntuパスワード設定と最後のタイムゾーン設定は対話になる。
lxc-start -n $1
lxc-attach -n $1 -- adduser ubuntu
lxc-attach -n $1 -- passwd ubuntu
lxc-attach -n $1 -- apt-get install language-pack-ja -y
lxc-attach -n $1 -- apt-get install emacs -y
lxc-attach -n $1 -- update-locale LANG=ja_JP.UTF-8
lxc-attach -n $1 -- dpkg-reconfigure tzdata
lxc-stop -n $1
毎回 lxc-create するのは面倒なので、lxc-createしたものをマスターにして、実際使うコンテナはlxc-cloneして使うようにする。それから、マスターにはopenssh-serverは入れないようにする。
入れちゃうとクローンしてもちゃんと動かない。MACアドレスが変わるので認証コードも変える必要があるが、作りなおさせるのも面倒なので、最初から入れない。
sshサーバーはクローンして入れる
#!/bin/bash何度もやるのは面倒なので、クローンしてsshを入れるところまでのスクリプトを書いておく。
lxc-clone $1 $2
lxc-start -n $2
lxc-attach -n $2 -- apt-get update
lxc-attach -n $2 -- apt-get install openssh-server -y
lxdを動かすlxcコンテナのNesting設定
lxcコンテナのコンフィグファイルに以下の設定を追記する
# Nestingこれで、lxcコンテナにlxdをインストールして普通にlxdコンテナを稼働させることができるようになる。
lxc.mount.auto = cgroup
lxc.aa_profile = lxc-container-default-with-nesting
自分の理解では、lxcならば仮想の仮想になってもCPUコストはほとんど変わらない。ただしネットワークがブリッジのブリッジになるのでその分通信パフォーマンスは落ちるか。
この辺は仮想ネットワーク構成を工夫すれば改善できるんじゃないかな。
何でこんなことするかというと、ホストに直接lxdを入れても動くが、いざlxcを使おうと思ってもlxd用のlxcになっているらしく思うように使えなかったため。dnsmasqも変。なので一番思い通りに動くlxcを親にした。いずれ lxdの方が一般的になってくるだろうから、その時に再考する。
コンテナ上でdevstack動くかな?
性懲りもなくやってみたが、当然というべきなのか動かなかった。
/lib/modulesがなかったり、ebtablesでエラーになったり。。コンテナ自体がカーネルを持っていないからだろうね。独立したカーネル上で動くKVMベースだったら動かせるのかなあ。
録画環境のコンテナ移設は次回。
0 件のコメント:
コメントを投稿