VPS上のLXCを利用してサーバを再構築した

いままで個人で運用しているアプリケーションはレンタルサーバーだったり、PaaSだったり、データベースサーバーだけはVPSで動かしていたりと散った構成になっていたので、重い腰を上げて1箇所に集約する作業を行いましたのでその際のメモ。

まずVPSをConoHaで契約をしてここに全て集約し、単にVPS上に寄せるだけではなくてLXC*1を利用して仮想環境(マシン)を設けてそれぞれでアプリケーションサーバやデータベースサーバを稼働させました。イメージとしては、以下の様な環境。

LXC自体はubuntuであれば、

$ sudo apt-get install lxc

でインストールされて、これだけでLXCを構築する準備ができます。LXCコマンドのリファレンスはWeb上に十分ありますが、簡単にここへも自分の備忘録を兼ねてメモしておきます。

以下、sample という名前のコンテナを作成する例で記載。

処理例 コマンド
コンテナ作成 MIRROR=http://jp.archive.ubuntu.com/ubuntu lxc-create -t ubuntu -n sample
コンテナ一覧 lxc-list
コンテナ起動 lxc-start -n sample -d -c /var/log/lxc-console.log
コンテナコンソール接続 lxc-console -n sample
コンテナシャットダウン lxc-shutdown -n sample
コンテナ強制終了 lxc-stop -n sample
コンテナ完全削除 lxc-destroy -n sample

各作られたコンテナの設定はubuntuの場合は /var/lib/lxc/(コンテナ名) で記録されています。

LXCの構成管理

各LXCはChefで構成管理をしていてコンテナを作りさせすれば各アプリケーションやデータベースサーバ向けのレシピを適用することですぐにサーバが構築される様にしていて、今回だとPadrinoアプリケーション用サーバのレシピ、MongoDB用のレシピ、MySQL用のレシピを作ったりしています。

やっていることは対象のLXCへSSH接続できる様にするための公開鍵の設定だったり、パッケージマネージャを利用してインストールしたりというとてもシンプルな内容です。

得られたメリット

まずは散っていたサーバを寄せることができたこと。あと、LXCを使うことで気楽に実験的に使いたいサーバーを構築することができる様になったのが一番得られて大きなメリットでした。

参考

*1:今、思うとdockerを試してもよかったなとも思った