SlideShare a Scribd company logo
Serf
toExcelSerf を実運用に活かす話 + Consul もあるよ
@zembutsu
Apr 19, 2014, Tokyo Ginza #qpstudy LightningTalks
This is your last chance. After this, there is no turning back.
!
WARNING
このスライドには過激な表現やネットスラング、
アニメなどアキバ的文化の演出が含まれています。
qpstudy もうすぐ4周年おめでとうございます!
新人さんようこそ、この業界へ!
今の自分があるのも qpstudy のおかげ
です。この場を借りて、リーダーほか
スタッフの皆さんに御礼申しあげます。
http://www.nicovideo.jp/watch/sm6301392
業界といえば、あっ・・・(察し
これはMRTGですか?いいえ、Muninです。#qpstudy 06 LT
http://www.slideshare.net/zembutsu/mrtgmuninqpstudy-06-lt-7571433
3年前にLTの機会いただきました!
これはMRTGですか?いいえ、Muninです。#qpstudy 06 LT
http://www.slideshare.net/zembutsu/mrtgmuninqpstudy-06-lt-7571433
3年前のスライド・・・。
Serf
http://serfdom.io/
今日は Serf です!
Serf を基に Excel を生成する話
Serf とは
 軽量なオーケストレーションツール
 メンバ一覧とイベントの発生を管理
 障害検知、フェイルオーバー
 秒単位で全ノード上でイベント同期
serfdom = 農奴的な意味です。
※参考 http://www.serfdom.io/intro/
メンバーシップ
• エージェント間で相互通信
• 高速・軽量
• 非中央集権型
• 情報が直ぐに伝わる
障害検知
• 標準で実装済み
• 障害情報は直ぐに全体に伝わる
カスタムイベント
• メンバーシップ管理
• イベントやクエリを一斉実行
(デプロイやプロセス再起動)
• フレキシブルかつ軽量
ハンドサイン画像ジェネレーター
http://bzmm.jp/hs_gene/
ハンドサイン画像ジェネレーター
http://bzmm.jp/hs_gene/
ハンドサイン画像ジェネレーター
http://bzmm.jp/hs_gene/
ハンドサイン画像ジェネレーター
http://bzmm.jp/hs_gene/
ハンドサイン画像ジェネレーター
http://bzmm.jp/hs_gene/
やっぱり Serf !
100 ノード同時実行でも大丈夫!
※理論値 1秒で 95% 、2秒でほぼ100%伝播
物置かな?
オーケストレーション
 システム全体を統括する「何か」
 自分の中では、
「日々の運用業務の面倒な事を」
よしなに処理するための仕組み
ホスト一覧を Excel で提出の必要があっても…
http://oku.edu.mie-u.ac.jp/~okumura/SSS2013.pdf
基本動作 serf2excel.pl
 serf members の結果でホスト一覧取得
 Spreadsheet::WriteExce で Excel 出力
 定期的にメールを送ることも
$ uuencode ./hostlist.xls hostlist.xls | mail -s hostlist user@example.com
基本動作 serf2excel.pl
 serf members の結果でホスト一覧取得
 Spreadsheet::WriteExce で Excel 出力
 定期的にメールを送ることも
$ uuencode ./hostlist.xls hostlist.xls | mail -s hostlist user@example.com
$ serf members -format json | jq -c -r '.members[] | {addr, name}'
{"name":"manager.pocketstudio.net","addr":"192.168.39.3:7946"}
{"name":"node1.pocketstudio.net","addr":"192.168.39.11:7946"}
{"name":"node2.pocketstudio.net","addr":"192.168.39.12:7946"}
{"name":"node3.pocketstudio.net","addr":"192.168.39.13:7946"}
https://gist.github.com/zembutsu/10caa6b868fc994ec683
Serf のデータを基にホスト一覧を動的生成!
使いどころ
 Ansible 向けのインベントリを動的作成
 ServerSpecと連携して role 毎に適用
 …ホスト情報等が動的に変化する場面
更にkwsk
 … と思っていたのですが
昨日、地震で叩き起こされウトウト…
!?
笹喰
っ
て
る
場
合
じ
ゃ
ね
ぇ
!
Consul
http://www.consul.io/
サービス検出 障害検知
マルチデータセンタ キーバリューストレージ
サービス検出
Service Discovery
 ‘api’ や ‘mysql’ という service 名を定義
 検出は、consul ノードで自動的に開始
 HTTP API または DNS で結果を返す
サービス検出
Service Discovery
 ‘api’ や ‘mysql’ という service 名を定義
 検出は、consul ノードで自動的に開始
 HTTP API または DNS で結果を返す
$ curl -s http://192.168.39.5:8500/v1/catalog/nodes | jq '.'
[
{
"Address": "192.168.39.5",
"Node": "consul1.pocketstudio.net“
},
{
"Address": "192.168.39.6",
"Node": "consul2.pocketstudio.net“
}
]
サービス検出
Service Discovery
 ‘api’ や ‘mysql’ という service 名を定義
 検出は、consul ノードで自動的に開始
 HTTP API または DNS で結果を返す
$ dig @192.168.39.5 -p 8600 consul1.node.consul any
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.23.rc1.el6_5.1 <<>>
@192.168.39.5 -p 8600 consul1.node.consul any
(snip)
;; WARNING: recursion requested but not available
;; QUESTION SECTION:
;consul1.node.consul. IN ANY
;; ANSWER SECTION:
consul1.node.consul. 0 IN A 192.168.39.5
障害検知
Failure Detection
 サービスやノードのヘルスチェック
 ‘ping’ や ‘curl’ 等、コマンドレベルで指定
 任意の監視間隔 (秒単位 )
 HTTP API または DNS で結果を返す
障害検知
Failure Detection
 サービスやノードのヘルスチェック
 ‘ping’ や ‘curl’ 等、コマンドレベルで指定
 任意の監視間隔 (秒単位 )
 HTTP API または DNS で結果を返す
$ curl http://192.168.39.5:8500/v1/health/state/critical | jq '.'
[
{
"ServiceName": "web",
"ServiceID": "web",
"Notes": "",
"Status": "critical",
"Name": "Service 'web' check",
"CheckID": "service:web",
"Node": "consul1"
}
]
障害検知
Failure Detection
 サービスやノードのヘルスチェック
 ‘ping’ や ‘curl’ 等、コマンドレベルで指定
 任意の監視間隔 (秒単位 )
 HTTP API または DNS で結果を返す
スクリプト実行可=監視用プログラムのデプロイにも…?
# mkdir /etc/consul.d/
# echo ‘{“service”: {“name”: “web”, “tags”: ["rails"], “port”:
80, “check”: {“script”: “curl localhost:80 >/dev/null 2>&1″,
“interval”: “10s”}}}’ >/etc/consul.d/web.json
キーバリューストレージ
Key/Value Storage
 HTTP API を通して RESTful に操作
 Consul server 間でデータを複製・保全
 Consel システム機能が内部で利用
 ユーザによる任意データの利用も可能
キーバリューストレージ
Key/Value Storage
 HTTP API を通して RESTful に操作
 Consul server 間でデータを複製・保全
 Consel システム機能が内部で利用
 ユーザによる任意データの利用も可能
$ curl -XPUT -d 'hello, world!‘ ¥
http://192.168.39.5:8500/v1/kv/hello/key
true
# curl -s http://192.168.39.5:8500/v1/kv/hello/?recurse | jq '.'
[
{
"Value": "b3BlbiB0aGUgbmV4dA==",
"Flags": 0,
"Key": "hello/key2",
"ModifyIndex": 16,
"CreateIndex": 16
},
]
キーバリューストレージ
Key/Value Storage
 HTTP API を通して RESTful に操作
 Consul server 間でデータを複製・保全
 Consel システム機能が内部で利用
 ユーザによる任意データの利用も可能
$ curl -s http://192.168.39.5:8500/v1/kv/hello/key | ¥
jq '.[].Value | .' -r | base64 -d
hello, world!
マルチデータセンタ
Multi Datacenter
 複数のデータセンタにまたがって通信
 LAN 側と WAN 側で別々のゴシッププール
 ローカルクラスタにない問い合わせは転送
Consul Architecture - Consul
http://www.consul.io/docs/internals/architecture.html
Consul Architecture - Consul
http://www.consul.io/docs/internals/architecture.html
Consul Architecture - Consul
http://www.consul.io/docs/internals/architecture.html
強い基礎技術
 メッセージング ( Messageing ) … SWIM , Serf
 リーダー選出 ( Leader Election ) … Raft
 セキュリティ ( Security ) … TLS
 データストレージ ( Data Storage ) … UMDB
Serf との違い
Serf vs. Consul
http://www.serfdom.io/intro/vs-consul.html
Serf Consul
目的 サービス検出とオーケストレーション サービス検出と設定
ヘルスチェック 低レベル(ノード死活監視) サービス単位で高度な調整
キーバリューストア なし あり
メンバーシップ ノード単位 サービス単位
Web API なし あり
DNS インターフェース なし あり
アーキテクチャ AP 型 ( 一貫性重視、可用性を犠牲 ) CP 型 ( 可用性より一貫性重視 )
試してみた
 RHEL6/CentOS6 は、そのままでNG ( glibc の version )
 Serf に慣れていれば、ほぼ同じような捜査感
 Serf のような Consul の振る舞いだけど、別モノ
Consulを使ってみた | Pocketstudio.jp log3
http://pocketstudio.jp/log3/2014/04/18/what_is_consul/
利用方法
Consulを使ってみた | Pocketstudio.jp log3
http://pocketstudio.jp/log3/2014/04/18/what_is_consul/
$ wget -O 0.1.0_linux_amd64.zip ¥
https://dl.bintray.com/mitchellh/consu/0.1.0_linux_amd64.zip
$ unzip ./0.1.0_linux_amd64.zip
# mv ./consul /usr/bin/
$ consul
利用方法
Consulを使ってみた | Pocketstudio.jp log3
http://pocketstudio.jp/log3/2014/04/18/what_is_consul/
$ wget -O 0.1.0_linux_amd64.zip ¥
https://dl.bintray.com/mitchellh/consu/0.1.0_linux_amd64.zip
$ unzip ./0.1.0_linux_amd64.zip
# mv ./consul /usr/bin/
$ consul
$ consul agent -server -bootstrap -client=192.168.39.5 -dc=local ¥
-node=consul1 -data-dir=/tmp/consul -bind=192.168.39.5
$ consul agent -dc=local -node=consul2 -data-dir=/tmp/consul2 ¥
-bind=192.168.39.6 -join=192.168.39.5
ドキュメント
 公式サイト
 http://www.consul.io/intro/index.html
 GitHub
 https://github.com/hashicorp/consul
Consul関連文書の参考訳、Serfとの違い等 | Pocketstudio.jp log3
http://pocketstudio.jp/log3/2014/04/19/translation_consul_related_documents/
Serf2Excel - Serf を実運用に活かす話 + Consul もあるよ
Serf2Excel - Serf を実運用に活かす話 + Consul もあるよ
?10,000ft view
?10,000ft view
http://www.slideshare.net/zembutsu/serf-orchestration-with-zabbix-operation
Consul
http://www.consul.io/
おしまい。ありがとうございました。
 よい子の皆も Consul を試してみよう! お兄さんとの約束さ!
@zembutsu
みんな~
Consul ためさなイカ

More Related Content

PDF
Consul は 全自動オーケストレーションの 夢を見るか?
PDF
Consulを頑張って理解する
PDF
ご注文は監視自動化ですか?
PDF
Re: ご注文は自動化ですか?[2]
PDF
Serfが面白いと俺の中で話題にwwwwww 【改訂版】
PDF
今日から業務で使える17の運用系Linuxツール、そして円環の理
PDF
Serf / Consul 入門 ~仕事を楽しくしよう~
PDF
Serf という Orchestration ツール #immutableinfra
Consul は 全自動オーケストレーションの 夢を見るか?
Consulを頑張って理解する
ご注文は監視自動化ですか?
Re: ご注文は自動化ですか?[2]
Serfが面白いと俺の中で話題にwwwwww 【改訂版】
今日から業務で使える17の運用系Linuxツール、そして円環の理
Serf / Consul 入門 ~仕事を楽しくしよう~
Serf という Orchestration ツール #immutableinfra

What's hot (20)

PDF
インフラ自動化とHashicorp tools
PDF
Ruby way-openstack.keynote
PPTX
Swiftからlibuvを呼び出すTIPS
KEY
Perl 非同期プログラミング
PDF
Em synchrony について
PPTX
最速C# 7.x
PDF
Ruby で高速なプログラムを書く
PDF
Swift 3 その基本ルールを眺める #cswift
PDF
async/awaitダークサイド is 何
PDF
Study Swift
PDF
lazy var の特徴を知る #cocoa_kansai #cswift
PDF
これからの「async/await」の話をしよう
PDF
プロトコル指向に想う世界観 #__swift__
PDF
minneで学ぶクラウド脳
PDF
XML-RPC : Pythonが「電池付属」と呼ばれる理由
PDF
The Usage and Patterns of MagicOnion
PDF
async/await不要論
PPTX
FabricとRailsと私
PDF
今日からできる!簡単 .NET 高速化 Tips
PDF
人間たちとsystemd
インフラ自動化とHashicorp tools
Ruby way-openstack.keynote
Swiftからlibuvを呼び出すTIPS
Perl 非同期プログラミング
Em synchrony について
最速C# 7.x
Ruby で高速なプログラムを書く
Swift 3 その基本ルールを眺める #cswift
async/awaitダークサイド is 何
Study Swift
lazy var の特徴を知る #cocoa_kansai #cswift
これからの「async/await」の話をしよう
プロトコル指向に想う世界観 #__swift__
minneで学ぶクラウド脳
XML-RPC : Pythonが「電池付属」と呼ばれる理由
The Usage and Patterns of MagicOnion
async/await不要論
FabricとRailsと私
今日からできる!簡単 .NET 高速化 Tips
人間たちとsystemd
Ad

Similar to Serf2Excel - Serf を実運用に活かす話 + Consul もあるよ (20)

PDF
Serfが面白いと俺の中で話題にwwwwww
PPTX
Consulによる運用自律化体験ハンズオンとConsul活用事例紹介
PDF
【HinemosWorld2015】B2-4_HinemosとConsulで実現する運用自動化のご提案
PDF
consul & consul-alerts を使った監視システム (hbstyle-2015-01-08)
PDF
XenServerによるお手軽開発サーバ運用
PPTX
今時のDev opsの取り組み事例集
PDF
テスト駆動インフラ構築-Chefとserverspecを使ったインフラ自動化のすすめ-
PDF
20121217 jawsug-yokohama
PDF
Serf<s>のことも時々でいいので思い出してください </s>を使ってみよう
PPTX
チケット駆動のサーバ/インフラ運用における問題点と手動作業の自動化
PDF
サーバ構築自動化 On aws sqaleの場合
PPTX
今からでも間に合う!インフラ自動化超入門 @渋谷
PDF
チケット駆動のサーバ/インフラ運用における問題点と手動作業の自動化
PPTX
CloudWatch(+sns+sqs)で障害対応を自動化してみた
PDF
hb-agent 秘伝のタレからソースコードへ (ITインフラ 業務自動化現状確認会 ) #infra_auto
PPTX
Windows Server+Photon Server環境でも Fluentd+Elasticsearch+Kibanaを活用して 各種情報を可視化する...
PDF
Infrastrucure as a CodeにおけるJenkinsの役割
PDF
Sqale の Puppet と Chef (と テスト)
PDF
コンテナ時代にインフラエンジニアは何をするのか
PDF
Pacemaker+DRBDでHAクラスタを作る
Serfが面白いと俺の中で話題にwwwwww
Consulによる運用自律化体験ハンズオンとConsul活用事例紹介
【HinemosWorld2015】B2-4_HinemosとConsulで実現する運用自動化のご提案
consul & consul-alerts を使った監視システム (hbstyle-2015-01-08)
XenServerによるお手軽開発サーバ運用
今時のDev opsの取り組み事例集
テスト駆動インフラ構築-Chefとserverspecを使ったインフラ自動化のすすめ-
20121217 jawsug-yokohama
Serf<s>のことも時々でいいので思い出してください </s>を使ってみよう
チケット駆動のサーバ/インフラ運用における問題点と手動作業の自動化
サーバ構築自動化 On aws sqaleの場合
今からでも間に合う!インフラ自動化超入門 @渋谷
チケット駆動のサーバ/インフラ運用における問題点と手動作業の自動化
CloudWatch(+sns+sqs)で障害対応を自動化してみた
hb-agent 秘伝のタレからソースコードへ (ITインフラ 業務自動化現状確認会 ) #infra_auto
Windows Server+Photon Server環境でも Fluentd+Elasticsearch+Kibanaを活用して 各種情報を可視化する...
Infrastrucure as a CodeにおけるJenkinsの役割
Sqale の Puppet と Chef (と テスト)
コンテナ時代にインフラエンジニアは何をするのか
Pacemaker+DRBDでHAクラスタを作る
Ad

More from Masahito Zembutsu (20)

PDF
忙しい人のための Rocky Linux 入門〜Rocky LinuxはCentOSの後継者たり得るか?〜
PDF
自由検証環境提供宣言+Docker Compose V2 GA
PDF
CentOS Linux 8 の EOL と対応策の検討
PDF
さくらインターネットのコミュニティ with COVID-19
PDF
Docker Chronicle 2021.09
PDF
ブックトーク@CROSS ~SF編~ 発表資料「攻殻機動隊」「導きの星」
PDF
インターネットでウェブサイトを表示している裏側の話
PDF
3分で分かる「プログラミング教育・情報教育」
PDF
ようこそオンラインの展示会場へ
PDF
小学校プログラミング教育に対する企業の取り組みと課題 #KOF2020
PDF
オンライン発表で気を付けているポイント~姿勢編
PDF
Docker道場オンライン#1 Docker基礎概念と用語の理解
PDF
Jitsi Meetとは?
PDF
Docker 9 tips~意外と知られていない日常で役立つ便利技
PDF
コンテナの作り方「Dockerは裏方で何をしているのか?」
PDF
クリスマスに工場(Factorio)を作るゲームをしよう
PDF
Dockerfileを改善するためのBest Practice 2019年版
PDF
Dockerfile を書くためのベストプラクティス解説編
PDF
2020年から始まる小学校プログラミング教育の話 #osc19os
PDF
Docker Compose 徹底解説
忙しい人のための Rocky Linux 入門〜Rocky LinuxはCentOSの後継者たり得るか?〜
自由検証環境提供宣言+Docker Compose V2 GA
CentOS Linux 8 の EOL と対応策の検討
さくらインターネットのコミュニティ with COVID-19
Docker Chronicle 2021.09
ブックトーク@CROSS ~SF編~ 発表資料「攻殻機動隊」「導きの星」
インターネットでウェブサイトを表示している裏側の話
3分で分かる「プログラミング教育・情報教育」
ようこそオンラインの展示会場へ
小学校プログラミング教育に対する企業の取り組みと課題 #KOF2020
オンライン発表で気を付けているポイント~姿勢編
Docker道場オンライン#1 Docker基礎概念と用語の理解
Jitsi Meetとは?
Docker 9 tips~意外と知られていない日常で役立つ便利技
コンテナの作り方「Dockerは裏方で何をしているのか?」
クリスマスに工場(Factorio)を作るゲームをしよう
Dockerfileを改善するためのBest Practice 2019年版
Dockerfile を書くためのベストプラクティス解説編
2020年から始まる小学校プログラミング教育の話 #osc19os
Docker Compose 徹底解説

Serf2Excel - Serf を実運用に活かす話 + Consul もあるよ