SlideShare a Scribd company logo
1 of 64
Download to read offline
Masahito Zembutsu @zembutsu 
Technology Evangelist; Creationline , Inc. 
Shinagawa, Tokyo, 11 Dec 2014 
Code the Clouds Mix-up Vol. 2 
Serf / Consul 入門 ~仕事を楽しくしよう~ Why I need serf and Consul?
Serf / Consul 入門 3 / 65 
今日の内容 
• 
運用だが、もう人間は限界かもしれない 
• 
Serf や Consul は何を解決しますか? 
• 
Serf 入門 
• 
Consul 入門 
Topics of today.
クラウド・コンピューティング 
Cloud Computing
計画 
発注 
納品 
設置 
設定 
監視 
運用開始
計画 
発注 
納品 
設置 
設定 
監視 
運用開始 
実際のフローでは、ここがネックになりがち・・・ 
数週~1ヶ月程度 
few weeks or a month
計画 
発注 
納品 
設置 
設定 
監視 
運用開始 
クラウド・コンピューティング基盤 
Infrastructure as a Service 
1クリック 
one click
計画 
発注納品 
監視 
運用開始 
クラウド・コンピューティング基盤 
Infrastructure as a Service 
数分~10分 
few minutes
Serf / Consul 入門 9 / 65 
開発サイドに福音 
• 
すぐにサーバーが欲しい 
➡ 
クラウド・コンフィグレーション基盤の普及 
• 
すぐにサービスを展開したい 
➡ 
構成管理ツールやデプロイツールの普及 
• 
Chef, Ansible, Puppet, Salt Stack, Capistrano … etc
計画 
発注納品 
監視 
運用開始 
クラウド・コンピューティング基盤 Infrastructure as a Service 
数分~10分 
few minutes 
発注納品 
発注納品 
継続的デリバリー 継続的デプロイ 継続的インテグレーション
ふたつの新しい課題 
Two New Issues
1. 管理の煩雑さ 
Cumbersome Management
水 金 地 火 木 土 天 冥 海 
Mercury 
Venus 
Earth 
Mars 
Jupiter 
Saturn 
Uranus 
Pluto 
Neptune 
Hyperion
2.障害対応の迅速化 
Trouble Shooting and Quick Operations
監視 
Monitoring 
状況判断 
Situation Analysis 
行動 
Action
計画 
発注納品 
監視 
運用開始 
発注納品 
発注納品 
監視 
運用 
監視 運用 
クラウドによって環境の準備が迅速になったはず。 
しかし、台数の増加やシステム構成の複雑化によって、 
クラウドの価値を相殺しているのではないのか?
Serf / Consul 入門 17 / 65 
運用サイドに残る課題 
• 
動的に変化する環境 
➡ 
ホスト名・IPアドレスとサービスをどのように管理するか 
➡ 
構成図や手順書や不定期な見直し 
• 
求められる迅速な対応 
➡ 
現実世界と密接にかかわるサービスは、速やかな復旧が必要 
➡ 
管理対象のサーバーやサービス数の増加・複雑化
導き出される結論は
運用だが、 もう人間は限界かもしれない
Serf / Consul 入門 20 / 65 
解決したい事は? 
• 
動的に変わる環境の管理を楽にしたい 
➡ 
サーバの追加・停止のタイミングで 監視や設定を連動したい 
• 
迅速に行動を起こしたい 
➡ 
一次対応レベルの作業も、すぐにこなしたい 
➡ 
複数台の環境にまたがる作業を、スムーズに対応したい
Serf 
http://serfdom.io/
Consul 
http://www.consul.io/
Serf や Consul は 何を解決してくれますか?
答え:既存の業務フローを 変更せずに省力化します。
Serf / Consul 入門 25 / 65 
Serfの役割 
• 
メンバ管理 
➡ 
serf エージェント間でクラスタを構成し、情報を保持 
• 
イベントの共有 
➡ 
クラスタ全体で、イベントを瞬時に共有 
• 
トリガ機能 
➡ 
イベント発生時に、任意のコマンドをクラスタ全体で実行
Serf / Consul 入門 26 / 65 
Consulの役割 
• 
サービス・レベルの管理とイベント同期 
➡ 
Serf と同じ事を、ウェブやデータベース等のサービスが対象 
• 
インターフェースの提供 
➡ 
HTTP ( REST API ) 
➡ 
DNS 
➡ 
Key Value Storage
Serf / Consul 入門 27 / 65 
Serf / Consul 比較 
Serf vs. Consul 
http://www.serfdom.io/intro/vs-consul.html 
Serf 
Consul 
目的 
サービス検出とオーケストレーション 
サービス検出と設定 
ヘルスチェック 
低レベル(ノード死活監視) 
サービス単位で高度な調整 
キーバリューストア 
なし 
あり 
メンバーシップ 
ノード単位 
サービス単位 
Web API 
なし 
あり 
DNS インターフェース 
なし 
あり 
アーキテクチャ 
AP 型 ( 一貫性重視、可用性を犠牲 ) 
CP 型 ( 可用性より一貫性重視 )
Serf / Consul 入門 28 / 65 
誰が作っているの? 
• 
Hashicorp 社 
➡ 
https://www.hashicorp.com/ 
• 
Vagrant 
• 
Packer 
• 
Terraform 
• 
Serf 
• 
Consul 
• 
ATLAS ← New!
Serf 超入門
Serf / Consul 入門 30 / 65 
Serf とは何ですか? 
• 
メンバ管理とイベント同期のためのツール 
➡ 
サーバを必要としないクラスタを、 相互通信するゴシップ・プロトコルによって構成 
• 
すぐに動く・使える 
➡ 
バイナリ1個を置くだけで、依存関係が無い 
➡ 
低い学習コスト(シェルスクリプト程度の知識で使える)
Serf / Consul 入門 31 / 65 
ご注意ください 
• 
Serf の機能は Consul に統合されつつあります 
• 
しかし、試すべき理由が3つあります 
➡ 
機能が少ないため、 いきなり Consul を触るよりも、Serf のほうが扱いやすいです 
➡ 
クライアント・サーバ型ではないため、 簡単にクラスタを構成できます 
➡ 
1つのツールとして完成形になりつつあります
Serf / Consul 入門 32 / 65 
Serf は何ができますか? 
• 
一斉にコマンドを実行します ( exec , query ) 
➡ 
shutdown –h now 
➡ 
service httpd restart 
➡ 
service network restart 
➡ 
iptables -A INPUT -p tcp -s XXX --dport 80 -j DROP 
• 
監視登録やアプリケーションの設定変更をします
Serf / Consul 入門 33 / 65 
動作環境は? 
• 
複数の OS やアーキテクチャに対応しています 
➡ 
Linux ( 32bit, 64bit, ARM ) 
➡ 
FreeBSD ( 32bit, 64bit,ARM ) 
➡ 
MacOS X ( 32bit, 64bit ) 
➡ 
OpenBSD ( 32bit, 64bit ) 
➡ 
Windows ( 32bit, 64bit )
Serf / Consul 入門 34 / 65 
セットアップ方法は?( Linux ) 
• 
バイナリを入手し、サーバ上に配置します 
➡ 
wget -O 0.6.3_linux_amd64.zip ¥ https://dl.bintray.com/mitchellh/serf/0.6.3_linux_amd64.zip 
➡ 
unzip ./0.6.3_linux_amd64.zip 
➡ 
mv ./serf /usr/local/bin/serf 
➡ 
serf version Serf v0.6.3 Agent Protocol: 4 (Understands back to: 2)
Serf / Consul 入門 35 / 65 
Serf をどう動かしますか? 
• 
“serf” コマンドをエージェントとして起動します 
➡ 
serf agent & 
==> Starting Serf agent... 
==> Starting Serf agent RPC... 
==> Serf agent running! 
Node name: 'sion.pocketstudio.net' 
Bind addr: '0.0.0.0:7946' 
RPC addr: '127.0.0.1:7373' 
Encrypted: false 
Snapshot: false 
Profile: lan 
==> Log data will now stream in as it occurs: 
2014/12/06 14:28:33 [INFO] agent: Serf agent starting 
2014/12/06 14:28:33 [INFO] serf: EventMemberJoin: sion.pocketstudio.net 
$ serf members 
sion.pocketstudio.net 10.0.2.15:7946 alive
Serf / Consul 入門 36 / 65 
クラスタはどうしますか? 
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 
• 
serf join コマンドを使います 
➡ 
serf join <IP addr>
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: C 
EventMemberJoin: C
Serf / Consul 入門 38 / 65 
どんなイベントがありますか? 
• 
メンバ管理系 
➡ 
member-join … 参加 
➡ 
member-fail … 障害 
➡ 
member-leave … 離脱 
➡ 
member-leap … 削除 
➡ 
member-update … 更新 
• 
ユーザによる任意発生 
➡ 
event … 一方的に実行するだけ 
➡ 
query … 結果も取得する
Serf / Consul 入門 39 / 65 
イベントで何かするには? 
• 
“イベント・ハンドラ”を指定します 
➡ 
serf agent –event-handler=“event.sh” 
• 
シェルスクリプト 
• 
Perl, Ruby, Python … 
• 
バイナリ 
• 
その他の構成管理ツールとの連携
Serf / Consul 入門 40 / 65 
MuninやZabbix
Serf / Consul 入門 41 / 65 
LVS 
#!/bin/sh while read line do echo ${line} HOSTNAME=`echo ${line} | cut -d ' ' -f 1` ADDRESS=`echo ${line} | cut -d ' ' -f 2` ROLE=`echo ${line} | cut -d ' ' -f 3` case ${SERF_EVENT} in "member-join") if [ "${ROLE}" = "webapp" ] ; then ipvsadm -a -t 192.168.39.1:80 -r ${ADDRESS}:80 -g fi;; "member-leave" | "member-failed") if [ "${ROLE}" = "webapp" ] ; then ipvsadm -d -t 192.168.39.1:80 -r ${ADDRESS}:80 fi;; ¥?) echo "other";; esac break done exit 0 
# ipvsadm -A -t 192.168.39.1:80 -s rr 
# ipvsadm -a -t 192.168.39.1:80 -r 192.168.39.11:80 -g 
# ipvsadm -a -t 192.168.39.1:80 -r 192.168.39.12:80 -g 
# ipvsadm -Ln 
IP Virtual Server version 1.2.1 (size=4096) 
Prot LocalAddress:Port Scheduler Flags 
-> RemoteAddress:Port Forward Weight ActiveConn InActConn 
TCP 192.168.39.1:80 rr 
-> 192.168.39.11:80 Route 1 0 0 
-> 192.168.39.12:80 Route 1 0 0
Serf / Consul 入門 42 / 65 
イベントを判別するには? 
• 
環境変数を使います。 
#!/bin/sh 
echo 
echo "$0 triggered!" 
echo 
echo "SERF_EVENT is ${SERF_EVENT}" 
echo "SERF_SELF_NAME is ${SERF_SELF_NAME}" 
echo "SERF_SELF_ROLE is ${SERF_SELF_ROLE}" 
echo "SERF_SELF_TAG is ${SERF_SELF_TAG}" 
echo "SERF_TAG_ROLE is ${SERF_TAG_ROLE}" 
echo "SERF_TAG_STATUS is ${SERF_TAG_STATUS}" 
echo "SERF_USER_EVENT is ${SERF_USER_EVENT}" 
echo "SERF_USER_LTIME is ${SERF_USER_LTIME}" 
echo "SERF_QUERY_NAME is ${SERF_QUERY_NAME}" 
echo "SERF_QUERY_LTIME is ${SERF_QUERY_LTIME}" 
echo 
echo "BEGIN event data" 
while read line; do 
echo $line 
done 
echo "END event data" 
echo "$0 finished!" 
echo 
Event Handlers - Serf by HashiCorp 
https://www.serfdom.io/docs/agent/event-handlers.html 
• 
これを使えば・・・ 
➡ 
監視の自動追加・削除 
➡ 
設定変更の自動化 
➡ 
アイディア次第で何でも!
Serf / Consul 入門 43 / 65 
詳しくは… 
• 
https://serfdom.io/ 
• 
Re: ご注文は自動化ですか?[2] http://www.slideshare.net/zembutsu/re-is-the-order-an-automation-2nd 
Software Design 
2014年9月・10月号 
“オーケストレーションツールSerf・Consul入門”
Consul 超入門
Serf / Consul 入門 45 / 65 
Consulが必要な理由 
• 
Serf は万能ではありません 
➡ 
イベント発生のトリガは2種類でした 
• 
Serf クラスタへの参加や離脱 
• 
任意のタイミングでのイベント実行 
➡ 
ウェブサーバの応答やDB サーバ障害をトリガにしたい時は? 
• 
Serf で行えますが、非常に面倒です 
• 
そんな時は Consul です
Serf / Consul 入門 46 / 65 
Consulはどう使いますか? 
• 
サーバ環境とクライアント環境を作ります 
➡ 
Consul サーバ 
• 
HTTP、DNS、WEB UI のインターフェースを持ちます 
• 
KVS を持ち、Consul クライアントの状態を保持します 
• 
状況変化をトリガとして、コマンドを実行できます 
• 
Raft プロトコルで可用性を高めています 
➡ 
Consul クライアント 
• 
consul エージェントでサービスを定義して、監視します
クライアント 
( consul node) 
サーバ 
( consul server)
クライアント 
( consul node) 
サーバ ( consul server) 
A 
B 
C 
新しいサービスが追加される 
まだサーバは何も知らない
クライアント 
( consul node) 
サーバ 
( consul server) 
A 
B 
C 
エージェントは 
サーバに情報を伝えると 
新しいサービスが追加される
クライアント 
( consul node) 
サーバ 
( consul server) 
A 
B 
C 
エージェントは サーバに情報を伝えると 
はじめて同期する 
A 
B 
C
クライアント 
( consul node) 
サーバ 
( consul server) 
A 
B 
もし、サービスが消えると 
A 
B 
C
クライアント 
( consul node) 
サーバ ( consul server) 
A 
B 
クライアントはサーバと情報を比較 サーバに“C”は不要と伝える 
A 
B 
C
クライアント 
( consul node) 
サーバ 
( consul server) 
A 
B 
クライアントはサーバと情報を比較 
サーバに“C”は不要と伝える 
A 
B 
あいよ
クライアント 
( consul node) 
サーバ ( consul server) 
A 
B 
クライアントはサーバと情報を比較 サーバに“C”は不要と伝える 
A 
B 
あいよ 
クライアントとサーバで情報が同期。この性質がアンチエントロピー
クライアント 
( consul node) 
サーバ 
( consul server) 
A 
B 
クライアントはサーバと情報を比較 サーバに“C”は不要と伝える 
A 
B 
あいよ 
クライアントとサーバで情報が同期。この性質がアンチエントロピー 
決定権を持つのは、クライアント側 
サービス状況の変更をトリガとして 
ただちに様々な動作を行える
Serf / Consul 入門 56 / 65 
どうやって使いますか? 
• 
consul にオプションを付けます 
➡ 
サーバ 
• 
$ consul agent -server -bootstrap ¥ -dc=local -node=consul1 -data-dir=/tmp/consul 
➡ 
クライアント 
• 
consul agent -dc=local -node=consul2 ¥ -data-dir=/tmp/consul2 -join=192.168.39.5
Serf / Consul 入門 57 / 65 
サービスはどう定義しますか? 
• 
JSON形式のファイルを用意します。 
{ 
"service": { 
"name": "mysql", 
"port": 3306, 
"check": { 
"script": "/usr/bin/mysqladmin -h 127.0.0.1 ping > /dev/null 2>&1", 
"interval": "10s" 
} 
} 
}
Serf / Consul 入門 58 / 65 
状態を知るには? 
• 
Web UI 
• 
HTTP API 
➡ 
JSON 
➡ 
REST API 
• 
DNS
Serf / Consul 入門 59 / 65 
DNSをどう使いますか? 
• 
正常なサービスを応答します 
➡ 
dig <サービス名>.<ノード名>.<データセンタ名>.consul 
• 
どんなシーンで使えますか? 
➡ 
DNS ラウンドロビン 
➡ 
名前解決によるマスター・スレーブの切り分け 
➡ 
などなど
Serf / Consul 入門 60 / 65 
イベントをトリガとするには? 
• 
“consul watch”を使います 
➡ 
status が変化したタイミングで任意のコマンドを実行します 
➡ 
consul watch –http-addr=127.0.0.1:8500 ¥ -type=service –service=mysql /opt/action.sh 
Watches - Consul 
http://www.consul.io/docs/agent/watches.html 
$ curl -s http://127.0.0.1:8500/v1/health/checks/mysql | jq '.[] | .Status' 
"passing"
Serf / Consul 入門 61 / 65 
設定ファイルの動的反映とは? 
• 
consul-template を使います 
➡ 
git clone https://github.com/hashicorp/consul-template.git 
➡ 
cd consul-template 
➡ 
make 
➡ 
sudo cp ./bin/consul-template /usr/local/bin/consul-template 
• 
用途 
➡ 
設定ファイルをテンプレートを元に自動生成・コマンド実行 
➡ 
例:リバースプロキシ用の設定ファイル作成後、デーモン再起動
Serf / Consul 入門 62 / 65 
詳しくは… 
• 
https://consul.io/ 
• 
Re: ご注文は自動化ですか?[2] http://www.slideshare.net/zembutsu/re-is-the-order-an-automation-2nd 
Software Design 
2014年9月・10月号 
“オーケストレーションツールSerf・Consul入門”
まとめ
Serf / Consul 入門 64 / 65 
仕事が楽になる、楽しくなる 
• 
なぜ Serf や Consul なのか? 
➡ 
複数台のサーバ管理が前提になる時代の課題を解決 
• 
開発は、構成管理ツール ( Chef, Puppet, Ansible 等 ) 
• 
運用でも、効率的に行う必要性 
➡ 
人間がボトルネックになっている現状認識 
• 
時間が掛かる 
• 
間違える 
➡ 
監視一次対応(判断不要な手順書)レベルの自動化につながる 
• 
実際には作り込みが必要だし、パーツも足りない
“すべての障害を 生まれる前に消し去りたい” この願いを叶えるには? 
To Be Continued …

More Related Content

What's hot

分散システムについて語らせてくれ
分散システムについて語らせてくれ分散システムについて語らせてくれ
分散システムについて語らせてくれKumazaki Hiroki
 
Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門Etsuji Nakai
 
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48Preferred Networks
 
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルドBuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルドAkihiro Suda
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Akihiro Suda
 
アーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーションアーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーションMasahiko Sawada
 
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティスAmazon Web Services Japan
 
Redmine にいろいろ埋め込んでみた
Redmine にいろいろ埋め込んでみたRedmine にいろいろ埋め込んでみた
Redmine にいろいろ埋め込んでみたKohei Nakamura
 
コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門Kohei Tokunaga
 
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)NTT DATA Technology & Innovation
 
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織Takafumi ONAKA
 
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)NTT DATA Technology & Innovation
 
インフラエンジニアの綺麗で優しい手順書の書き方
インフラエンジニアの綺麗で優しい手順書の書き方インフラエンジニアの綺麗で優しい手順書の書き方
インフラエンジニアの綺麗で優しい手順書の書き方Shohei Koyama
 
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)NTT DATA Technology & Innovation
 
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】Masahito Zembutsu
 
「おうちクラウド」が今熱い!
「おうちクラウド」が今熱い!「おうちクラウド」が今熱い!
「おうちクラウド」が今熱い!Hirotaka Sato
 
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)NTT DATA Technology & Innovation
 
Kubernetesを使う上で抑えておくべきAWSの基礎概念
Kubernetesを使う上で抑えておくべきAWSの基礎概念Kubernetesを使う上で抑えておくべきAWSの基礎概念
Kubernetesを使う上で抑えておくべきAWSの基礎概念Shinya Mori (@mosuke5)
 
ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計Yoshinori Matsunobu
 

What's hot (20)

分散システムについて語らせてくれ
分散システムについて語らせてくれ分散システムについて語らせてくれ
分散システムについて語らせてくれ
 
Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門
 
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
 
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルドBuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルド
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
アーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーションアーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーション
 
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
 
Redmine にいろいろ埋め込んでみた
Redmine にいろいろ埋め込んでみたRedmine にいろいろ埋め込んでみた
Redmine にいろいろ埋め込んでみた
 
コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門
 
Docker Compose 徹底解説
Docker Compose 徹底解説Docker Compose 徹底解説
Docker Compose 徹底解説
 
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
 
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
 
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
 
インフラエンジニアの綺麗で優しい手順書の書き方
インフラエンジニアの綺麗で優しい手順書の書き方インフラエンジニアの綺麗で優しい手順書の書き方
インフラエンジニアの綺麗で優しい手順書の書き方
 
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
 
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
 
「おうちクラウド」が今熱い!
「おうちクラウド」が今熱い!「おうちクラウド」が今熱い!
「おうちクラウド」が今熱い!
 
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
 
Kubernetesを使う上で抑えておくべきAWSの基礎概念
Kubernetesを使う上で抑えておくべきAWSの基礎概念Kubernetesを使う上で抑えておくべきAWSの基礎概念
Kubernetesを使う上で抑えておくべきAWSの基礎概念
 
ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計
 

Similar to Serf / Consul 入門 ~仕事を楽しくしよう~

Consulによる運用自律化体験ハンズオンとConsul活用事例紹介
Consulによる運用自律化体験ハンズオンとConsul活用事例紹介Consulによる運用自律化体験ハンズオンとConsul活用事例紹介
Consulによる運用自律化体験ハンズオンとConsul活用事例紹介cloudconductor
 
Serfが面白いと俺の中で話題にwwwwww
Serfが面白いと俺の中で話題にwwwwwwSerfが面白いと俺の中で話題にwwwwww
Serfが面白いと俺の中で話題にwwwwwwMasahito Zembutsu
 
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい) 泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい) Akihiro Kuwano
 
Consul は 全自動オーケストレーションの 夢を見るか?
Consul は 全自動オーケストレーションの 夢を見るか?Consul は 全自動オーケストレーションの 夢を見るか?
Consul は 全自動オーケストレーションの 夢を見るか?Uchio Kondo
 
ご注文は監視自動化ですか?
ご注文は監視自動化ですか?ご注文は監視自動化ですか?
ご注文は監視自動化ですか?Masahito Zembutsu
 
Serfが面白いと俺の中で話題にwwwwww 【改訂版】
Serfが面白いと俺の中で話題にwwwwww 【改訂版】Serfが面白いと俺の中で話題にwwwwww 【改訂版】
Serfが面白いと俺の中で話題にwwwwww 【改訂版】Masahito Zembutsu
 
マイクロサービス時代の生存戦略 with HashiCorp
マイクロサービス時代の生存戦略 with HashiCorpマイクロサービス時代の生存戦略 with HashiCorp
マイクロサービス時代の生存戦略 with HashiCorpMasahito Zembutsu
 
インフラエンジニアのためのcassandra入門
インフラエンジニアのためのcassandra入門インフラエンジニアのためのcassandra入門
インフラエンジニアのためのcassandra入門Akihiro Kuwano
 
Tizen 2.0 alpha でサポートされなかった native api
Tizen 2.0 alpha でサポートされなかった native apiTizen 2.0 alpha でサポートされなかった native api
Tizen 2.0 alpha でサポートされなかった native apiNaruto TAKAHASHI
 
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力ThinReports
 
ネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chefネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chefnpsg
 
もう XAMPP / MAMP はいらない!
Vagrant で作る PHP 開発環境
もう XAMPP / MAMP はいらない!
Vagrant で作る PHP 開発環境もう XAMPP / MAMP はいらない!
Vagrant で作る PHP 開発環境
もう XAMPP / MAMP はいらない!
Vagrant で作る PHP 開発環境Masashi Shinbara
 
(続) はじめてのCloud Foundry
(続) はじめてのCloud Foundry(続) はじめてのCloud Foundry
(続) はじめてのCloud FoundryTomohiro Ichimura
 
Automation Anywhere Enterprise A2019.16 新機能紹介
Automation Anywhere Enterprise A2019.16 新機能紹介Automation Anywhere Enterprise A2019.16 新機能紹介
Automation Anywhere Enterprise A2019.16 新機能紹介Automation Anywhere Japan
 
イベント駆動プログラミングとI/O多重化
イベント駆動プログラミングとI/O多重化イベント駆動プログラミングとI/O多重化
イベント駆動プログラミングとI/O多重化Gosuke Miyashita
 
クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)
クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)
クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)Daisuke Ikeda
 
Firefox OS and Web server
Firefox OS and Web serverFirefox OS and Web server
Firefox OS and Web serverTomoaki Konno
 

Similar to Serf / Consul 入門 ~仕事を楽しくしよう~ (20)

Consulによる運用自律化体験ハンズオンとConsul活用事例紹介
Consulによる運用自律化体験ハンズオンとConsul活用事例紹介Consulによる運用自律化体験ハンズオンとConsul活用事例紹介
Consulによる運用自律化体験ハンズオンとConsul活用事例紹介
 
Serfが面白いと俺の中で話題にwwwwww
Serfが面白いと俺の中で話題にwwwwwwSerfが面白いと俺の中で話題にwwwwww
Serfが面白いと俺の中で話題にwwwwww
 
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい) 泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
 
Consul は 全自動オーケストレーションの 夢を見るか?
Consul は 全自動オーケストレーションの 夢を見るか?Consul は 全自動オーケストレーションの 夢を見るか?
Consul は 全自動オーケストレーションの 夢を見るか?
 
ご注文は監視自動化ですか?
ご注文は監視自動化ですか?ご注文は監視自動化ですか?
ご注文は監視自動化ですか?
 
Serfが面白いと俺の中で話題にwwwwww 【改訂版】
Serfが面白いと俺の中で話題にwwwwww 【改訂版】Serfが面白いと俺の中で話題にwwwwww 【改訂版】
Serfが面白いと俺の中で話題にwwwwww 【改訂版】
 
Fluentd meetup #2
Fluentd meetup #2Fluentd meetup #2
Fluentd meetup #2
 
マイクロサービス時代の生存戦略 with HashiCorp
マイクロサービス時代の生存戦略 with HashiCorpマイクロサービス時代の生存戦略 with HashiCorp
マイクロサービス時代の生存戦略 with HashiCorp
 
インフラエンジニアのためのcassandra入門
インフラエンジニアのためのcassandra入門インフラエンジニアのためのcassandra入門
インフラエンジニアのためのcassandra入門
 
Tottoruby 20110903
Tottoruby 20110903Tottoruby 20110903
Tottoruby 20110903
 
Tizen 2.0 alpha でサポートされなかった native api
Tizen 2.0 alpha でサポートされなかった native apiTizen 2.0 alpha でサポートされなかった native api
Tizen 2.0 alpha でサポートされなかった native api
 
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
 
ネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chefネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chef
 
もう XAMPP / MAMP はいらない!
Vagrant で作る PHP 開発環境
もう XAMPP / MAMP はいらない!
Vagrant で作る PHP 開発環境もう XAMPP / MAMP はいらない!
Vagrant で作る PHP 開発環境
もう XAMPP / MAMP はいらない!
Vagrant で作る PHP 開発環境
 
(続) はじめてのCloud Foundry
(続) はじめてのCloud Foundry(続) はじめてのCloud Foundry
(続) はじめてのCloud Foundry
 
Automation Anywhere Enterprise A2019.16 新機能紹介
Automation Anywhere Enterprise A2019.16 新機能紹介Automation Anywhere Enterprise A2019.16 新機能紹介
Automation Anywhere Enterprise A2019.16 新機能紹介
 
イベント駆動プログラミングとI/O多重化
イベント駆動プログラミングとI/O多重化イベント駆動プログラミングとI/O多重化
イベント駆動プログラミングとI/O多重化
 
クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)
クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)
クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)
 
Firefox OS and Web server
Firefox OS and Web serverFirefox OS and Web server
Firefox OS and Web server
 
serverless
serverlessserverless
serverless
 

More from Masahito Zembutsu

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

More from Masahito Zembutsu (20)

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

Recently uploaded

SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 

Recently uploaded (10)

SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 

Serf / Consul 入門 ~仕事を楽しくしよう~

  • 1. Masahito Zembutsu @zembutsu Technology Evangelist; Creationline , Inc. Shinagawa, Tokyo, 11 Dec 2014 Code the Clouds Mix-up Vol. 2 Serf / Consul 入門 ~仕事を楽しくしよう~ Why I need serf and Consul?
  • 2. Serf / Consul 入門 3 / 65 今日の内容 • 運用だが、もう人間は限界かもしれない • Serf や Consul は何を解決しますか? • Serf 入門 • Consul 入門 Topics of today.
  • 4. 計画 発注 納品 設置 設定 監視 運用開始
  • 5. 計画 発注 納品 設置 設定 監視 運用開始 実際のフローでは、ここがネックになりがち・・・ 数週~1ヶ月程度 few weeks or a month
  • 6. 計画 発注 納品 設置 設定 監視 運用開始 クラウド・コンピューティング基盤 Infrastructure as a Service 1クリック one click
  • 7. 計画 発注納品 監視 運用開始 クラウド・コンピューティング基盤 Infrastructure as a Service 数分~10分 few minutes
  • 8. Serf / Consul 入門 9 / 65 開発サイドに福音 • すぐにサーバーが欲しい ➡ クラウド・コンフィグレーション基盤の普及 • すぐにサービスを展開したい ➡ 構成管理ツールやデプロイツールの普及 • Chef, Ansible, Puppet, Salt Stack, Capistrano … etc
  • 9. 計画 発注納品 監視 運用開始 クラウド・コンピューティング基盤 Infrastructure as a Service 数分~10分 few minutes 発注納品 発注納品 継続的デリバリー 継続的デプロイ 継続的インテグレーション
  • 12. 水 金 地 火 木 土 天 冥 海 Mercury Venus Earth Mars Jupiter Saturn Uranus Pluto Neptune Hyperion
  • 14. 監視 Monitoring 状況判断 Situation Analysis 行動 Action
  • 15. 計画 発注納品 監視 運用開始 発注納品 発注納品 監視 運用 監視 運用 クラウドによって環境の準備が迅速になったはず。 しかし、台数の増加やシステム構成の複雑化によって、 クラウドの価値を相殺しているのではないのか?
  • 16. Serf / Consul 入門 17 / 65 運用サイドに残る課題 • 動的に変化する環境 ➡ ホスト名・IPアドレスとサービスをどのように管理するか ➡ 構成図や手順書や不定期な見直し • 求められる迅速な対応 ➡ 現実世界と密接にかかわるサービスは、速やかな復旧が必要 ➡ 管理対象のサーバーやサービス数の増加・複雑化
  • 19. Serf / Consul 入門 20 / 65 解決したい事は? • 動的に変わる環境の管理を楽にしたい ➡ サーバの追加・停止のタイミングで 監視や設定を連動したい • 迅速に行動を起こしたい ➡ 一次対応レベルの作業も、すぐにこなしたい ➡ 複数台の環境にまたがる作業を、スムーズに対応したい
  • 22. Serf や Consul は 何を解決してくれますか?
  • 24. Serf / Consul 入門 25 / 65 Serfの役割 • メンバ管理 ➡ serf エージェント間でクラスタを構成し、情報を保持 • イベントの共有 ➡ クラスタ全体で、イベントを瞬時に共有 • トリガ機能 ➡ イベント発生時に、任意のコマンドをクラスタ全体で実行
  • 25. Serf / Consul 入門 26 / 65 Consulの役割 • サービス・レベルの管理とイベント同期 ➡ Serf と同じ事を、ウェブやデータベース等のサービスが対象 • インターフェースの提供 ➡ HTTP ( REST API ) ➡ DNS ➡ Key Value Storage
  • 26. Serf / Consul 入門 27 / 65 Serf / Consul 比較 Serf vs. Consul http://www.serfdom.io/intro/vs-consul.html Serf Consul 目的 サービス検出とオーケストレーション サービス検出と設定 ヘルスチェック 低レベル(ノード死活監視) サービス単位で高度な調整 キーバリューストア なし あり メンバーシップ ノード単位 サービス単位 Web API なし あり DNS インターフェース なし あり アーキテクチャ AP 型 ( 一貫性重視、可用性を犠牲 ) CP 型 ( 可用性より一貫性重視 )
  • 27. Serf / Consul 入門 28 / 65 誰が作っているの? • Hashicorp 社 ➡ https://www.hashicorp.com/ • Vagrant • Packer • Terraform • Serf • Consul • ATLAS ← New!
  • 29. Serf / Consul 入門 30 / 65 Serf とは何ですか? • メンバ管理とイベント同期のためのツール ➡ サーバを必要としないクラスタを、 相互通信するゴシップ・プロトコルによって構成 • すぐに動く・使える ➡ バイナリ1個を置くだけで、依存関係が無い ➡ 低い学習コスト(シェルスクリプト程度の知識で使える)
  • 30. Serf / Consul 入門 31 / 65 ご注意ください • Serf の機能は Consul に統合されつつあります • しかし、試すべき理由が3つあります ➡ 機能が少ないため、 いきなり Consul を触るよりも、Serf のほうが扱いやすいです ➡ クライアント・サーバ型ではないため、 簡単にクラスタを構成できます ➡ 1つのツールとして完成形になりつつあります
  • 31. Serf / Consul 入門 32 / 65 Serf は何ができますか? • 一斉にコマンドを実行します ( exec , query ) ➡ shutdown –h now ➡ service httpd restart ➡ service network restart ➡ iptables -A INPUT -p tcp -s XXX --dport 80 -j DROP • 監視登録やアプリケーションの設定変更をします
  • 32. Serf / Consul 入門 33 / 65 動作環境は? • 複数の OS やアーキテクチャに対応しています ➡ Linux ( 32bit, 64bit, ARM ) ➡ FreeBSD ( 32bit, 64bit,ARM ) ➡ MacOS X ( 32bit, 64bit ) ➡ OpenBSD ( 32bit, 64bit ) ➡ Windows ( 32bit, 64bit )
  • 33. Serf / Consul 入門 34 / 65 セットアップ方法は?( Linux ) • バイナリを入手し、サーバ上に配置します ➡ wget -O 0.6.3_linux_amd64.zip ¥ https://dl.bintray.com/mitchellh/serf/0.6.3_linux_amd64.zip ➡ unzip ./0.6.3_linux_amd64.zip ➡ mv ./serf /usr/local/bin/serf ➡ serf version Serf v0.6.3 Agent Protocol: 4 (Understands back to: 2)
  • 34. Serf / Consul 入門 35 / 65 Serf をどう動かしますか? • “serf” コマンドをエージェントとして起動します ➡ serf agent & ==> Starting Serf agent... ==> Starting Serf agent RPC... ==> Serf agent running! Node name: 'sion.pocketstudio.net' Bind addr: '0.0.0.0:7946' RPC addr: '127.0.0.1:7373' Encrypted: false Snapshot: false Profile: lan ==> Log data will now stream in as it occurs: 2014/12/06 14:28:33 [INFO] agent: Serf agent starting 2014/12/06 14:28:33 [INFO] serf: EventMemberJoin: sion.pocketstudio.net $ serf members sion.pocketstudio.net 10.0.2.15:7946 alive
  • 35. Serf / Consul 入門 36 / 65 クラスタはどうしますか? 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 • serf join コマンドを使います ➡ serf join <IP addr>
  • 36. 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: C EventMemberJoin: C
  • 37. Serf / Consul 入門 38 / 65 どんなイベントがありますか? • メンバ管理系 ➡ member-join … 参加 ➡ member-fail … 障害 ➡ member-leave … 離脱 ➡ member-leap … 削除 ➡ member-update … 更新 • ユーザによる任意発生 ➡ event … 一方的に実行するだけ ➡ query … 結果も取得する
  • 38. Serf / Consul 入門 39 / 65 イベントで何かするには? • “イベント・ハンドラ”を指定します ➡ serf agent –event-handler=“event.sh” • シェルスクリプト • Perl, Ruby, Python … • バイナリ • その他の構成管理ツールとの連携
  • 39. Serf / Consul 入門 40 / 65 MuninやZabbix
  • 40. Serf / Consul 入門 41 / 65 LVS #!/bin/sh while read line do echo ${line} HOSTNAME=`echo ${line} | cut -d ' ' -f 1` ADDRESS=`echo ${line} | cut -d ' ' -f 2` ROLE=`echo ${line} | cut -d ' ' -f 3` case ${SERF_EVENT} in "member-join") if [ "${ROLE}" = "webapp" ] ; then ipvsadm -a -t 192.168.39.1:80 -r ${ADDRESS}:80 -g fi;; "member-leave" | "member-failed") if [ "${ROLE}" = "webapp" ] ; then ipvsadm -d -t 192.168.39.1:80 -r ${ADDRESS}:80 fi;; ¥?) echo "other";; esac break done exit 0 # ipvsadm -A -t 192.168.39.1:80 -s rr # ipvsadm -a -t 192.168.39.1:80 -r 192.168.39.11:80 -g # ipvsadm -a -t 192.168.39.1:80 -r 192.168.39.12:80 -g # ipvsadm -Ln IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 192.168.39.1:80 rr -> 192.168.39.11:80 Route 1 0 0 -> 192.168.39.12:80 Route 1 0 0
  • 41. Serf / Consul 入門 42 / 65 イベントを判別するには? • 環境変数を使います。 #!/bin/sh echo echo "$0 triggered!" echo echo "SERF_EVENT is ${SERF_EVENT}" echo "SERF_SELF_NAME is ${SERF_SELF_NAME}" echo "SERF_SELF_ROLE is ${SERF_SELF_ROLE}" echo "SERF_SELF_TAG is ${SERF_SELF_TAG}" echo "SERF_TAG_ROLE is ${SERF_TAG_ROLE}" echo "SERF_TAG_STATUS is ${SERF_TAG_STATUS}" echo "SERF_USER_EVENT is ${SERF_USER_EVENT}" echo "SERF_USER_LTIME is ${SERF_USER_LTIME}" echo "SERF_QUERY_NAME is ${SERF_QUERY_NAME}" echo "SERF_QUERY_LTIME is ${SERF_QUERY_LTIME}" echo echo "BEGIN event data" while read line; do echo $line done echo "END event data" echo "$0 finished!" echo Event Handlers - Serf by HashiCorp https://www.serfdom.io/docs/agent/event-handlers.html • これを使えば・・・ ➡ 監視の自動追加・削除 ➡ 設定変更の自動化 ➡ アイディア次第で何でも!
  • 42. Serf / Consul 入門 43 / 65 詳しくは… • https://serfdom.io/ • Re: ご注文は自動化ですか?[2] http://www.slideshare.net/zembutsu/re-is-the-order-an-automation-2nd Software Design 2014年9月・10月号 “オーケストレーションツールSerf・Consul入門”
  • 44. Serf / Consul 入門 45 / 65 Consulが必要な理由 • Serf は万能ではありません ➡ イベント発生のトリガは2種類でした • Serf クラスタへの参加や離脱 • 任意のタイミングでのイベント実行 ➡ ウェブサーバの応答やDB サーバ障害をトリガにしたい時は? • Serf で行えますが、非常に面倒です • そんな時は Consul です
  • 45. Serf / Consul 入門 46 / 65 Consulはどう使いますか? • サーバ環境とクライアント環境を作ります ➡ Consul サーバ • HTTP、DNS、WEB UI のインターフェースを持ちます • KVS を持ち、Consul クライアントの状態を保持します • 状況変化をトリガとして、コマンドを実行できます • Raft プロトコルで可用性を高めています ➡ Consul クライアント • consul エージェントでサービスを定義して、監視します
  • 46. クライアント ( consul node) サーバ ( consul server)
  • 47. クライアント ( consul node) サーバ ( consul server) A B C 新しいサービスが追加される まだサーバは何も知らない
  • 48. クライアント ( consul node) サーバ ( consul server) A B C エージェントは サーバに情報を伝えると 新しいサービスが追加される
  • 49. クライアント ( consul node) サーバ ( consul server) A B C エージェントは サーバに情報を伝えると はじめて同期する A B C
  • 50. クライアント ( consul node) サーバ ( consul server) A B もし、サービスが消えると A B C
  • 51. クライアント ( consul node) サーバ ( consul server) A B クライアントはサーバと情報を比較 サーバに“C”は不要と伝える A B C
  • 52. クライアント ( consul node) サーバ ( consul server) A B クライアントはサーバと情報を比較 サーバに“C”は不要と伝える A B あいよ
  • 53. クライアント ( consul node) サーバ ( consul server) A B クライアントはサーバと情報を比較 サーバに“C”は不要と伝える A B あいよ クライアントとサーバで情報が同期。この性質がアンチエントロピー
  • 54. クライアント ( consul node) サーバ ( consul server) A B クライアントはサーバと情報を比較 サーバに“C”は不要と伝える A B あいよ クライアントとサーバで情報が同期。この性質がアンチエントロピー 決定権を持つのは、クライアント側 サービス状況の変更をトリガとして ただちに様々な動作を行える
  • 55. Serf / Consul 入門 56 / 65 どうやって使いますか? • consul にオプションを付けます ➡ サーバ • $ consul agent -server -bootstrap ¥ -dc=local -node=consul1 -data-dir=/tmp/consul ➡ クライアント • consul agent -dc=local -node=consul2 ¥ -data-dir=/tmp/consul2 -join=192.168.39.5
  • 56. Serf / Consul 入門 57 / 65 サービスはどう定義しますか? • JSON形式のファイルを用意します。 { "service": { "name": "mysql", "port": 3306, "check": { "script": "/usr/bin/mysqladmin -h 127.0.0.1 ping > /dev/null 2>&1", "interval": "10s" } } }
  • 57. Serf / Consul 入門 58 / 65 状態を知るには? • Web UI • HTTP API ➡ JSON ➡ REST API • DNS
  • 58. Serf / Consul 入門 59 / 65 DNSをどう使いますか? • 正常なサービスを応答します ➡ dig <サービス名>.<ノード名>.<データセンタ名>.consul • どんなシーンで使えますか? ➡ DNS ラウンドロビン ➡ 名前解決によるマスター・スレーブの切り分け ➡ などなど
  • 59. Serf / Consul 入門 60 / 65 イベントをトリガとするには? • “consul watch”を使います ➡ status が変化したタイミングで任意のコマンドを実行します ➡ consul watch –http-addr=127.0.0.1:8500 ¥ -type=service –service=mysql /opt/action.sh Watches - Consul http://www.consul.io/docs/agent/watches.html $ curl -s http://127.0.0.1:8500/v1/health/checks/mysql | jq '.[] | .Status' "passing"
  • 60. Serf / Consul 入門 61 / 65 設定ファイルの動的反映とは? • consul-template を使います ➡ git clone https://github.com/hashicorp/consul-template.git ➡ cd consul-template ➡ make ➡ sudo cp ./bin/consul-template /usr/local/bin/consul-template • 用途 ➡ 設定ファイルをテンプレートを元に自動生成・コマンド実行 ➡ 例:リバースプロキシ用の設定ファイル作成後、デーモン再起動
  • 61. Serf / Consul 入門 62 / 65 詳しくは… • https://consul.io/ • Re: ご注文は自動化ですか?[2] http://www.slideshare.net/zembutsu/re-is-the-order-an-automation-2nd Software Design 2014年9月・10月号 “オーケストレーションツールSerf・Consul入門”
  • 63. Serf / Consul 入門 64 / 65 仕事が楽になる、楽しくなる • なぜ Serf や Consul なのか? ➡ 複数台のサーバ管理が前提になる時代の課題を解決 • 開発は、構成管理ツール ( Chef, Puppet, Ansible 等 ) • 運用でも、効率的に行う必要性 ➡ 人間がボトルネックになっている現状認識 • 時間が掛かる • 間違える ➡ 監視一次対応(判断不要な手順書)レベルの自動化につながる • 実際には作り込みが必要だし、パーツも足りない