5
5

More than 5 years have passed since last update.

第60回: SerfとConsulでシステム運用を楽しくしよう! に参加しました。 #hbstudy

Last updated at Posted at 2014-07-21

前置き

hbstudy第60回: SerfとConsulでシステム運用を楽しくしよう! に参加しました。
まだメモ書き状態で雑ーーなところも多々ありますが、とてもおもしろい勉強会だったので勢いで公開。ぼちぼち編集するかもしれないし、されないかもしれません。どっちやねん。

次回は 2014/8/9(土) 13:30~20:00 です。ご興味あればぜひ。
- hbstudy#61 トラブル☆しゅーたーず #08

概要

発表タイトル/講師

  • 「SerfとConsulで運用を楽しくしよう!」@zenbutsuさん
  • 「consulについて」@ijinさん

「SerfとConsulで運用を楽しくしよう!」@zenbutsuさん

最初にDemo

Serfで3台のクラスタを制御する

Serfノードx3を起動し、3台構成のクラスタを構成するまでのデモ。
にあるように、下記のようにするだけでクラスタ構築完了できる。

1台目
$ serf agent &
2台目
$ serf agent &
$ serf join 192.168.10.1
        ↑1台目のIP
3台目
$ serf agent &
$ serf join 192.168.10.1
        ↑1台目のIP
確認
$ serf members

発表内容について

詳細は資料を見ていただくとして、気になったところを並べていきます。
盛り沢山な内容でしたが、前佛さんのエンジニアとしての思想がところどころに散りばめられていて、飽きずに楽しく聞けました。

オーケストレーションツールとは?

  • Dockerの話(前置き)
    使うツールの技術背景を知ってから使うべき
      network namespaceとかね
    でも最初は気にせずどんどん触ってよう!

  • Serf/ConsulはImmutable Infrastructureの文脈から産まれた
    オーケストレーションツールの一種
    Serf/Consulは他と比較してもシンプル
    オーケストレーション以外はなにもしてくれない

  • オーケストレーションツールとは?
    一斉に何かを処理するツール

2.Serf基礎編

  • Serfの概要
  • 軽量簡単
  • 特徴
  •   メンバ管理
  •   障害検知
  •   カスタムイベント
  • 1.メンバ管理
  •   マスタなし=全て並列
  •   メンバの加入・離脱は自動
  •   加入する場合はクラスタに加入申請する

QAにあったやりとり

  • Serfノードは互いに状態を監視、不具合のあるノードを検知すると、クラスタから切り離す
  • 状態の監視はノード内のランダムな相手と行う(らしい) ゴシッププロトコルの特徴。
  • 1000台オーバーのノードの場合、コマンドの伝搬にはどの程度かかりますか?
  • serf agentのdiscoverオプションを指定することで、起動時にjoinするクラスタを探しに行ってくれるようになる

consul

  • サービス検出
  •   Serviceという単位でラベルを貼れる
  • Tips
  •   ローカルのDNSのような機能がある
  •   BlockingQuery
  •     nodeのダウンを検知して◎◎する
  •     といったeventを定義できる。ただし、API経由でしか操作できない。

ここまでのまとめ

  • 学習コストが低い
  • 既存の仕組みを変更しない

 導入がとても容易

Consul編

メモがロストしてしまいましたm()m


「consulについて」@ijinさん

Consul

  • FAILURE DETECTION
  • MULTI DC
  • KVS
  •   動的な設定情報置き場

  • TECHNOLOGY

  • ARCHITECTURE

  •   Server Mode or Client Mode

  •   ServerにはLeaderがいて、クライアントからのリクエストは、全てLeaderにフォワードされる

  •   クラスタはゴシッププロトコルで相互に通信する

  • CONSISTENCY

  •   CAP Theorem

  •     CP: 一貫性に重きを置く

  •   consesus protocol using raft

  •    read/write

  •      Mostly Stlogly Consistent        

  •      Stlogly Consistent

  •        leaderとその他serverで設定値に差分がないかを確認してまわるため

  •        Roundtripなアクセスが発生する

  •      stale

  •        どのserverでも直接回答を返す。50ms以内に終息する

  • Deploymentable

  •   3-5台のservernodeがあればいいよね

  • JEPSEN TESTING

  •   Partition tolerance

  • CONSUL AGENT

  •   Nodes & Services

  •     Node: 名前, Service: roleとかtag

  •   DNS Interface

  •   Service Lookup

  •   HTTP API

  •     おおざっぱにendpoint x7

  •       keyvalue

  •       agent endpoint : 各Serverのagentに直接問い合わせる

  •       HEALTH CHECK

  •       BLOCKING QUERIES: 状態変更の即時検知 #WEBUIあるよ

  •   USE CASE

  •     ansible dynamic inventoryで管理対象nodeのrole付ができる

  •     mha: フェイルオーバー機能などを持つ

  •   BENCHMARK

  •     v0.2.0 -> v0.3.0

  •       GETに関して5倍程度速度が向上している

  •       PUTについては4倍程度速度が向上している

  •   CONSUL-API

  •     Goで書かれている

5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5