いままで個人で運用しているアプリケーションはレンタルサーバーだったり、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を使うことで気楽に実験的に使いたいサーバーを構築することができる様になったのが一番得られて大きなメリットでした。
参考
- さくらVPSでLXCを使って安価に複数台構成を実現する
- Ubuntu Weekly Recipe 第226回 LXCで軽量仮想環境の活用
*1:今、思うとdockerを試してもよかったなとも思った