Kvwatcher
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
109
On Slideshare
103
From Embeds
6
Number of Embeds
1

Actions

Shares
Downloads
0
Comments
0
Likes
1

Embeds 6

https://twitter.com 6

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. etcd見張るやつ Dockerで動的ロードバランサについ て考えた @kamekoopa
  • 2. お前 is 誰 けーえむ / @kamekoopa ただのプログラマ Java, PHP, Scala, Python Play2とかが好き 最近触れてない ボルダリングが上達しない ミニ四駆
  • 3. Docker使ってますか? いろいろ便利 プロセスの稼働環境を常にクリーンに 構築できる 環境をバージョン管理可能 冪等がなんちゃらとか完全に気にしな くて良い ※ 詳しい説明は省きます
  • 4. マルチホストでDocker webアプリとか乗っけるならやっぱ りリバースプロキシとかで負荷分 散したい Dockerでマルチホスト 一気に難易度上がる感 スケジューリング サービスディスカバリ
  • 5. マルチホストでDocker どのホストへ配置するか どのホストに配置されるかは分からな い 配置するホスト固定する? スケールアウトしづらい デプロイ方法はどうするのとか にも絡む
  • 6. マルチホストでDocker あるコンテナがどのホストで動 いているか ホストとポート固定する? 前述のスケールアウトの問題 ポートが衝突するので同一ホストで2インスタ ンス以上立ちあげられない
  • 7. マルチホストでDocker あるコンテナがどこのホストの どのポートで立ち上がるかを静 的に決めるのは難しい 立ち上がったコンテナの状況に 応じて動的に設定されるリバー スプロキシの欲しさが高まる
  • 8. マルチホストでDocker インターネットを探してみてもあ まり知見が見当たらない 色々ググってたら以下のツール が見つかった Registrator etcd
  • 9. Registrator Dockerコンテナが立ち上がったり 死んだりするのを監視して、変化 があったらetcdに書き込む 各コンテナホストで立ち上げる これ自体もDockerコンテナで実 行するのでセットアップが楽
  • 10. etcd 分散KeyValueStore 各コンテナホストの状況を集約 する所 耐障害性がある 割と早いらしい
  • 11. 動的リバースプロキシ コンテナを適当にデプロイする Registratorがetcdに書き込む あとはetcdの内容を適当なリバー スプロキシの設定へ反映できれば 良さそう?
  • 12. なら作ろう! と思ったけどconfdというものが既 にあった。
  • 13. confd etcdとかを見張って、その内容に 応じて設定ファイルを書き換える 書き換える設定ファイルはgoの templateの書式で記述する インターバルで見張るモード etcdをwatchして変更があった瞬 間に駆動するモード
  • 14. ということで コンテナを適当にデプロイする Registratorがetcdに書き込む confdにetcdの内容を元にnginx の設定ファイルを生成させる で出来そう!
  • 15. と思ったら(2回目) confdの挙動がちょっとアレっぽい 保持してるキャッシュが適切に クリアされてない etcdのキーが削除された時に適切にフ ァイルが生成されない チェックコマンドが実質的に意 味をなしてなさげ 詳しく書くには紙面が足りない
  • 16. 仕方ないので 簡易版confdみたいなの作ってみた https://github.com/kamekoopa/ kvwatcher pythonなのでjinja2テンプレート使っ てます docker hubにあげてあるので  
  • 17.  でpullできます
  • 18. 試し方 どっかにetcd構築する コンテナホストでRegistratorを 立ち上げて、さっき作ったetcd を見るようにする
  • 19. 試し方 kvwatcherをpullしてrun  
  • 20.      
  • 21.    とそれに従ったテンプレー トファイルが必要 ギッハブのプロジェクトの  デ ィレクトリ配下見てもらえれば何となくわかる と思います
  • 22. デモ 作る余力がなかった(´・ω・`)
  • 23. まとめ nginxを利用した動的リバースプ ロキシ サービス登録をRegistrator バックエンドをetcd 設定への反映をconfd
  • 24. まとめ 実際に稼働中サービスで試した わけじゃないので問題は出てく るかもしれない あくまで実験 nginxの設定ドンドコ書き換えて reloadしまくるし confdはまだちょっと動きが怪し そう(2014-12-03時点)
  • 25. まとめ ConsulやSkydns2とかもあるらし い dnsとしてサービスディスカバリをや る dnsクライアントがSRVレコードを解釈 できる必要がある
  • 26. おわり ありがとうございました