『ご注文は監視自動化ですか?』
Serf と Consul を使って運用を楽しくする話
Serf とか Consul とか聞くけど、イマイチわからん!という疑問はありませんか。
どのような働きをするのかや、使いどころを、皆さんと共有したいなと思っています。
1. はじめに
2. 基本編
・ Serf
・ Consul
・ envconsul
3. 実践編
・ API 連携
4. まとめ
July Tech Festa 2014
June 22, 2014, @ AITT Shinagawa, Tokyo, Japan
#techfesta #jtf2014
1 of 181
Downloaded 197 times
More Related Content
ご注文は監視自動化ですか?
1. IS THE ORDER AN AUTOMATION OF OPERATION AND MONITORING?
Masahito Zembutsu @zembutsu
Jun 22, 2014 , July Tech Festa #jtf2014 #techfesta
AITT Shinagawa Seaside, Tokyo
ご注文は
監視自動化ですか?
S e r f と C o n s u l を 使 っ て 運 用 を 楽 し く す る 話
6. IS THE ORDER AN AUTOMATION OF OPERATION AND MONITORING?
Masahito Zembutsu @zembutsu
Technology Evangelist
Jun 22, 2014 , July Tech Festa#jtf2014, AITT Shinagawa Seaside, Tokyo
ご注文は
監視自動化ですか?
S e r f と C o n s u l を 使 っ て 運 用 を 楽 し く す る 話
15:00からです
ゆっくりしていってね!
7. Dedicated to Our Future Pioneers.
Where Do We Come From? What Are We? Where Are We Going?
この先生きのこるには
我々は何処から来たのか、
我々は何者か、
我々は何処へ行くのか、
8. Dedicated to Our Future Pioneers.
Where Do We Come From? What Are We? Where Are We Going?
タイトルは、
いろいろ旬なので・・・
9. Dedicated to Our Future Pioneers.
Where Do We Come From? What Are We? Where Are We Going?
ご注文は
監視自動化ですか?
S e r f と C o n s u l を 使 っ て 運 用 を 楽 し く す る 話
Agenda
流れ
1. はじめに
2. 基本編
・ Serf, Consul, envconsul
3. 実践編
・ API 連携、ZABBIX など
4. まとめ
10. Dedicated to Our Future Pioneers.
Where Do We Come From? What Are We? Where Are We Going?
ご注文は
監視自動化ですか?
S e r f と C o n s u l を 使 っ て 運 用 を 楽 し く す る 話
Agenda
今日のまとめ
Serf や Consul は軽量シンプルでありながら、
様々なシーンに利用できる。また、他の類似
ツールを使うよりも利用の敷居が低い。
そのため、運用・開発にかかわらず、日々の
煩雑な業務から解放されるので、各々が取り
組む本来業務、とりわけ人間しかできない事
に集中できる。結果、仕事が楽しくなる。
11. Dedicated to Our Future Pioneers.
Where Do We Come From? What Are We? Where Are We Going?
ご注文は
監視自動化ですか?
S e r f と C o n s u l を 使 っ て 運 用 を 楽 し く す る 話
Agenda
この時間で得られるもの
・Serf や Consul とは ○○ です(キリッ と言える
・Serf や Consul の使い所をイメージできる
・運用や開発における自動化のための仕組み
(ロジック)を自分で考えることができる
12. Dedicated to Our Future Pioneers.
Where Do We Come From? What Are We? Where Are We Going?
ご注文は
監視自動化ですか?
S e r f と C o n s u l を 使 っ て 運 用 を 楽 し く す る 話
Agenda
この時間で得られるもの
・Serf や Consul とは ○○ です(キリッ と言える
・Serf や Consul の使い所をイメージできる
・運用や開発における自動化のための仕組み
(ロジック)を自分で考えることができる
29. automate engine
configuration
management
system
monitoring
Integration automatic operation
Configuration management,
recource management and
system monitoring are
necessary for automation .
target:
・Cloud Infrastructure
・Virtual Machines, Containers
・Services ( processes )
etc
management domain of orchestrator
Self-development
We are plans to develop an automate
engine and integration systems and
services:
- Algorithmic management
- resource management
-performance management
This is the orchestrator “Pythagoras”.
Cloud providers Datacenters or, other Public Cloud Infrastuctures
Users
( access via dashboard )
API
resouce
mangagement
API
orchestration tools
こんな応用が
30. Changing concepts of “operation” and “monitoring”
NOW … handling to trouble is important
FUTURE … make much of service continuity
The role of orchestrator is an engine
to manage systems that will be
changing dynamically
orchestrator
Serf Serf Serf
datacenter 1 datacenter 2 datacenter 3
GUI Operation
・It’s not necessary to be conscious
of data centers.
・We do not manage the directly
physical machine resources.
dashboard
Existing systems to
live together
Monitoring for
autonomy
・Monitoring necessary for
orchestrator to work
・A system performs the
existing fault detection
and support automatically
・A monitroing operation
needs the indexes of the
service level
- resource monitoring
- service response time
- KPI
- …etc
・Therefore the cooperate
that is close to each
layers through “API” is
importantphysical data centers layer
system layer
platform base layer
IaaS
Developing platform bases
・An IaaS technologies are
establishing
・The infrastructure layer will be
abstracted, and operation to
intertwine in datacenters is
necessary
shipyard, etc
Layer 1
Layer 0
example:
Docker will deploys some machine
images, replication setting, management,
and orchestrator will recovery system
出来ないかな?
31. VM VM
hardware
datacenter A
VM VM
hardware
VM VM
hardware
datacenter B
VM VM
hardware
Chef Metal
Resouce management
of containers and virtual
/ physical machines
configuration management
of OS and middleware layer
Provisioning API
“Pythagoras” is orchestrator
service and node state
monitoring
cloud API cloud API
We are trying to
develop orchestrator
called “Pythagoras”.
The element of the
monitoring and
automation tool are
indispensable here.
to migrate another data center
consul gossip pool
API APIAPI
API
API
migration
IPMI
っと、思っています。
47. A B
ノード A と ノード B でクラスタを構成
「A」「B」2つの Serf ノードがあと
します。実際のサーバ上では、 serf
エージェントが動作しています。
48. A B
serf join
Agent joining: [B]
Initiating push/pull sync with: B
initiating push/pull sync
ノード A と ノード B でクラスタを構成
クラスタ構成時、“serf join” というイ
ベントを起こします。何かしら、特
別なプログラムを起動させる必要は
ありません。 A が B に対してクラス
タの参加 ( push と pull の同期初期
化 ) を要請。要は友達リクエストです。
49. A B
serf join
Agent joining: [B]
Initiating push/pull sync with: B
initiating push/pull sync
Responding push/pull sync
Responding to push/pull sync with: A
B は A の要求に応答すると、A に対し
てレスポンスを返します。
※ serf は暗号化設定すると、暗号鍵
が一致しないノードとは繋がりません。
50. A B
serf join
Agent joining: [B]
Initiating push/pull sync with: B
initiating push/pull sync
Responding push/pull sync
Responding to push/pull sync with: A
EventMemberJoin: B EventMemberJoin: A
A B
A に B の応答が届くと、メンバー参加
( MemberJoin ) というイベントが同時
に発生します。
A は B を、B は A を認識します。
51. A BInitiating push/pull sync with: B Responding to push/pull sync with: A
initiating push/pull sync
Responding push/pull sync
そしてお互いをメンバとして認識した
クラスタが構成されます。友達同士、
ふたりは プ… Serf ☆ クラスタ!
52. A B Initiating push/pull sync with: AResponding to push/pull sync with: B
initiating push/pull sync
Responding push/pull sync
クラスタ構成後は、
53. A BInitiating push/pull sync with: B Responding to push/pull sync with: A
initiating push/pull sync
Responding push/pull sync
相互にお互いの情報を確認しあいます。
54. A B
Agent joining: [?] C
ノード C が仲間になりたがってこっちを見ている!
serf join では、新しいノード C がクラスタに
参加するとき、A と B 、どちらに
join 宣言をしたらいいでしょうか?
答えは、A ・ B どちらでも大丈夫。
なぜなら、A と B でイベントを同期
するので「友達の友達は友達」にな
るからです。
?
55. A B
Agent joining: [A]
Initiating push/pull sync with: A
initiating push/pull sync
C
ノード C が仲間になりたがってこっちを見ている!
serf join
ここでは C が Aに join を試みます。
56. A B
Agent joining: [A]
Initiating push/pull sync with: A
Responding to push/pull sync with: C
initiating push/pull sync Responding push/pull sync
C
ノード C が仲間になりたがってこっちを見ている!
serf join
A が C に応答すると・・・
57. A B
Agent joining: [A]
Initiating push/pull sync with: B
Responding to push/pull sync with: C
initiating push/pull sync Responding push/pull sync
C
ノード C が仲間になりたがってこっちを見ている!
serf join
EventMemberJoin: B
EventMemberJoin: A
EventMemberJoin: CEventMemberJoin: C
メンバ参加のイベント
が、3ノード同時に発生
A … C は新しい友達
B … C は新しい友達
C … A ・B は新しい友達
58. A B
C
ノード C が仲間に加わった!
EventMemberJoin: B
EventMemberJoin: A
EventMemberJoin: CEventMemberJoin: C
これでクラスタが構成
されました。あとは、
ノードが何台増えよう
とも、同じような動作
で十数台、百台とス
ケールしていきます。
66. A B
C
B は死んでしまった! 突然の死!
Initiating push/pull sync with: B
initiating push/pull sync
死んでも直ぐに検出できません。
B に対するチェックが応答しなくなる
までは、まだクラスタ上では生きてい
るとみなされています。このタイムラ
グは、秒単位で変更可能です。
STATUS: 死野球しようぜ!
67. A B
C
B は死んでしまった! 突然の死!
Initiating push/pull sync with: B
initiating push/pull sync
返事が無い。
ただの屍のようだ
EventMemberFailed: B
EventMemberFailed: B
STATUS: 死
B の応答がないため、A と C は、B の
障害が発生したとみなすイベント
member-failed を発行します。
68. A B
C
復活の時を待ち続けます
serf: attempting reconnect to
serf: attempting reconnect to
STATUS: 死
fail した段階では、まだクラスタとし
て認識されます。A・C 双方から、定
期的に B に対してチェックが走りま
す。ネットワーク障害の可能性もあ
りますし、B が復活したら、B は何も
しなくてもクラスタに復旧します。
一番良い
ザオリクを
頼む…
69. A B
C
反応が無い場合は切り離します
serf: attempting reconnect to
serf: attempting reconnect to
もうだめかも
分からんね
EventMemberLeap: B
EventMemberLeap: B
STATUS: 死
一番良い
ザオリクを
頼む…
規定時間(初期値は 24 時間後、変更可
能) の応答がなければ、対象メンバを
ノードから削除する member-leap イ
ベントが発生します。
109. ・ Web UI
・ HTTP API
・ DNS interface
・ Blocking Query ( via RPC )
・ envconsul
Consul のデータは Consul Server が
機能として持つ キーバリューストア
(KVS) 上に保管されています。この
データは、どのインターフェースを
使っても参照する事ができます。
126. クライアント
( consul node)
サーバ
( consul server)
A B
クライアントはサーバと情報を比較
サーバに“C”は不要と伝える
A B
あいよ
クライアントとサーバで情報が同期。この性質がアンチエントロピー
127. クライアント
( consul node)
サーバ
( consul server)
A B
クライアントはサーバと情報を比較
サーバに“C”は不要と伝える
A B
あいよ
クライアントとサーバで情報が同期。この性質がアンチエントロピー
決定権を持つのはクライアント側。
サービス状況の「変化」をトリガとし
様々な動作を起こすことができる。
130. クライアント
( consul node)
サーバ
( consul server)
A’ B
A’ B
あいよ
クライアントがサーバに命令します。
このような一連の動作が、Consul の
Anti-Entropy です。
更に、KVS の値の変化をトリガとし、
様々なアクションを起こせます。
131. Consul の 4 つの特長
ここから先も、座学的です。
実際に使うとき以外であれば、読み飛
ばしていただいて構いません。Zzz..
135. サービス検出
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
153. envconsulとは
https://github.com/hashicorp/envconsul
➡ The Twelve-Factor App
• http://12factor.net/config
• “Apps sometimes store config as contain in the
code. This is a violation of tweleve-factor, which
requires strict separation of config from code”
コードから設定を厳密に分離することが必要
機能
➡ 環境変数の取得・設定が出来る
• 例:アプリケーション展開時、ホスト名取得
➡ バックエンドに consul の KVS を使用
➡ KVS のデータ変更をトリガに任意コマンドを実行
• 例:zabbix.conf の Server を書き換え agent restart
Heroku ライクなものを、自分の環境でも
実現しようとするもの。設定変更と同時
に、アプリケーションの再起動まで。
Hashicorp 社では、自社利用のアプリに
対して環境変数のセットアップに使用し
ている(blogより)
154. envconsulを使うには
Golang 開発環境
➡ $ git clone git@github.com:armon/consul-kv.git
➡ $ git clone git@github.com:hashicorp/envconsul.git
➡ $ go build
現時点ではバイナリは配付されていませ
ん。ソースからの構築が必須です。
build 時に consul-kv が必要です。
$ ./envconsul
Usage: envconsul [options] prefix child...
Sets environmental variables for the child process by reading
K/V from Consul's K/V store with the given prefix.
Options:
-addr="127.0.0.1:8500": consul HTTP API address with port
-dc="": consul datacenter, uses local if blank
-errexit=false: exit if there is an error watching config keys
-reload=false: if set, restarts the process when config changes
-sanitize=true: turn invalid characters in the key into underscores
-upcase=true: make all environmental variable keys uppercase
156. KVS
envconsul envconsul envconsul
• Web UI
• HTTP API
• DNS
更新
Consul が、KVS のデータ変化をトリガに、envconsul を使役する
参照
インターフェース
Consul Server
Consul Node Consul Node Consul Node
KVS 上のデータを参照
環境変数を更新
165. ニンゲンヤメマスカ?
Do you resign as human being?
It is necessary to answer the following questions to start OPERATION.
YES はい
はい YES
運用を続けるためには、イカの質問に答える必要があります。
176. Dedicated to Our Future Pioneers.
Where Do We Come From? What Are We? Where Are We Going?
ご注文は
監視自動化ですか?
S e r f と C o n s u l を 使 っ て 運 用 を 楽 し く す る 話
今日のまとめ
Serf や Consul は軽量シンプルでありながら、
様々なシーンに利用できる。また、他の類似
ツールを使うよりも利用の敷居が低い。
そのため、運用・開発にかかわらず、日々の
煩雑な業務から解放されるので、各々が取り
組む本来業務、とりわけ人間しかできない事
に集中できる。結果、仕事が楽しくなる。
Conclusion
177. Dedicated to Our Future Pioneers.
Where Do We Come From? What Are We? Where Are We Going?
ご注文は
監視自動化ですか?
S e r f と C o n s u l を 使 っ て 運 用 を 楽 し く す る 話
この時間で得られたもの
・Serf や Consul とは ○○ です(キリッ と言える
・Serf や Consul の使い所をイメージできる
・運用や開発における自動化のための仕組み
(ロジック)を自分で考えることができる
Conclusion
簡単軽量なオーケストレーションツールであり、
APIを使ってツールを結びつけ、自動化を支援する。
178. Dedicated to Our Future Pioneers.
Where Do We Come From? What Are We? Where Are We Going?
ご注文は
監視自動化ですか?
S e r f と C o n s u l を 使 っ て 運 用 を 楽 し く す る 話
質疑応答
Conclusion
本日の資料は、コマンドの
reference などを追記し、
後日公開します。
http://slideshare.net/zembutsu/
179. Dedicated to Our Future Pioneers.
Where Do We Come From? What Are We? Where Are We Going?
ご注文は
監視自動化ですか?
S e r f と C o n s u l を 使 っ て 運 用 を 楽 し く す る 話
本日のフォローアップ
・ twitter
@zembutsu mention 下しあ
・ Google Plus
https://plus.google.com/+MasahitoZembutsu
・ Google Group とか・・?
なにか作ります・・・?
Conclusion
本日の資料は、コマンドの
reference などを追記し、
後日公開します。
http://slideshare.net/zembutsu/
Google Gropups に作りました!
“オーケストレーションツールの部屋”
180. IS THE ORDER AN AUTOMATION OF OPERATION AND MONITORING?
Masahito Zembutsu @zembutsu
Jun 22, 2014 , July Tech Festa#jtf2014
AITT Shinagawa Seaside, Tokyo
ご注文は
監視自動化ですか?
S e r f と C o n s u l を 使 っ て 運 用 を 楽 し く す る 話