Recommended
PDF
Serfが面白いと俺の中で話題にwwwwww 【改訂版】
PDF
Serf / Consul 入門 ~仕事を楽しくしよう~
PDF
Shadow Server on Fluentd at Fluentd Casual Talks #3
PDF
PDF
PDF
PDF
Mobage を支える Ruby の技術 ~ 複数DB編 ~
PDF
Consul は 全自動オーケストレーションの 夢を見るか?
PDF
Serf2Excel - Serf を実運用に活かす話 + Consul もあるよ
PPTX
Consulによる運用自律化体験ハンズオンとConsul活用事例紹介
PDF
PDF
PPTX
ネットワークエンジニアのための Puppet / Chef
PDF
consul & consul-alerts を使った監視システム (hbstyle-2015-01-08)
PDF
PDF
Infinite Debian - Platform for mass-producing system every second
PDF
PDF
Dockerの基本と応用~快適コンテナライフを実現するArukas~
PDF
PDF
KEY
PDF
PDF
PDF
PDF
PPTX
PPTX
PDF
Fluentd Meetup #2 @外道父 Fluentdを優しく見守る監視事例
PDF
【HinemosWorld2015】B2-4_HinemosとConsulで実現する運用自動化のご提案
PDF
Serf<s>のことも時々でいいので思い出してください</s>を使ってみよう
More Related Content
PDF
Serfが面白いと俺の中で話題にwwwwww 【改訂版】
PDF
Serf / Consul 入門 ~仕事を楽しくしよう~
PDF
Shadow Server on Fluentd at Fluentd Casual Talks #3
PDF
PDF
PDF
PDF
Mobage を支える Ruby の技術 ~ 複数DB編 ~
PDF
Consul は 全自動オーケストレーションの 夢を見るか?
What's hot
PDF
Serf2Excel - Serf を実運用に活かす話 + Consul もあるよ
PPTX
Consulによる運用自律化体験ハンズオンとConsul活用事例紹介
PDF
PDF
PPTX
ネットワークエンジニアのための Puppet / Chef
PDF
consul & consul-alerts を使った監視システム (hbstyle-2015-01-08)
PDF
PDF
Infinite Debian - Platform for mass-producing system every second
PDF
PDF
Dockerの基本と応用~快適コンテナライフを実現するArukas~
PDF
PDF
KEY
PDF
PDF
PDF
PDF
PPTX
PPTX
PDF
Fluentd Meetup #2 @外道父 Fluentdを優しく見守る監視事例
Similar to Serf という Orchestration ツール #immutableinfra
PDF
【HinemosWorld2015】B2-4_HinemosとConsulで実現する運用自動化のご提案
PDF
Serf<s>のことも時々でいいので思い出してください</s>を使ってみよう
PDF
PDF
PDF
PPTX
[SAPPORO CEDEC] サービスの効果を高めるグリー内製ツールの技術と紹介
PDF
PDF
ぼくのかんがえた Itamae/Serverspec 構成フレームワーク 〜 Kondate 〜
PDF
Infrastrucure as a CodeにおけるJenkinsの役割
PDF
PDF
PDF
PPTX
PDF
2012 osc北海道 セッション資料「blackjumbodog利用のすすめ」
PDF
Automation with SoftLayer and Zabbix
PPTX
基礎教養としてのUbuntuサーバ_前編.pptx
PDF
JAWS-UG コンテナ支部 #15 - Amazon ECSの開発環境を動的に管理するツールを作ってみました
PDF
第1回『いまさら聞けない!システム運用・管理のコツ』 『クラウド管理・運用サービス「E.C.O」のご紹介』
PPTX
DeNA private cloudのその後 #denatechcon
PDF
itamae + Serverspecで テスト駆動インフラやってみた #shibuyarb
More from Naotoshi Seo
PDF
HTTP/2 でリバプロするだけでグラフツールを 高速化できた話
PDF
Fluentd Hacking Guide at RubyKaigi 2014
PDF
InfluxDB の概要 - sonots #tokyoinfluxdb
PDF
PDF
Is ruby logger thread(process)-safe? at RubyConf 2013
PDF
PDF
Haikanko rubykaigi 20130531
PDF
PDF
Fluentdcasual 02-haikanko
PDF
capistrano-colorized-stream
PDF
Recently uploaded
PDF
100年後の知財業界-生成AIスライドアドリブプレゼン イーパテントYouTube配信
PDF
PMBOK 7th Edition_Project Management Process_WF Type Development
PDF
Reiwa 7 IT Strategist Afternoon I Question-1 3C Analysis
PDF
自転車ユーザ参加型路面画像センシングによる点字ブロック検出における性能向上方法の模索 (20260123 SeMI研)
PDF
PMBOK 7th Edition Project Management Process Scrum
PDF
ST2024_PM1_2_Case_study_of_local_newspaper_company.pdf
PDF
第21回 Gen AI 勉強会「NotebookLMで60ページ超の スライドを作成してみた」
PDF
2025→2026宙畑ゆく年くる年レポート_100社を超える企業アンケート総まとめ!!_企業まとめ_1229_3版
PDF
Team Topology Adaptive Organizational Design for Rapid Delivery of Valuable S...
PDF
Starlink Direct-to-Cell (D2C) 技術の概要と将来の展望
PDF
PMBOK 7th Edition_Project Management Context Diagram
PDF
FY2025 IT Strategist Afternoon I Question-1 Balanced Scorecard
PDF
Reiwa 7 IT Strategist Afternoon I Question-1 Ansoff's Growth Vector
Serf という Orchestration ツール #immutableinfra 1. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
Serf という Orchestration ツール
March 25th, 2014
Naotoshi Seo @sonots
DeNA Co., Ltd.
2. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
2
自己紹介
・瀬尾 直利 @sonots
・DeNA Co., Ltd
・インフラのDev
・Rubyist
・OSS 活動家
・Fluentd コミッタ
3. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
⁃ グラフツール
⁃ HTTP POST するだけ
⁃ GrowthForecast の Ruby クローン
http://focuslight.github.io/
4. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
http://blog.livedoor.jp/sonots/archives/29646713.html
Yohoushi
分散 Focuslight グラフツール
5. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
⁃ ログを処理するアプリケーション(or フレームワーク)
⁃ Ruby プラグインの仕組みが強力 (+250 plugins)
6. 7. 8. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
Serf(1)
8
⁃ Orchestration ツール
⁃ Vagrant で有名な Mitchell Hashimoto 氏が作
った go 製のツール
⁃ メンテナは同 Hashicorp の Armon 氏
http://www.serfdom.io/
9. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
オーケストレーション
9
Bootstrapping
OSのインストール作業 / Kickstart
Configuration
サーバの設定作業 / Chef、Puppet
Orchestration
サーバ群のクラスタリング
ロードバランサに追加したり、監視入れたり、サーバ管理ツー
ルに登録したり、という他のツールと連携するための作業
手でコマンド叩いたり。Serf を使ったり (New!)
10. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
Blue-Green Deployment
10
http://martinfowler.com/bliki/BlueGreenDeployment.html
ここの設定
11. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
インフラ作業あるある
新規サーバ1台投入するためには
1. OSインストール (AWSインスタンス立ち上げる、mbgaclone [1])
2. セットアップ (chef, puppet, touryo)
オーケストレーション作業も必要
1. サーバ管理ツールに登録 (admintool [1])
2. 監視ツールに登録 (Nagios, Zabbix)
3. メトリクス収集ツールに登録 (Ganglia, Munin)
4. DNS登録
5. LB 登録 (BigIP, nginx, HAProxy)
http://www.amazon.co.jp/dp/4774151114[1] mbgaを支える技術
12. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
12
⁃ オーケストレーション作業は 1台でも面倒
⁃ 100台入れ替える
⁃ 1日10 Blue-Green Deployment したい
手動とか
\(^o^)/オワタ
13. 14. 15. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
serf agent の起動
15
$ serf agent -node=one
$ serf agent -node=two
-bind=127.0.0.1:7947 -rpc-addr=127.0.0.1:7374
one two
$ serf members
one 127.0.0.1:7946 alive
$ serf members -rpc-addr=127.0.0.1:7374
two 127.0.0.1:7947 alive
16. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
serf join
16
$ serf join 127.0.0.1:7946 # join to one
$ serf members # one
one 127.0.0.1:7946 alive
two 127.0.0.1:7947 alive
$ serf members -rpc-addr=127.0.0.1:7374 # two
two 127.0.0.1:7947 alive
one 127.0.0.1:7946 alive
one two
join
17. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
17
A
D
B
C
1. join
D join
D join
※ Gossip プロトコルで伝搬
A join
B join
C join
18. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
18
A
D
B
C
1. join
D join
D join
※ Gossip プロトコルで伝搬
A join
B join
C join
19. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
イベントハンドラ
19
⁃ 任意のイベントで起動するスクリプトを登録できる
#!/bin/bash
# handler.sh
echo
echo "New event: ${SERF_EVENT}. Data follows..."
while read line; do
printf "${line}n"
done
$ serf agent -event-handler=$HOME/handler.sh
⁃ 環境変数 SERF_EVENTにイベント毎に別の値が入る
⁃ member-join, member-leave, member-failed, member-reap, user
⁃ STDIN にホスト名、IPアドレス
20. 21. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
Serfで/etc/hosts更新
21
https://github.com/kentaro/serf-hosts
A
BC
join
member-join
1. /etc/hosts にホスト名, IPアドレス追加
member-leave
1. /etc/hosts 該当行削除
同スクリプト 同スクリプト
22. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
SerfでHAProxyに登録
22
http://blog.glidenote.com/blog/2013/10/30/serf-haproxy/
HAProxy
Web2Web1
join
member-join
1. /etc/haproxy/haproxy.cfg 追記
2. /etc/init.d/haproxy reload
member-leave
1. /etc/haproxy/haproxy.cfg 該当行削除
2. /etc/init.d/haproxy reload
スクリプトなし スクリプトなし
23. 24. 25. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
25
Monitor
中央集権型 Agent型
Web1 Web2
web1.cfg
web2.cfg
Web1 Web2
agent agent
Monitor設定変
更なし
ホストが立ち上がると勝手に情報を送り始める
26. 27. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
27
⁃ HAProxy ロードバランサ (中央集権)
⁃ MyDNS で DNSラウンドロビン (中央集権)
⁃ Big IP ロードバランサ (中央集権)
⁃ Ganglia リソースメトリクス (gmond, Agent 型)
⁃ Munin リソースメトリクス (中央集権)
⁃ Nagios 監視ツール (中央集権)
⁃ Sensu 監視ツール (Agent 型)
⁃ GrowthForecast, Focuslight グラフツール (Agent型)
⁃ Fluentd ログ収拾 (Agent 型)
いろんなツール
28. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
中央集権型ツールを
agent 型アーキテクチャに
こじつけ直すのが
28
Serf
29. 30. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
どのぐらいの時間で伝搬されるのか?
30
http://www.serfdom.io/docs/internals/simulator.html
⁃ 30ノードで1.25s、100ノードでも2sほど
31. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
イベントをどのノードに発火すべきか
31
⁃ 最初にどれかのノードに member-join イベントを
発火しなければならない。
⁃ DNSラウンドロビンを使うとかして、ランダムに選択
されるようにするとよさそう。
⁃ ※ もちろんその DNS の管理は serf で
A
D
B
C
DNSラウンドロビン
32. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
Event-handler script の更新は?
32
⁃ event handler スクリプトにバグがあるなどして更
新する必要があった場合に、serf クラスタ全体に撒い
て回らないといけない。
⁃ それこそ serf を使ってクラスタ全体を更新したい
⁃ が、更新するためのスクリプトがバグっている
⁃ 今までどおり capistrano かなにかで撒く?
⁃ ※ Immutable ならイメージを更新してデプロイ
33. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
監視をどのタイミングではずすべき?
33
⁃ member-leave, member-failed イベントで監
視を外す
⁃ すると、本当にサーバが死んだ時にアラート飛ばない
↓
⁃ サーバ down 監視以外を Serf で外す
⁃ サーバ down 監視を外すのは手動で(?)
34. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
34
⁃ 監視に入れるなどの処理は全て Serf でやっておく
⁃ サービスインはやらない
⁃ テストチームの作った自動QAで振る舞いをテスト
⁃ (主にオーケストレーション層のテスト)
⁃ 良きタイミングで別の仕組みでサービスイン?
いきなりサービスインは怖い?
35. 36. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
serf event
36
$ serf event [options] name [payload]
ex) serf event deploy 20140325
⁃ 環境変数 SERF_EVENTに user が、
⁃ 環境変数 SERF_USER_EVENT に name が入る
⁃ STDIN に payload が入る
⁃ ユーザーカスタムイベント
http://www.serfdom.io/docs/agent/event-handlers.html
37. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
serf monitor
37
$ serf monitor
⁃ 稼働中の serf agent に attach してログを見れる
⁃ serf agent のログレベルが warn でも、
⁃ serf monitor -log-level debug と指定すればデ
バグレベルで参照できる
38. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
serf tag
38
$ serf tags -set tag=value
$ serf tags -delete tag
⁃ ノードにタグを付ける
$ serf members
one 127.0.0.1:7946 alive tag=value
⁃ 環境変数 SERF_TAG_{TAG} に value が入る
⁃ ※ role は deprecated になりました
39. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
serf query
39
$ serf query [options] name [payload]
⁃ event と違い、レスポンス (STDOUT) を受け取る
⁃ クエリが終わるまで待ち続ける
⁃ ただし、timeout したら諦める
⁃ -tag tag=value オプションでタグを指定できる
40. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
serf query 応用例(1)
40
$ serf agent -event-handler=query:uptime=uptime
⁃ 全ホストから uptime コマンドの結果を集める
$ serf query uptime
Ack from 'one'
Response from 'one': 17:50 up 3 days, 2:52, 10 users, load
averages: 3.83 2.46 2.27
Total Acks: 1
Total Responses: 0
http://pocketstudio.jp/log3/2014/03/14/serf-0-5-0/
41. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
serf query 応用例(2)
41
$ serf agent -event-handler=query:sh=/bin/bash
⁃ event-handler に sh を登録
⁃ 任意のコマンドを実行できる
⁃ 全ホストで nginx reload とか、その他自由
⁃ ※ ただし、timeout したら諦める
$ serf query sh “service nginx reload”
42. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
まとめ
42
⁃ Serf の紹介をしました
⁃ Immutable インフラには Agent 型があっている
⁃ サーバ増やした(減らした) → 設定ファイル修正して git
commit && push して deploy とかやってられない
⁃ Serf で中央集権型を Agent 型にしちゃうと捗る
43.