Submit Search
Upload
Consul は 全自動オーケストレーションの 夢を見るか?
•
38 likes
•
19,895 views
Uchio Kondo
Follow
@ペパボテックカンファレンス http://pepabo.connpass.com/event/13208/
Read less
Read more
Technology
Report
Share
Report
Share
1 of 79
Download now
Download to read offline
Recommended
Serf2Excel - Serf を実運用に活かす話 + Consul もあるよ
Serf2Excel - Serf を実運用に活かす話 + Consul もあるよ
Masahito Zembutsu
Consulを頑張って理解する
Consulを頑張って理解する
Masakazu Watanabe
consul & consul-alerts を使った監視システム (hbstyle-2015-01-08)
consul & consul-alerts を使った監視システム (hbstyle-2015-01-08)
YOSHIKAWA Ryota
インフラ自動化とHashicorp tools
インフラ自動化とHashicorp tools
Uchio Kondo
Serfが面白いと俺の中で話題にwwwwww 【改訂版】
Serfが面白いと俺の中で話題にwwwwww 【改訂版】
Masahito Zembutsu
Serf / Consul 入門 ~仕事を楽しくしよう~
Serf / Consul 入門 ~仕事を楽しくしよう~
Masahito Zembutsu
Ruby way-openstack.keynote
Ruby way-openstack.keynote
Uchio Kondo
イベント駆動プログラミングとI/O多重化
イベント駆動プログラミングとI/O多重化
Gosuke Miyashita
Recommended
Serf2Excel - Serf を実運用に活かす話 + Consul もあるよ
Serf2Excel - Serf を実運用に活かす話 + Consul もあるよ
Masahito Zembutsu
Consulを頑張って理解する
Consulを頑張って理解する
Masakazu Watanabe
consul & consul-alerts を使った監視システム (hbstyle-2015-01-08)
consul & consul-alerts を使った監視システム (hbstyle-2015-01-08)
YOSHIKAWA Ryota
インフラ自動化とHashicorp tools
インフラ自動化とHashicorp tools
Uchio Kondo
Serfが面白いと俺の中で話題にwwwwww 【改訂版】
Serfが面白いと俺の中で話題にwwwwww 【改訂版】
Masahito Zembutsu
Serf / Consul 入門 ~仕事を楽しくしよう~
Serf / Consul 入門 ~仕事を楽しくしよう~
Masahito Zembutsu
Ruby way-openstack.keynote
Ruby way-openstack.keynote
Uchio Kondo
イベント駆動プログラミングとI/O多重化
イベント駆動プログラミングとI/O多重化
Gosuke Miyashita
Re: ご注文は自動化ですか?[2]
Re: ご注文は自動化ですか?[2]
Masahito Zembutsu
minneで学ぶクラウド脳
minneで学ぶクラウド脳
Uchio Kondo
今日から業務で使える17の運用系Linuxツール、そして円環の理
今日から業務で使える17の運用系Linuxツール、そして円環の理
Masahito Zembutsu
Chef の気まぐれ環境構築 〜季節の Capistrano を添えて〜 #jawsug
Chef の気まぐれ環境構築 〜季節の Capistrano を添えて〜 #jawsug
Takeshi Komiya
ChefとPuppetの比較
ChefとPuppetの比較
Sugawara Genki
Ansible 入門 #01 (初心者向け)
Ansible 入門 #01 (初心者向け)
Taro Hirose
Puppet on AWS
Puppet on AWS
Sugawara Genki
人間たちとsystemd
人間たちとsystemd
Uchio Kondo
Puppetのススメ
Puppetのススメ
Gosuke Miyashita
Em synchrony について
Em synchrony について
Tomoya Kawanishi
Perl 非同期プログラミング
Perl 非同期プログラミング
lestrrat
意識の低い自動化
意識の低い自動化
greenasparagus
Griffon10 in groovy_fx
Griffon10 in groovy_fx
kimukou_26 Kimukou
Ansible ではじめるインフラのコード化入門
Ansible ではじめるインフラのコード化入門
Sho A
Task Spooler を試した
Task Spooler を試した
y-uti
JIT のコードを読んでみた
JIT のコードを読んでみた
y-uti
Itcamp長崎2012 capistrano
Itcamp長崎2012 capistrano
kumachang_LL
中国Firefox OS勉強会 3rd 組み込み屋さんから見たFirefox OS
中国Firefox OS勉強会 3rd 組み込み屋さんから見たFirefox OS
Masami Yabushita
UnrealEngineが5日間でasm.js化できたと聞いた俺たちは…
UnrealEngineが5日間でasm.js化できたと聞いた俺たちは…
Kei Nakazawa
initとプロセス再起動
initとプロセス再起動
Takashi Takizawa
Mautic Meetup Tokyo #3 データベース不要CMS:Gravの紹介
Mautic Meetup Tokyo #3 データベース不要CMS:Gravの紹介
Kohei Nishikawa
How to manage Cakephp @CakePHP_Fukuoka_2
How to manage Cakephp @CakePHP_Fukuoka_2
ichikaway
More Related Content
What's hot
Re: ご注文は自動化ですか?[2]
Re: ご注文は自動化ですか?[2]
Masahito Zembutsu
minneで学ぶクラウド脳
minneで学ぶクラウド脳
Uchio Kondo
今日から業務で使える17の運用系Linuxツール、そして円環の理
今日から業務で使える17の運用系Linuxツール、そして円環の理
Masahito Zembutsu
Chef の気まぐれ環境構築 〜季節の Capistrano を添えて〜 #jawsug
Chef の気まぐれ環境構築 〜季節の Capistrano を添えて〜 #jawsug
Takeshi Komiya
ChefとPuppetの比較
ChefとPuppetの比較
Sugawara Genki
Ansible 入門 #01 (初心者向け)
Ansible 入門 #01 (初心者向け)
Taro Hirose
Puppet on AWS
Puppet on AWS
Sugawara Genki
人間たちとsystemd
人間たちとsystemd
Uchio Kondo
Puppetのススメ
Puppetのススメ
Gosuke Miyashita
Em synchrony について
Em synchrony について
Tomoya Kawanishi
Perl 非同期プログラミング
Perl 非同期プログラミング
lestrrat
意識の低い自動化
意識の低い自動化
greenasparagus
Griffon10 in groovy_fx
Griffon10 in groovy_fx
kimukou_26 Kimukou
Ansible ではじめるインフラのコード化入門
Ansible ではじめるインフラのコード化入門
Sho A
Task Spooler を試した
Task Spooler を試した
y-uti
JIT のコードを読んでみた
JIT のコードを読んでみた
y-uti
Itcamp長崎2012 capistrano
Itcamp長崎2012 capistrano
kumachang_LL
中国Firefox OS勉強会 3rd 組み込み屋さんから見たFirefox OS
中国Firefox OS勉強会 3rd 組み込み屋さんから見たFirefox OS
Masami Yabushita
UnrealEngineが5日間でasm.js化できたと聞いた俺たちは…
UnrealEngineが5日間でasm.js化できたと聞いた俺たちは…
Kei Nakazawa
initとプロセス再起動
initとプロセス再起動
Takashi Takizawa
What's hot
(20)
Re: ご注文は自動化ですか?[2]
Re: ご注文は自動化ですか?[2]
minneで学ぶクラウド脳
minneで学ぶクラウド脳
今日から業務で使える17の運用系Linuxツール、そして円環の理
今日から業務で使える17の運用系Linuxツール、そして円環の理
Chef の気まぐれ環境構築 〜季節の Capistrano を添えて〜 #jawsug
Chef の気まぐれ環境構築 〜季節の Capistrano を添えて〜 #jawsug
ChefとPuppetの比較
ChefとPuppetの比較
Ansible 入門 #01 (初心者向け)
Ansible 入門 #01 (初心者向け)
Puppet on AWS
Puppet on AWS
人間たちとsystemd
人間たちとsystemd
Puppetのススメ
Puppetのススメ
Em synchrony について
Em synchrony について
Perl 非同期プログラミング
Perl 非同期プログラミング
意識の低い自動化
意識の低い自動化
Griffon10 in groovy_fx
Griffon10 in groovy_fx
Ansible ではじめるインフラのコード化入門
Ansible ではじめるインフラのコード化入門
Task Spooler を試した
Task Spooler を試した
JIT のコードを読んでみた
JIT のコードを読んでみた
Itcamp長崎2012 capistrano
Itcamp長崎2012 capistrano
中国Firefox OS勉強会 3rd 組み込み屋さんから見たFirefox OS
中国Firefox OS勉強会 3rd 組み込み屋さんから見たFirefox OS
UnrealEngineが5日間でasm.js化できたと聞いた俺たちは…
UnrealEngineが5日間でasm.js化できたと聞いた俺たちは…
initとプロセス再起動
initとプロセス再起動
Similar to Consul は 全自動オーケストレーションの 夢を見るか?
Mautic Meetup Tokyo #3 データベース不要CMS:Gravの紹介
Mautic Meetup Tokyo #3 データベース不要CMS:Gravの紹介
Kohei Nishikawa
How to manage Cakephp @CakePHP_Fukuoka_2
How to manage Cakephp @CakePHP_Fukuoka_2
ichikaway
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
ThinReports
[REV UP] あなたならどう使う?最新Azureレシピ for LINE Platform
[REV UP] あなたならどう使う?最新Azureレシピ for LINE Platform
拓将 平林
3分でサーバオペレーションコマンドを作る技術
3分でサーバオペレーションコマンドを作る技術
Kei IWASAKI
[Japan Tech summit 2017] DEP 005
[Japan Tech summit 2017] DEP 005
Microsoft Tech Summit 2017
ご注文は監視自動化ですか?
ご注文は監視自動化ですか?
Masahito Zembutsu
WTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniter
Masanori Oobayashi
hubotで快適BOT生活
hubotで快適BOT生活
Kazufumi Otani
サービスリリースから安定軌道に乗せるまでに行った開発施策
サービスリリースから安定軌道に乗せるまでに行った開発施策
Keiichi Hagiwara
キャバァーン! サツバツエアアイオー弐〇壱弐
キャバァーン! サツバツエアアイオー弐〇壱弐
Kei Nakazawa
Windows Azure PHP Tips
Windows Azure PHP Tips
Microsoft Openness Japan
OpenWhisk - Docker action で MeCab を動かす
OpenWhisk - Docker action で MeCab を動かす
KUNITO Atsunori
(続) はじめてのCloud Foundry
(続) はじめてのCloud Foundry
Tomohiro Ichimura
JS非同期処理のいま
JS非同期処理のいま
Masakazu Muraoka
FuelPHP活用事例
FuelPHP活用事例
Yusuke Naka
あなたの安心を高速に守る Container-based CI
あなたの安心を高速に守る Container-based CI
Wataru MIYAGUNI
PHPの今とこれから2020
PHPの今とこれから2020
Rui Hirokawa
request-specを利用していい感じにモックデータを作ってフロントエンド開発を楽にしたい!
request-specを利用していい感じにモックデータを作ってフロントエンド開発を楽にしたい!
Masato Noguchi
Async flow controll basic and practice
Async flow controll basic and practice
Masakazu Muraoka
Similar to Consul は 全自動オーケストレーションの 夢を見るか?
(20)
Mautic Meetup Tokyo #3 データベース不要CMS:Gravの紹介
Mautic Meetup Tokyo #3 データベース不要CMS:Gravの紹介
How to manage Cakephp @CakePHP_Fukuoka_2
How to manage Cakephp @CakePHP_Fukuoka_2
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
[REV UP] あなたならどう使う?最新Azureレシピ for LINE Platform
[REV UP] あなたならどう使う?最新Azureレシピ for LINE Platform
3分でサーバオペレーションコマンドを作る技術
3分でサーバオペレーションコマンドを作る技術
[Japan Tech summit 2017] DEP 005
[Japan Tech summit 2017] DEP 005
ご注文は監視自動化ですか?
ご注文は監視自動化ですか?
WTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniter
hubotで快適BOT生活
hubotで快適BOT生活
サービスリリースから安定軌道に乗せるまでに行った開発施策
サービスリリースから安定軌道に乗せるまでに行った開発施策
キャバァーン! サツバツエアアイオー弐〇壱弐
キャバァーン! サツバツエアアイオー弐〇壱弐
Windows Azure PHP Tips
Windows Azure PHP Tips
OpenWhisk - Docker action で MeCab を動かす
OpenWhisk - Docker action で MeCab を動かす
(続) はじめてのCloud Foundry
(続) はじめてのCloud Foundry
JS非同期処理のいま
JS非同期処理のいま
FuelPHP活用事例
FuelPHP活用事例
あなたの安心を高速に守る Container-based CI
あなたの安心を高速に守る Container-based CI
PHPの今とこれから2020
PHPの今とこれから2020
request-specを利用していい感じにモックデータを作ってフロントエンド開発を楽にしたい!
request-specを利用していい感じにモックデータを作ってフロントエンド開発を楽にしたい!
Async flow controll basic and practice
Async flow controll basic and practice
More from Uchio Kondo
ペパボのサービスとRuby
ペパボのサービスとRuby
Uchio Kondo
Puppet of-2015-forupload
Puppet of-2015-forupload
Uchio Kondo
Hashicorpツールズ
Hashicorpツールズ
Uchio Kondo
Drone.io のご紹介
Drone.io のご紹介
Uchio Kondo
ペパボ福岡支社におけるRubyの活用事例
ペパボ福岡支社におけるRubyの活用事例
Uchio Kondo
Testing in Sinatra
Testing in Sinatra
Uchio Kondo
Start-padrino
Start-padrino
Uchio Kondo
Rubyist started to learn Groovy - things important to leran new LL
Rubyist started to learn Groovy - things important to leran new LL
Uchio Kondo
otomodachi-kakumei
otomodachi-kakumei
Uchio Kondo
More from Uchio Kondo
(9)
ペパボのサービスとRuby
ペパボのサービスとRuby
Puppet of-2015-forupload
Puppet of-2015-forupload
Hashicorpツールズ
Hashicorpツールズ
Drone.io のご紹介
Drone.io のご紹介
ペパボ福岡支社におけるRubyの活用事例
ペパボ福岡支社におけるRubyの活用事例
Testing in Sinatra
Testing in Sinatra
Start-padrino
Start-padrino
Rubyist started to learn Groovy - things important to leran new LL
Rubyist started to learn Groovy - things important to leran new LL
otomodachi-kakumei
otomodachi-kakumei
Recently uploaded
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
iPride Co., Ltd.
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
iPride Co., Ltd.
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
Atomu Hidaka
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdf
furutsuka
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
danielhu54
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
Ryo Sasaki
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
osamut
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
sugiuralab
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
Shota Ito
Recently uploaded
(9)
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdf
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
Consul は 全自動オーケストレーションの 夢を見るか?
1.
GMO Pepabo, Inc. アドバンスドシニア 近藤うちお 2015/04/19
Pepabo Tech Conference Consul は 全自動オーケストレーションの 夢を見るか?
2.
me
3.
4.
Rubyist
5.
6.
From Fukuoka
7.
8.
自動化厨 DevOps er
9.
10.
デブオプスでCFPに応募しました 20I5.6.27 sat 10:00-17:00
@ Hakata!
11.
今日のテーマ
12.
Consul
13.
14.
Consul has multiple
components > サービスディスカバリ > ヘルスチェック > Key/Value Store > 複数データセンタ対応
15.
Consul has multiple
components > サービスディスカバリ > ヘルスチェック > Key/Value Store > 複数データセンタ対応
16.
Excuse > 0.5.0 の新機能については 全然紹介しません……
17.
Raft Consensus Algorithm
18.
Raft Consensus Algorithm
19.
執政官 Consul
20.
リーダー投票 http://ja.wikipedia.org/wiki/%E5%8F%A4%E4%BB%A3%E3%83%AD%E3%83%BC %E3%83%9E%E3%81%AE%E5%85%AC%E8%A1%86%E6%B5%B4%E5%A0%B4
21.
“– http://www.slideshare.net/pfi/raft-36155398 誤解を恐れずにザックリ説明すると Client からのリクエストを Leader
がシリアライズしてクラスタ内の 他のプロセスに同じ順序でばらまく。 その他の参考サイト: http://blog.obfuscatism.net/blog/2014/12/01/raft/ http://thesecretlivesofdata.com/raft/
22.
cf. Raftの実装 > いくつかある >
https://github.com/hashicorp/raft > Ruby は Celluloidプロジェクトの https://github.com/celluloid/floss が 良さそう
23.
Consulの インストールと 運用
24.
泥臭く、 嵌った点を共有します……
25.
ディレクトリルール > -config-dir= /etc/consul.d >
-data-dir= /var/consul/data > -ui-dir= /var/consul/web_ui > (プロセスはconsulユーザで動かす)
26.
rpm つくった > ドッカーでナウくビルドできます >
あえてサービスを含まない > http://qiita.com/udzura/items/38075556d7609abd210a
27.
consul agent -server >
スーパーバイザ∼ディー > 実際はpuppetのsupervisordモジュール経 由で設定している [program:consul_master] command=/usr/bin/consul agent -config-dir=/etc/consul.d numprocs=1 numprocs_start=0 priority=999 autostart=true autorestart=true startsecs=10 startretries=3 exitcodes=0,2 stopsignal=INT stopwaitsecs=10 user=consul redirect_stderr=true stdout_logfile=/var/log/supervisor/%(program_name)s.log stdout_logfile_maxbytes=50MB stdout_logfile_backups=10 stderr_logfile=/var/log/supervisor/consul_master/consul_master.err stderr_logfile_maxbytes=250MB stderr_logfile_backups=10 environment=GOMAXPROCS=4
28.
停止時にちゃんとleaveしてくれ > stopsignal=INT > INTで止めるとgracefulにクラスタを 抜けるので、正しく止める際の手順では 明示するのが良さそう >
TERMとかで止めるとクラスタに残る > 一応設定で変更可能 > https://www.consul.io/docs/agent/options.html#leave_on_terminate
29.
サーバの数 > 3以上、なるだけサーバにしている > "bootstrap_expect":
3 > https://www.consul.io/docs/internals/consensus.html
30.
-bootstrap(-expect)? > -bootstrap での起動は雑に試す時 >
本運用では -bootstrap-expectで > 「3台未満は冗長構成と言わない」 > 2台ではリーダーがいつまでも決まらない > Raft だから…… > http://thesecretlivesofdata.com/raft/ を 眺めて理解
31.
-serverとクライアント > 基本的に -server
で立ち上げる > 運用の都合上、台数が増減するもの はクライアントモードにしている > 万一落としたサーバがリーダーだったら、 リーダ不在期間が一瞬とは言え発生してし まう。なるべく減らしたい
32.
GOMAXPROCS > CPUと同数(4なら4) > Vagrant上では、ちゃんとVMに CPUを2以上割り当てないと 永遠にリーダーが交代し続けて 面倒なことに。 >
I/O APIC の有効化をしないとダメ (忘れがち) http://qiita.com/d_nishiyama85/items/c50c95795865ae7f714b
33.
“– https://groups.google.com/forum/#!msg/consul-tool/qewFEqgAoF8/ b9hxhmy1v6gJ The reason
we recommend setting GOMAXPROCS is to avoid potential starvation of the scheduler. … If a single goroutine blocks the scheduler it can cause degraded performance.
34.
vm.overcommit_memory=0 > 設定しないと、こう言う怖いログが出て 落ちる。-server の時のみ。 >
http://qiita.com/udzura/items/d24157a8d5ba6ab60ec0
35.
Programmable Consul
36.
consul watch
37.
consul watch とは >
consulサブコマンド > Consulでクラスタを組んでおけば、 色々なイベントを監視できる。 > 監視したいイベントを指定すると 特定のコマンドにJSONを渡せる。 > イベントが起こったらすぐ発火する。
38.
イベント一覧 > key: KVSの値 >
keyprefix: あるプレフィックス以下のKVSの値 > services: サービス全体の状態変更 > nodes: ノードの状態変更(追加削除) > service: 特定のサービスの変更 > checks: 特定のcheckの変更 > event: カスタムイベント
39.
実際は自分で consul watch せずにツールを噛ますことが多い
40.
ヘルスチェックのサマリを 通知
41.
consul-alerts > eventやcheckを監視して通知する デーモンを手軽に作れる
42.
Ikachanへの通知…… > カスタムコマンドが指定できる > カスタムコマンド作った >
https://github.com/udzura/consul-simple-notifier > 作ったけど大量のノード入れ替えの 際には厳しい……
43.
Slackへの通知 > 組み込みである > 組み込み、フォーマットがしょぼいのでPRした …… >
スルー😢 > ぼくのforkをビルドすればイケます
44.
ELBっぽい何か
45.
動的ロードバランサーと言う夢 > ロードバランサーには夢がある > NginxやPoundの設定を 動的書き換えとか >
mod/ngx_mrubyを使うとか
46.
> Automatic Load
Balancer > Serfでも無論できます > 「Webサーバの増減」なので もしかしたら、単にバックエンドの Nginxが死んだだけとかだとダメ…… > http://blog.glidenote.com/blog/2013/10/30/serf-haproxy/ Serf+HAProxyで作る
47.
consul- template
48.
consul-template > hashicorp公式 > consulのイベントを監視し、 サービス追加、ノード追加、 その他のタイミングでファイル更新 >
ノードの情報からテンプレートを作れる > 一緒にコマンドを打てる(reloadとか) https://github.com/hashicorp/consul-template
49.
具体的な奴 > Solrのクラスタを組みたい > 前段のLBはNginxにした >
バックエンドのSolrスレーブは 横にスケールさせたい…… > ポチポチと追加する?
50.
こう言うテンプレート upstream solr_slaves { {{range
service "solr@pepabo-dc" "passing"}} server {{.Address}}:{{.Port}};{{end}} } server { listen 8983; server_name _; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Server $host; location / { proxy_pass http://solr_slaves; } }
51.
こう言うテンプレート upstream solr_slaves { {{range
service "solr@pepabo-dc" "passing"}} server {{.Address}}:{{.Port}};{{end}} } server { listen 8983; server_name _; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Server $host; location / { proxy_pass http://solr_slaves; } }
52.
こうじゃ $ /usr/local/bin/consul-template -consul
127.0.0.1:8500 -template '/usr/local/consul-templates/nginx-solr.conf.ctmpl: /etc/nginx/dynamic-conf.d/solr.conf: systemctl reload nginx' -log-level debug …… 長さは、厳しい……
53.
こう言うのができる upstream solr_slaves { server
10.0.12.34:8983; server 10.0.12.56:8983; server 10.0.12.78:8983; } server { listen 8983; server_name _; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Server $host; location / { proxy_pass http://solr_slaves; } }
54.
通知する > 変更したら通知して欲しい > シェルとかでラッパーを噛ませば良し
55.
良かったこと > 動的にメンバを追加削除できる (少なくともAPI的なキックポイント がある) > ヘルスチェックをしてくれる >
この2点の要件を難なく満たす 動的LBが、結構あっさりと作れるぞ?
56.
厳しいなと思うこと > Goのテンプレート記法慣れなすぎる > ピンポイントでLBとかに使うのは いいけど……、 >
あんまり凝ると無限に consul-templateの デーモンができるのでは……
57.
そして伝説へ……
58.
Populus
59.
60.
populus > Consul event
definition DSL (仮) > Senatus Populusque Romanus から取った > 名作ゲームとは無関係です……
61.
Consulと以下のことをします > consul watch
プロセスの立ち上げ と監視 > master node に一台だけ立ち上げ > イベントごとの処理を定義するDSL > 通知、ファイル生成、コマンド発行 ……ぐらいはする
62.
具体的なDSL
63.
中身 > specinfra で リモートコマンド を発行 >
ぼくもspecinfra一派になりました > open3でconsulプロセスを立ち上げて監視 > なるべくなるべく標準ライブラリ > Threadやinstance_evalがいっぱいだ
64.
課題 > まだ consul
watch -type event しか対応 していない……………… > せっかくのConsulなのに単一のマスターノード が必要。いいのかな…… > Consulなので、アクティブスタンバイ構成にするのは楽 ではある > なんかロバスト感に不安はある…… > 枯れてない、どころか俺が作った
65.
demo https://cloud.githubusercontent.com/assets/91011/7214167/8127b948- e5d9-11e4-9fe3-6be611cd47af.gif
66.
67.
TODOs > とりあえず足りてない機能を…… > ファイルまだ生成できないし…… >
checks, nodes ぐらいは watchしたいし…… > あと、インストールが普通に考えて 大変なので omnibus にしたいな∼ →さっきできました!
68.
絶賛開発中 > https://github.com/udzura/ populus
69.
まとめ
70.
Consulは ただの「Nagiosの代替」 ではない
71.
コードの力で 複雑なサービスディスカバリにも 対応できる
72.
Consulが解決する課題は 多いが、 検証がまだまだ必要
73.
Thanks > @hiboma さん >
彼のアドバイスが無ければここまで早く 導入が終わらなかったと思います……
74.
PR
75.
Consulを全力で使える仕事あります > GMOペパボは 福岡/東京ともにエンジニアを 募集中です。 > アプリケーション/インフラ両方です! >
詳細は: http://pepabo.com/recruit/ career/
76.
併せて読みたい > OpenStack基盤との組み合わせて オペレーションの破壊的な進化が実現できる (かも)(まだ分かんないよ?)
77.
注目の求人 minne 基盤エンジニア
78.
ぼくらと やっていきませんか
79.
EOF
Download now