狠狠撸

狠狠撸Share a Scribd company logo
Tech-circle #4
Consulハンズオンセミナー
悲しいお知らせです
From: xxxxx
To: Tech-Circle
Hi TechCircle,
Stickers are on the way!
Xxxxx
という返事が。
Feb. 20th
我々、TechCircleチームは、皆様に喜んで頂くため
Conslのステッカーが欲しいと開発元へ依頼しました。
_人人人人人人人人人人人人_
> 間に合いませんでした <
>返信あったの2月20日だよ!<
 ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y ̄
Who am I?
“Name” : “ ”わたなべ はやと ,
“Age” : “33” ,
“Conpany” : “ ”株式会社 アーベルソフト ,
“Family” : [ “ ”家内1 , “ ”一姫二太郎 ] ,
“Account” : [
{
“Twitter” : “@_BSmile_”, ※アンダースコア忘れずに。
“github” : “https://github.com/bsmile/” ,
“qiita” : “http://qiita.com/_BSmile_”
}
Agenda
1. Consulについて
2. Consulを体験してみよう
3. LT でConsulについて深く?カジュアルに
4. 最後に
What's Consul
1. Consulについて
1. Consulについて
Consulとは
hashicorp社によって作成された
4つの機能をもった
クラスタ管理型オーケストレーションツール
1. Consulについて
Consulとは
? 必要とする物は
ConsulのBinaryファイル1つのみ
(web-uiは別途必要)
? Consulは
自身のシステムにAgentという形で
潜り込みServerへ情報を送る事が出来る
? 状態を参照する為のweb画面は、オマケ程度
代表する4つそれぞれの機能を紹介していきます。
Consul Agent (Client)
DC2 DC3DC1
1. Consulについて
1.1 Service Discovery
Consulでサービスの監視を行う事と、登録されたサービスをDNSや
HTTPを介して情報を共有する事が可能になります。
http
db
file
DNS Request
HTTP Request Consul
Server
1. Consulについて
1.1 Service Discovery [どういったサービス監視?]
例: redisチェック
{
"service": {
"name": "redis",
"tags": ["master"],
"address": "127.0.0.1",
"port": 8000,
"checks": [
{
"script": "/usr/local/bin/check_redis.py",
"interval": "10s"
}
]
}
}
http://www.consul.io/docs/agent/services.html
1. Consulについて
1.1 Service Discovery [検索]
例: DNSでの問い合わせによるサービスの確認
ubuntu@docker:~$ dig @172.17.0.2 -p 8600 redis.service.consul
ANY
– 略 --
;; ANSWER SECTION:
redis.service.consul. 0 IN A 172.17.0.3
– 略 --
1. Consulについて
1.1 Service Discovery [検索]
例: HTTPでの問い合わせによるサービスの確認
ubuntu@docker:~$ curl -s -X GET
http://172.17.0.2:8500/v1/health/checks/http | jq ".[]"
{
"ServiceName": "http",
"ServiceID": "http",
"Output": "200n",
"Notes": "",
"Status": "passing",
"Name": "Service 'http' check",
"CheckID": "service:http",
"Node": "01412ac451a2"
}
1. Consulについて
1.2 FailureDetection(Health Checking)
Consul ClientからServerに対して監視しているサービスやノードの状況を送
信する事が可能。
また、この「状況」に応じてConsul Agentはジョブを実行する事ができます。
Consul Agent
(Server)
Consul Agent (Client)
http
db
file
Response Code
check
Query check
Disk Free(df) check
Watch: Disk Extend
例) Webサーバが停止した時
Consul-Agent側で
webサーバをリスタートする
スクリプトを実行させる
※ ハンズオンで実施します。
1. Consulについて
1.2 FailureDetection(Health Checking)
Consul Agent
(Server)
Consul Agent (Client)
http
1. Consulについて
1.2 FailureDetection(Health Checking)
200
200
Not Responding
if code -ne 200 ; then
echo “Caution!”
web-restart.sh
fi
Restart※
※ Consulでは、execというオプション指定で任意のコマン
ドをリーモート実行する事が可能
 例) consul exec -node="ノード名" df -h
Consul Agent
(Server)
Consul Agent (Client)
http
1. Consulについて
1.2 FailureDetection(Health Checking)
Not Responding
情報を送信 if code -ne 200 ; then
echo “Caution!”
web-restart.sh
fi
Consul Serverの役割は
 1. クライアントの情報を保持
 2. クライアントの情報を複製
 3. クラスタ化し、管理を容易にする
watch(状態監視)
1. Consulについて
1.3 MultiDatacenter
Consul Agent (Client)
DC2 DC3DC1
http
db
file
Consul
Server
新たなリージョンが誕生した場合で
も、Consul Server間通信が可能な
NW構成となっていれば、容易に拡
張する事が可能です。
※ 一般的なインターネットグローバ
ル回線を使用している場合はまた
別の話。
対応方法は、consul起動時のオプ
ションに[ -dc newDC ]を追加すれ
ば良いだけ。
(デフォルトはDC1)
1. Consulについて
4つの機能について
1.4 KeyValueStore
ConsulではKVSを実装しており、呼び出しにはHTTP
APIを利用します。
作成方法は2つで
1. HTTP APIを使用
2. web-ui上からの作成
が可能となります。
また、KVSの変化をトリガーとさせる事も可能です。
Agenda
1. Consulについて
2. Consulを体験してみよう
4. 最後に
3. LT でConsulについて深く?カジュアルに
Ubuntu Server 14.04 LTS
Docker
Container1
(consul-sv1)
Consul
Agent
Server WebUI
Container2
(consul-cl1)
Consul
Agent
Client nginx
2. Consulを体験してみよう
[演習1]Consul ServerとClientを作成し、Clientをクラスタ
ノードへJoinさせてみよう
Join
Ubuntu Server 14.04 LTS
Docker
Container1
(consul-sv1)
Consul
Agent
Server WebUI
Container2
(consul-cl1)
Consul
Agent
Client nginx
2. Consulを体験してみよう
[演習2]Consulクライアント上のnginxが機能停止した事を
サーバが検出し、新しくwebサーバを立ち上げてみよう
Container3
(consul-fo)
Consul
Agent
Client nginx
Leave
Join
Ubuntu Server 14.04 LTS
Docker
Container1
(consul-sv1)
Consul
Agent
Server WebUI
Container2
(consul-cl1)
Consul
Agent
Client nginx
2. Consulを体験してみよう
[演習]Consulクライアント上のwebサーバが機能停止した事を
   Consulサーバが検出し、新しくwebサーバを立ち上げる
Container3
(consul-fo)
Consul
Agent
Client nginx
[ハンズオン手順] Qiita参照
[Phase1.] Consul立ち上げから状態の確認まで 20min.
1 Master Container作成
2 Consul Agent起動
2.1 Consul-Server立ち上げ
2.1.1 Consul Server設定
2.1.2 Consulサーバ IP確認
2.1.3 Consul Agent Server起動前準備
2.1.4 Consul Agent( Server / WebUI )起動
2.2 Consul-Client立ち上げ
2.2.1 Consul Client設定
[Phase2.] 超簡易オーケストレーション体験 20min.
3 Nginx停止時の自動フェイルオーバー
3.1 Consul Server設定
3.2 フェイルオーバー確認
Consul
container
[ Phase1.Consul立ち上げから状態の確認まで 20min. ]
Consul-server
web-ui8500/TCP8500/TCP
Consul-client
nginx80/TCP10080/TCP
22/TCP
1. UbuntuサーバへSSHで接続
2. Consulバイナリが入った
  dockerコンテナをDL
3. Consulコンテナを
 server/client用に2台作成?起動
4. Consul web-ui / nginxの
確認はwebブラウザにて実施
Consul web-ui
→ http://IP:8500/
nginx
→ http://IP:10080/
2. Consulを体験してみよう
SSH コンソール
Webブラウザ
2. Consulを体験してみよう
[ Phase2. 超簡易オーケストレーション体験 20min. ]
Consul-server
web-ui8500/TCP8500/TCP
New Consul-client
nginx80/TCP10080/TCP
22/TCP
1. UbuntuサーバへはSSHで接続
2. Consul Serverへwatch
  コマンドを仕込む
3. Consul Clientのnginx停止
4. お茶を飲む
5. Consul web-ui / nginxを
確認。webブラウザにて実施
Consul web-ui
→ http://IP:8500/
nginx
→ http://IP:10080/
SSH コンソール
Webブラウザ
Let's try
準備編:   goo.gl/LdIFFI
ハンズオン編: goo.gl/grRFLE
Extra try!
Extra Stage: goo.gl/6Lnztp
Agenda
1. Consulについて
2. Consulを体験してみよう
4. 最後に
3. LT でConsulについて深く?カジュアルに
Automated a workflow of
the release using Consul
koudaiiiさん
Serfのことを時々でいいので
思い出してください
poisoninghostさん
Consul TemplateでMuninの
監視設定を自動化
zembutsuさん
Consulにコントリビュートした話 foostanさん
2. LT でConsulについて深く?カジュアルに。
Agenda
1. Consulについて
2. Consulを体験してみよう
4. 最後に
3. LT でConsulについて深く?カジュアルに
次回予告
6月に#5 Tech-Circleを予定。
次回は、5月にVersion3.0が登場予定の
アレ。
次回予告
Z
本日はありがとうございました。
最後に 次回以降のテーマ決めや、今後の運営の参考のため ア
ンケートにご協力お願いします。

More Related Content

Tech-circle #4 Consulハンズオンセミナー