Dockerクラスタを構築する場合、コンテナ間の連携を考慮する必要があります。 docker-composeでもある程度のことは出来ますが、複数ホストで運用したり、ロードバランサ等を含めた少し複雑な構成になってくると、途端にややこしくなります。
Web UI でDockerクラスタを管理出来るサービスといえば、Tutum改めDocker Cloudなどがありますが、私はRancherを使っています。
今後数回に渡って、Rancherを使ったDockerクラスタの構築方法をご紹介して行きたいと思います。
目次
- RancherでDockerクラスタを構築する-① 準備編
- RancherでDockerクラスタを構築する-② VultrにRancher Server を立ち上げる
- RancherでDockerクラスタを構築する-③ RancherからVULTR APIでDockerホストを追加する
- RancherでDockerクラスタを構築する-④ 【DockerHub編】Railsスタックを立ち上げる
Rancherのメリット
Rancherのメリットは、
- オープンソース
-
docker run
一発でRancherサーバを構築できる - ホストをRancher管理下に置くことで、例えば「このホストにはこのコンテナを上げない」等の細かな設定がスケーリングできる
- 色々なクラウドプロバイダに対応している(Amazon EC2・Azure・DigitalOceanはもちろん、みんな大好きvultrにも対応している)
それ以外にもいろいろありますが、一番の理由は__Herokuに載せるよりも遥かに安く、Heroku並に簡単にデプロイ出来る__ということでしょうか。
そうは言っても、本番で本当に使ってるの?
私のクライアントはエンタープライズCRM(しかもオンプレ・スクラッチ)が多いのですが、それ以外の小規模案件または特に指定がなかったときはHerokuや格安のクラウドプロバイダを使います。
Heroku上で10個ほどのプロダクトが動いています(しかも全部一人でDevOps orz)が、コスト削減のため、少しずつDocker on Rancherに移行しています。
Docker on Rancherで動いているプロダクトは現時点で5つほどあります。どのプロダクトも、特に問題なく稼働しています。
前提条件
今回ご紹介するサンプルの前提条件は
- アプリは一般的な構成 ( Ruby on Rails / Postgresql )
- クラウドプロバイダはvultr
- DockerホストのOSはCoreOS
- コンテナリポジトリは Amazon ECR1
- Postgresのデータを定期的にS3にバックアップしたい!
- Postgresデータのリストアも簡単にしたい!
- github + CircleCIで自動デプロイ
- PaperTrailでロギング
という感じです。
それでは、始めましょう
なにはともあれ、Rancherを立てるところからはじめます。
もっと良い方法がありましたら、ツッコミ大歓迎です。
あわせて読みたい
Rancherの記事は以下の記事でまとめてあります。こちらもあわせてどうぞ。
【Docker】RancherOSで本格的な自宅サーバーを構築しよう(1) ~ 要件と構成 ~
Rancherについて、非常にまとまって書かれています。私も大いに参考にさせていただきました。
-
もちろん、DockerHubでもOK。どちらかというとDockerHubの方が普通に設定可能ですが、Amazon ECRは東京リージョンが使え、Rancher内で使うときにちょっとしたTipsがありますので、
今回はAmazon ECRを使いますDockerHubとAmazon ECR両方ご紹介します。 ↩