先月Dockerから、libswarmが発表されました。どちらかというとIaaSにインパクトがありそうです。永続化データの同期は課題として、バッチは海外の安いVPSを束ねて動かしてとか、リアルタイムや基幹システムは国内のハイスペックなインスタンスで動かしてとか、、the internet as one giant computerな世界はわくわくします。Orchestrationプラットフォームは、fleet, geard, Shipyard, Deimos, Kubernetes、Centurion、Heliosと百花繚乱の様相なのですが、ここはKubernetesとlibswarmでしょうか。
DockerのHTTP Routing: Part1: Service Discovery
tsuruを構築したときにDockerコンテナを外部に公開する場合は、Service DiscoveryのためにWildcard DNSとローカルのBIND、HipacheのHTTP Routingの仕組みが必要でした。これでもFlynnやDeis、Deimosに比べると小規模なのですが、もっとカジュアルにバックエンドのDockerコンテナを見つけて、動的にルーティングしてくれるシンプルなリバースプロキシが欲しいです。Service Discoveryにはいろいろな仕組みがあります。まだ分類が難しいのですが、勉強のためまとめてみます。
Dockerでデータ分析環境 - Part4: Tomcat7とPostgreSQL Studio
PostgreSQLの管理ツールはPostgreSQL Studioを使います。データ分析のためSQLの学習環境を構築するのが目的なので、Webから便利にクエリが書けるを使います。PostgreSQL Studioの画面はいまだとちょっと懐かしいGWTで作られています。Scalaの開発環境は以前作ったのですが、まだDockerでTomcatの開発環境は作っていませんでした。
Dockerでデータ分析環境 - Part3: PostgreSQLとボリューム
データベースもインフラから分離して自由にアタッチできるDBaaS環境を探しています。さらにデータ自体もデータベースコンテナから分離できたり、Dockerの世界は奥が深いです。Data-Only-Containerの使い方は、How to port data-only volumes from one host to another?や、オフィシャルのManaging Data in Containersを読みながら勉強していこうと思います。tsuruのMySQLはまだうまく使えず、今回の要件はデータ分析の学習環境なので簡単なところから始めます。DBを起動するコンテナとDockerホストへのボリュームのマップを行います。
Dockerでデータ分析環境 - Part2: AnacondaでIPython Notebookをインストール
Part1でRStudio Serverをインストールしたのに続いて、IPython Notebook環境を構築します。マルチユーザー環境だと、ipython-hydraがありますが理解できていないので、rootユーザーで動かすことにします。IACSのコースでは、IPython Notebookの環境構築にAnacondaを使っているので参考にします。AnacondaはPythonでデータ分析環境を構築する場合に必要なパッケージがたくさん入っているので、まとめてインストールできます。
IDCFクラウドにCoreOSクラスタを構築する - Part2: CoreOSのディスカバリ
IDCFクラウドでCoreOSをディスクからインストールするからしばらく経ちました。TechClunchにMicrosoft、Red Hat、IBM等がGoogleのDockerコンテナ管理ツール、Kubernetesサポートで団結いう記事を読んだら、Salt,CoreOS,Mesosの3つは速くマスターしないといけないです。IDCFクラウドだと手順が煩雑なのですが、CoreOSクラスタを再構築のためdiscovery.etcd.ioの操作を確認します。
Dockerでデータ分析環境 - Part1: Ubuntu14.04にRStudio Serverをインストール
社内でデータ分析を勉強したいという声があがりました。声があがったのも驚きですが、ほとんどが非エンジニアのふつうの人で、それもRから勉強したいそうです。データ分析が一般業務として認知されはじめたようで、とてもうれしくなります。ふつうの人SSHやEmacsを使わず簡単にブラウザで勉強できる環境を用意しようと思います。こういった分析サンドボックスにこそ、Dockerがふさわしいので、さっそく`Rstudio Server`をUbuntu14.04にインストールしてみます。以前からApparmorとUpstartに悩まされ続けていて、Docker上で動かせませんでした。DruidのDockerfileんでいたらApparmorは無効にして、デモナイズはrunitを使っていたので、なるほどと思いました。Druidはちょっと触ってみたいのですが、クエリをJSONで書くみたいです。
DockerでオープンソースPaaS - Part7: tsuruでGoのHelloWorld
ようやくtsuruも少し仕組みがわかるようになってきました。標準ではPython用のイメージしかありませんが、tsuru-adminコマンドを使うとDockerfileを指定して、他のプログラム言語のプラットフォームのイメージを追加できます。basebuilderは、Dockerfileとデプロイスクリプトで構成されています。データベースを使うアプリを作る前に、Goで簡単な`Hello World`を書いて動作確認をします。
DockerでオープンソースPaaS - Part6: DNS Forwrding
まだtsuruでアプリをデプロイが失敗中です。いわゆるService Discoveryですが、Wildcard DNSとHipacheだけでは足りなくて、ローカルにDNSサーバーを建てる必要があるみたいです。tsuruでドメイン名を指定するとLAN内でもグローバルIPアドレスで他のコンテナを探してしまい見つかりません。dnsmasqとhostsで対応しようと思ったのですが、Wildcardが使えないのでした。
DockerでオープンソースPaaS - Part5: tsuruのDBaaS
Flynnの場合Flynn PostgreSQLであったり、Dokkuの場合Pluginがあったりと、PaaSにとって何かしらのデータベースサービスが必要です。DokkuのPluginsにはMariaDBやPostgreSQL用のプラグインがあるので、tsuruが理解できたら試してみたいです。オープンソースで作るDBaaSでは、OpenStackのTroveが最近話題です。DBaaSやPaaSをもっとカジュアルに試せるように、そろそろOpenStackもどこかに作らないといけないです。