Rancher.ioというオープンソースのDockerコンテナ管理ツールがあります。開発元のRancher Labsのホームページによると、特定のインフラやIaaSに依存しない、Dockerコンテナ管理とSoftware Defined Infrastructureを組み合わせたプラットフォームを構築するソフトウェアを目指すようです。
At Rancher, we’re developing software that will allow anyone to build their own Docker container service on any infrastructure or cloud. You can follow our open source project at Rancher.io.
Stampede.io
2014年8月にCitrixに在籍していたDarren ShepherdがAnnouncing Stampede.io: A Hybrid IaaS/Docker Orchestation Platform Running on CoreOSというブログで、Stampede.ioを公開しました。Digital Ocean上のCoreOSに12万コンテナを作成したプレゼン資料がSlideShareにあります。
Rancher Labs
その後Stampede.ioはRancher.ioとなり、元Citrixのメンバーが起業したRancher Labsに開発が移行しました。Citrixに買収される前のCloud.comを起業したSheng LiangがCEOを勤め、Shannon Williams、Darren Shepherdと、CloudStackを開発していたメンバーが共同創設者になっています。チーフアーキテクトのDarren ShepherdはCloudStackとGoddayのアーキテクトを勤めていました。
Rancher.io
Stampede.ioはCoreOSとfleetによるアークテクチャでしたが、Rancher.ioではDockerホストにUbuntu14.04も使えるようになっています。Rancher.ioはどのIaaSでも同じようにDockerを動かせるインフラを実現するために、Docker管理ツールの提供とSoftware Definedなストレージとネットワークの実装を計画しています。CloudStackがハイパーバイザーを抽象化したように、Rancher.ioはIaaSを抽象化してくれるようです。
Cattle
Stampede.ioと同様にRancher.ioもIaaSのオーケストレーションプラットフォームとして、JavaとSpringで書かれたCattleを使っています。実際にRancher.ioのソースコードを読み、手を動かしながらアーキテクチャを理解していこうと思います。インストールの手順を読むと、Management ServerとDocker Nodesによって構成されるようです。絶賛開発中のため今後大きな変更もありそうですが現状の理解からはじめます。
Management Server (Cattle)
Management ServerのDockerfileを読むと、ビルドしたCattleのJARファイルをデプロイしています。起動スクリプトによると、MySQLやZooKeeperのセットアップも読めますが今のところ使っていません。Cattleのデータベースは/var/lib/cattle/database
にあるH2のようです。
Docker Nodes (python-agent)
Docker Nodesの方は、もちろんDockerと、docker-py、python-agentをインストールします。pyagentはcAdvisorやコンソールのためのWebSocketサーバーの役割もします。Agentは今のところRancher.ioの管理画面を開くブラウザから、WebSocketで接続可能なIPアドレスを指定する必要があります。
Rancher.ioのインストール方法
Rancher.ioのインストール方法は3つあります。
全体を理解するために手動でDockerコンテナを起動して確認してみます。