Less is Best

rubyが好き。技術の話とスタートアップに興味があります。

itamae-plugin-recipe-etcd書いた

結論

etcd v2.0用のitamae plugin書きました。CoreOS以外でetcdの最新系であるv2.x系を試そうする変態さん、ぜひどうぞ。

github.com

なぜ

coreos on etcd0.4.x系を触っている際にetcdクラスタの初期化の際にエラーが発生しまくる事案が発生したため、2015年1月末にリリースされた2.x系を試そうと思い立ち、ついでにレシピも書いた。

etcd v0.4.x系においてはetcdの根幹をなしているraftのプロトコルの実装であるgo-raftの実装がイケてないかつメンテされていない状態のようで、それが原因でのクラスタエラー初期化らしい。etcd2.0ではgo-raftをリプレースした別のraft実装が用いられているようだ。

transporter.ae.decoding.error:proto: field/encoding mismatch: wrong type for fieldの文言のエラーであり、関連するissueはこちら

ふと

coreos + etcdを運用している方々, v2.0への移行はどう対処するのでしょうか? (つい先頃みかけたnanapiさんとか)CoreOSでは自動アップデートがかかるため、逃れられないことが辛いですね。etcdのアップデートを避けて自動アップデートを止めると全く更新されなくなり、CoreOSを採用する意味がありませんし。漁ってみたところmigrationツールが準備中のようですが、詳しい情報を見つけることが出来ませんでした。

アップデート後の挙動がどうなるのかを確認したかったのでetcd 2.0 & fleet 0.9.2の環境かつcentosクラスタ構成のテストをしてみたのですがうまくつながらなかった。etcd2.0 & fleet0.9.2の環境でどういう挙動になるのか調べたかったのですが動くんでしょうか?実際に試してる記事も全くみつけられなかったので私はetcd2.0のアップデートがとても心配です。こちらのコードは今日はもう眠いので後でgithubにでも上げます。