みんな、丸太は持ったか!?
あのホラー系コメディ漫画、おわっちゃった件。
3〜4番煎じネタだけど、くだらないところで大いにはまったので書き残しておくよ。激しく時間を浪費した(;_;
coreos-vagrant
google、pivotal、vmware、dockerと蒼々たる巨人達がコンテナ技術で提携を発表したここ最近、相変わらずdockerが盛り上がってるので、てくてく後ろを着いていこうと思った。
googleはkubernetesとかいうコンテナ用クラスタ管理システムを公開していて、こちらも興味があるんだけど、自分がこの分野に疎すぎるので、今回はもう少し基本を学べるように見えるcoreosに付属するfleet
というクラスタ管理プログラムを試してみる。
fleet
公式サイトを見て、更に自分でもちょっと触ってみた感じ、etcd
というKey, Valueストアを介して複数の(仮想)マシンを連結、1のマシンとして扱うことができる。
外部からデプロイコマンドを打ったらクラスタを構成するマシンのどれか一つでdockerコンテナが立ち上がるって理解でいいんだろうか。死活管理も入っているように見えるが、この辺はまだ不勉強。
ともかくクラスタを構成できないと話にならない。手元のへぼいiMacでも大丈夫そうなcoreos-vagrantで試してみる。
yukaarybox:project yukaary$ git clone https://github.com/coreos/coreos-vagrant.git
yukaarybox:project yukaary$ cd coreos-vagrant
ここでconfig.rb.sample
、user-data.sample
からコピーして、config.rb
、user-data
を作る。続いて編集。
変更箇所:config.rb
$num_instances=2
$update_channel='stable'
$expose_docker_tcp=2375
$vb_gui = false
$vb_memory = 512
$vb_cpus = 1
仮想マシンを2つ立ち上げる、coreosはstable
を使用、ホストマシンからdockerコマンドを打てるようにする、仮想マシンのスペックを調整、以上。
変更箇所:user-data
discovery: http://172.17.8.1:4001/v2/keys/machines
クラスタを構成する時に照会するetcd
のキー名。デフォルトでは、coreos側がご親切に照会用のetcdサーバー(https://discovery.etcd.i
o/)を立ち上げてくれており、キーを発行してそちらを見ればOK!となっているが、封権的なこの日本社会では、なかなかこれが利用できる環境にない…。
仕方がないのでvirtualboxで立ち上げるcoreosより絶対先に存在しており、かつ、ゲストマシンから間違いなくアクセス可能なホストマシン(yukaarybox/iMAC)にdiscoverly役を担ってもらうことにする。上の172.17.8.1
はゲストマシンから見たホストのIPアドレス。
このetcd
、coreosの構成するsystemd
などと並ぶ一大要素らしい。
公式サイト(英語)を読むと、プロセスの起動順序を制御するために
unit
とtarget
という2つの概念を利用する、この発想は既存のcloudなんとかから得ていて、coreosにとって必要な要素だけを取り出してきたとか色々書いてある。
goで実装されているのでOSXにgoをまずはインストール。インストール先。etcdをインストールするときに環境変数GOPATH
がないと怒られるので、適当なディレクトリに設定しておく。
~/.bash_profile
export GOPATH=/Users/yukaary/go
etcdをインストール。
$ go get github.com/coreos/etcd
コマンドが終了するとGOPATH/bin/etcd
が出来ている。そのまま./etcd
とすると起動しちゃうから騙されたんだけど、まともに動いてなかったorz。これでゲストマシンx2が連結してくれず数時間はまった黒歴史。
(これだからgithubのmasterは嫌なんじゃ〜〜〜〜。)
go getしたソースコードはGOPATH/src
の中にあるので、そこでまともに動いてくれそうなブランチかタグを調べてみる。
yukaarybox:etcd yukaary$ git tag
0
v0.1.0
v0.1.1
v0.1.2
v0.2.0
v0.2.0-rc0
v0.2.0-rc1
v0.2.0-rc2
v0.2.0-rc3
v0.2.0-rc4
v0.3.0
v0.4.0
v0.4.1
v0.4.2
v0.4.3
v0.4.4
v0.4.5
v0.4.6
v0.4.6。多分これだな…。
yukaarybox:etcd yukaary$ git checkout v0.4.6
yukaarybox:etcd yukaary$ go install $ go buildもいるのかな?ちょと分からない。
これでまともに動きそうなetcdが出来た。IPアドレス:ポート
を指定して起動する。
./etcd -addr 172.17.8.1:4001
別ターミナルでVagrantを起動。
yukaarybox:coreos-vagrant yukaary$ vagrant up
...
ゲストマシン起動完了後、core-01, core-02でそれぞれ。
core@core-01 ~ $ fleetctl list-machines -l
MACHINE IP METADATA
b29eb20a7acb4b6fac7dd7839d15ee08 172.17.8.101 -
b2aff8b7ea5d4663a70900f560376c23 172.17.8.102 -
core@core-02 ~ $ fleetctl list-machines -l
MACHINE IP METADATA
b29eb20a7acb4b6fac7dd7839d15ee08 172.17.8.101 -
b2aff8b7ea5d4663a70900f560376c23 172.17.8.102 -
やったぜ。
Written with StackEdit.
No comments:
Post a Comment