先月2/23に、オープンソースカンファレンス 2019 Tokyo/Springで、KUSANAGI Runs on Dockerについて講演してきました。今回はその内容を一部紹介したいと思います。
KUSANAGI Runs on Docker とは
KUSANAGI Runs on Docker(以下KUSANAGI RoD)は、IaaSなどのクラウド上の仮想マシンで動作するKUSANAGIを、Dockerで動かすものになります。現在はベータリリースされたままで、ほとんどメンテナンスされていない状態です。
KUSANAGI RoDは、KUSANAGIの要素技術である、Webサーバ(NGINX/Apache httpd)、PHP7、DB(MariaDB)と、WordPressのアプリケーションや画像などのデータ部をコンテナに分離し、docker-composeで協調動作させるものになります。
Dockerとは
Dockerは、コンテナ型のアプリケーション仮想化です。今までKUSANAGIが使用していたIaaSと異なり、OS自体を仮想化するのではなく、アプリケーションを仮想化し分離したものになります。昔からある chroot を進化させたものという理解がわかりやすいかもしれません。
現在、大手クラウドベンダは、コンテナ型の仮想化に移行しつつあります。それにはいくつかの理由があります。
- 起動が早い
OSから見ればプロセスを起動するだけと変わらないため、コンテナの起動が早いです。 - 動作が軽い
OSを仮想化する場合のオーバーヘッドが無くため、使用メモリも少なくなります。またアプリケーションが使用するライブラリや管理データだけあれば良いので、使用ディスク量も少なくなります。 - デプロイしやすい Dockerはイメージの形で作成・デプロイされます。イメージ作成方法もDockerfileで定義するだけなので、第三者が検証可能で、再作成可能です。
- セキュア
Dockerは、1コンテナ1アプリケーションを基本としています。そのため、余計なパッケージをインストールする必要がなく、セキュアにしやすいです。
KUSANAGI RoD の特徴
KUSANAGI RoDは、Dockerの特性を活かすべく、以下のような構成にしています。
NGINXもしくはApache、PHP7、DB(MySQL) のDockerイメージでプロセスが動作し、それぞれがデータコンテナ上のデータを参照します。Dockerの構成はクライアントPCから操作し、Docker-machineというDockerが動作するマシン上で動作する仕組みを利用します。WordPressの操作やメンテナンスは、config用のDockerイメージをその都度起動して操作します。監視やログ収集は、docker-machineに対して行うことが可能です。
KUSANAGI RoDで使用するイメージはすでに公開されていますが、Alpine Linuxという軽量Linuxをベースにしており、余計なパッケージは入っていません。MySQLのみMariaDBの公式Dockerイメージをベースにしているため、Ubuntu18.04LTSベースになっています。各イメージの設定は、環境変数で変更できるため再起動するだけで設定変更可能です。また、Dockerイメージ作成時に、AQUA社提供のmicroscanner を使用して脆弱性検査を行っているため、Dockerイメージ作成時点での高い脆弱性が0件であることを保証しています。
NGINX、Apacheは最新バージョン(NGINX1.15.8、httpd 2.4.38(2019/2/23現在))を用意し、OpenSSL1.1.1aを標準で搭載しているため、最初からHTTP/2、TLS1.3での接続が可能です。また、KUSANAGI RoDではPHP互換性を廃止したHHVMと、サポート停止となったPHP5系を作成しないことにしました。
DBは、DBaaSのような、外部のMySQLサーバを利用可能です。もちろんその場合、MySQLのDockerイメージを使用するより遅くなります。
KUSANAGI RoDがもたらすもの
KUSANAGI RoDを導入することで、今まで物理サーバやIaaSで密結合としてサービスしていたWordPressを含めたLAMPスタックを疎結合の形に再構築することができます。疎結合にすることで、サービスのスケールアウトしやすい構成になります。
現在、CPUの速度は頭打ちで、新たなブレイクスルーがなければスケールアップによる性能強化は見込めない状態です。そこでCPUの速度ではなくCPUの数で性能強化する時代になってきています。
現在、密結合のLAMPサービスはたくさん残っていると思いますが、その移行先の一つとしてKUSANAGI RoDがあります。KUSANAGI RoDは、密結合のLAMP構成のサービスを、そのまま疎結合に移行することができます。
疎結合にすることで、ハードウェアに依存すること無くサービスだけを最新のソフトウェアでセキュアに提供することが容易になります。
KUSANAGI RoDの今後
現在、KUSANAGI RoDは正式リリースに向けて開発を続行しています。早くリリースできるよう努力しておりますので、今しばらくお待ち下さい。
今回、OSC Tokyo 2019/Spring で発表した資料は公開済みですので、こちらもご参考にしてください。