Update 2014-07-19
: IDCFクラウドにCoreOSクラスタを構築する - Part5: 再セットアップ
先月libswarmが発表されましたが、どちらかというとIaaSにインパクトがありそうです。
永続化データの同期は課題として、バッチは海外の安いVPSを束ねて動かしてとか、リアルタイムは国内のハイスペックなインスタンスで動かしてとか、、the internet as one giant computerな世界はわくわくします。
Orchestrationプラットフォームは、fleet, geard, Shipyard, Deimos, Kubernetes、Centurion、Heliosと百花繚乱の様相なのですが、ここはKubernetesとlibswarmでしょうか。
CoreOS、Kubernetes、Mesos、Saltをはやく組み合わせたいので、まずはCoreOSクラスタを動かせるようにします。
cloud-config.ymlの準備
基本的にはIDCFクラウドでCoreOSをディスクからインストールすると同じ手順ですが、CoreOSクラスタ管理のためfleet.serviceのunitを追加します。
CoreOSのSSHは公開鍵認証なのでを忘れずに書きます。この秘密鍵はssh-agentに追加してCoreOSクラスタ全体で使います。
#cloud-config |
インスタンスを3台デプロイする
nameとdisplaynameを変更して、3台のCoreOSインスタンスを作成します。
とても面倒ですが、心折れずにテンプレートを用意します。
- ディスクの作成
- ディスクを作業用インスタンスにアタッチ
- CoreOSをディスクにインストール
- ディスクをデタッチ
- ディスクからスナップショット作成
- スナップショットからテンプレート作成
- テンプレートからインスタンスの作成
$ idcf-compute-api deployVirtualMachine \ |
IDCFクラウド上に3台のインスタンスができました。ここまで長かったですがようやくスタートラインです。
CoreOSクラスタを構築してしまえば、あとはetcdctlやfleetctlコマンドを使った操作になるので、どこのIaaSで動いているかは気にしなくてよくなります。
fleetctlのセットアップ
作業マシンにfleetctlをセットアップします。
今回はDockerホストにインストールしますが、CoreOSクラスタの外側からfleetctlを使ってサービス(Dockerコンテナ)をデプロイすることができます。
$ git clone https://github.com/coreos/fleet.git |
fleetctlのオプション
--endpoint
オプションにCoreOSノードの1台を指定して、etcdクラスタに直接接続します。
$ fleetctl --endpoint 'http://10.1.1.45:4001' list-machines |
--tunnel
オプションにCoreOSノードの1台を指定して、SSH経由でetcdクラスタに接続します。
$ eval `ssh-agent` |
CoreOSノードを経由して、別のCoreOSノードにSSH接続もできます。
$ eval `ssh-agent` |
まとめ
今回のCoreOSクラスタ上にDeisを作りながら、fleetの使い方を勉強していきたいと思います。