Dockerに買収されたTutumがどれだけ便利なのか使ってみました。
http://japan.zdnet.com/article/35072328/
nodeを作成する
この辺りは、ググると色々と出てくるのでさらっと。
tutumではdockerのhostになるサーバーをnodeと呼ぶ。まずは、nodeを立ててみる。
Cloud連携
今回は試しに、AWSとAzureにnodeを立ててみますが、下にあるようにその他のクラウドサービスも使えるようです。また、やってないですがオンプレのサーバーとも連携出来ます。
Link accountから指示に従うだけなので相当簡単にlink可能でした。
AWSとAzureに1台ずつnodeを作成
これも指示に従ってクリックしていくだけなので簡単にnodeが二つたちます。
AWSとAzureにそれぞれたちました。
nodeの上にコンテナ(Service)を起動する
今回はテストなのでtutumが提供しているサンプルコンテナを起動します。
外部からアクセスする為には、PortsをPublishedに設定しておく必要があるので注意。
AWSのnodeに1つコンテナが起動した
もう一台起動すると今度はAzureのnodeにコンテナが起動する
これは、起動する時にDeployment strategyを一番空のnodeを優先するようにしているため。
Azureのnodeを落としてみると
Azureのnodeをterminateしてみると、しばらくした後にAWS側のnodeにコンテナが移動している事が分かる。
これは素晴らしい。
ネットワークがどうなっているのか
コンテナ間の通信
AWS側のコンテナ(10.7.0.4)からAzure側のコンテナ(10.7.0.5)にpingを打ってみる。
問題なく通るので、クラウド間を意識せずに通信が出来ている。
このTerminal機能は地味に嬉しい。
nodeのネットワークを見てみる
tutumのnodeにsshする
nodeにsshする方法は本家のドキュメントに書いてある通り。
https://support.tutum.co/support/solutions/articles/5000553071-sshing-into-a-tutum-node
tutum/authorizedkeysというtutumで用意されているコンテナをstack(docker composerみたいな物)を使って起動すると、このコンテナ経由でsshの鍵がnode側に設定されます。
実行するとすぐにterminatedになるので一瞬焦るがsshは出来るようになっている。
docker ps
ssh後、docker psを打つと色々と起動している事が分かります。
weaveとあるので、クラウド間の通信はweaveを使っている様子。
crondが起動していたり、metricsを取る用のコンテナがいたり、ntpdがいたり。
ifconfig weave
weaveの設定は正直良く分からないが、weave用のネットワークインターフェースが追加されていて、ここで他のコンテナと通信しているっぽい。
この辺りが詳しかった。
http://qiita.com/nmatsui/items/a7caa5a3840b8c920124
セキュリティ
AWSでは起動時に自分でセキュリティグループを指定させられたが、Azureの場合には自動で使うポートが設定されていた。
dockerがtcpの2375、コンテナがtcpの32769、weaveがtcpとudpの6783を使用しているという、分かりやすい構成。
今回はテストだが実際に何らかの用途で使用する場合にはIP制限など入れたいところ(tutumからのアクセスでIPを制限出来るのだろうか?)。
まとめ
簡単にクラウドと連携出来たり、nodeに関係なくサービスが使えたりと結構便利な印象。
とはいえ、今稼働させているアプリケーションをどんな形で展開するか?みたいなところまでは考えていない(tutumというかdockerの話になるが)。
tutumに関しては、Dockerに買収されて今後ますます便利になりそうな予感しかしないので引き続き要チェック。
折角のコンテナなので、Amazon ECSなどで特定のクラウドに縛られるよりはこちらを使う方が良いかなとは思う。