Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
日々の運用をconsulで楽にし隊
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
tjinjin
February 21, 2016
Technology
0
480
日々の運用をconsulで楽にし隊
社内勉強会の資料です
tjinjin
February 21, 2016
Tweet
Share
More Decks by tjinjin
See All by tjinjin
Severlessでslack botを作る会
tjinjin
0
1.5k
Other Decks in Technology
See All in Technology
仕様書駆動AI開発の実践: Issue→Skill→PRテンプレで 再現性を作る
knishioka
2
680
Kiro IDEのドキュメントを全部読んだので地味だけどちょっと嬉しい機能を紹介する
khmoryz
0
210
Amazon Bedrock Knowledge Basesチャンキング解説!
aoinoguchi
0
160
pool.ntp.orgに ⾃宅サーバーで 参加してみたら...
tanyorg
0
590
今日から始めるAmazon Bedrock AgentCore
har1101
4
420
データの整合性を保ちたいだけなんだ
shoheimitani
8
3.2k
AIエージェントに必要なのはデータではなく文脈だった/ai-agent-context-graph-mybest
jonnojun
1
240
AWS Network Firewall Proxyを触ってみた
nagisa53
1
240
外部キー制約の知っておいて欲しいこと - RDBMSを正しく使うために必要なこと / FOREIGN KEY Night
soudai
PRO
12
5.6k
10Xにおける品質保証活動の全体像と改善 #no_more_wait_for_test
nihonbuson
PRO
2
330
ClickHouseはどのように大規模データを活用したAIエージェントを全社展開しているのか
mikimatsumoto
0
270
予期せぬコストの急増を障害のように扱う――「コスト版ポストモーテム」の導入とその後の改善
muziyoshiz
1
2k
Featured
See All Featured
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
117
110k
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
330
Bash Introduction
62gerente
615
210k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
350
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
1.7k
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
170
New Earth Scene 8
popppiees
1
1.5k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.4k
Build your cross-platform service in a week with App Engine
jlugia
234
18k
A Tale of Four Properties
chriscoyier
162
24k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
280
Ruling the World: When Life Gets Gamed
codingconduct
0
150
Transcript
ʑͷӡ༻ΛConsulͰָʹ͠ୂ ~एऀເΛݟΔ~ 2016/2/19 tjinjin
Who? • feedforce, Inc. • Infrastructure engineer • twitter :
cross_black777 • github : tjinjin
φͰϠϯάͳڥΛ ࡞Γ·͢ʢʆΣ´ʣ
ࠓͷ͓ • Consulͷجૅ • σϓϩΠͷ • ϓϩϏδϣχϯάͷ • ʑͷӡ༻ͷ •
σϞʁ
ࠓ͞ͳ͍͜ͱ • ࠓظΠνΦγΞχϝͷ • γϦίϯόϨʔࣜμΠΤοτͷ • SHIROBAKOʹ͓͚ΔٶकͷϓϩϑΣογϣ φϦζϜͱ
Consulͷجૅ
Consulͱ • Hashicorp • αʔόಉ࢜ͰΫϥελΛΜͰɺͦͷΫϥελ ʹର͍͠ΖΜͳ͜ͱ͕Ͱ͖Δ
͏গ͠ৄ͘͠ • ىಈ࣌ͷΦϓγϣϯͰServer/ClientϞʔυʹ ͔ΕΔ • ServerͰىಈͨ͠Consulͷத͔ΒLeaderΛબ ग़͢Δɻ • ͦͷLeaderΛத৺ʹΫϥελ͕ػೳ͢Δ
https://www.consul.io/docs/internals/architecture.html
ઃఆϑΝΠϧ { "server": true, "client_addr": "0.0.0.0", "bootstrap_expect": 3, "data_dir": "/var/consul/data",
"watches": [ { "type": "event", "name": "deploy_bastion_development", "handler": "stretcher" } ] }
bootstrap-expect • consulΫϥελʹServerϊʔυ͕͜ͷࢦఆΛ ͨ͠ʹୡͨ࣌͠ʹLeaderͷબग़͕ߦΘΕ Δɻ
consul watch • ಛఆͷมԽΛݕͯ͠ɺॲཧΛ࣮ߦ͢Δ • event/nodes/serviceͳͲͳͲɽɽɽ
Ϋϥελͷ࡞Γํ
Ϋϥελͷ࡞Γํ • Ϋϥελͷؔʹ͍ͨ͠αʔόʢͲͪΒͰ ՄʣͰconsul joinίϚϯυୟ͘ • ىಈ࣌ʹstart_joinΦϓγϣϯΛࢦఆ͢Δͱࣗ ಈͰΫϥελʹjoin͞ΕΔ
None
ʁ
͍͠ɽɽɽ
ਓؒؔͰߟ͑Α͏
͜͜ʹήʔϜ͖΅͕ͬͪ3ਓ ͍Δͱ͢Δ
None
%2# ͓Ζʔ .)9 Ϋοι͆͆͆ ࣌ 'BMMPVU
ҰॹʹϓϨΠͰ͖ͳ͍…
͜ͷ··͡Ό΅ͬ ͪͷ··ʜ
ؒʢΫϥελʣ ʹͳΖ͏ͥ consul join hoge fuga
ϦʔμܾΊΑ͏ consul join hoge fuga ϦʔμܾΊΑ͏ ϦʔμܾΊΑ͏
͍͑͢ɺΏ͋ ͍Ͷ͢ ΦϨϦʔμͰΑ ͍ʁ :P ΫϥελԽ raftʹΑΓϦʔμ͕બग़͞Ε·͢
ΫϥελԽ ༑ୡͷ༑ୡ༑ୡ
͓̺ ύϫϓϩΔͧ ʢDPOTVMFWFOUʣ ͓̺ ΫϥελԽ
ͪͳΈʹjoinٯՄೳ
ؒʢΫϥελʣ ʹͳΖ͏ͥ consul join bar consul join bar ؒʢΫϥελʣ ʹͳΖ͏ͥ
ConsulΛ͑༑ୡ͕Ͱ͖Δ ͧʂʂʂ
start_join༮ͳ͡Έతͳͷ
σϓϩΠͷ
ैདྷΞϓϦέʔγϣϯͷ σϓϩΠ
capistranoΛͬͨ pushܕσϓϩΠ
http://tech.feedforce.jp/stretcher-consul-capistrano.html
ͪΐͬͱਐԽͨ͠σϓϩΠ
Consul + StretcherΛͬͨ pullܕσϓϩΠ
http://tech.feedforce.jp/stretcher-consul-capistrano.html
ϝϦοτ • ΞϓϦέʔγϣϯαʔόͷSSHଓߟ͑ͳ ͍͍ͯ͘ʢ͕૿͑ͯӨڹͳ͍ʂʣ • ຊ൪αʔόͰbundle installͳͲͷॏ͍ॲཧ͠ ͳͯ͘Α͍
ͱ͍͏ΛઌʑिͷษڧձͰ ͨ͠
hogeʮbuildαʔόͷӡ༻Ί ΜͲ͍ͳ͊ɻSPOFͳΔ͡Ό Μʯ
fugaʮCircleCIͰbuildͱ͔Ͱ ͖ͳ͍ͷʁʯ
fooʮ͜ΕRailsΞϓϦલఏͩ ΑͶʁϑϩϯτΤϯυʁʯ ※capistrano-stretcher-npmΛ͍͍͔͑
barʮσϓϩΠ͕ඇಉظʹͳ ΔͷͰ௨Ͳ͏͢Δͷʁʯ
tjinjinʮ…ʯ
http://jigokuno.com/eid_679.html
࡞ͬͨ
ɾrake-stretcher ɾrake-stretcher-rails npmؒʹ߹Θͳ͔ͬͨ
Կ͕Ͱ͖Δ • buildαʔόͳ͠ͰϩʔΧϧͰͷbuildΛՄೳʹ • consul eventͷൃՐΛHTTP APIϕʔεͰͰ͖ ΔΑ͏ʹ • 1ੈલͷrollbackͰ͖ΔΑ͏ʹ
σϓϩΠͷΠϝʔδ
গ͠γϯϓϧʹͳͬͨʁ
APIͰͷΠϕϯτൃՐ • ΫϥελͰίϚϯυୟ͘ඞཁ͕ͳ͍ • SSHͳ͠ͰσϓϩΠͰ͖Δ • AWS lambdaͬͯslack͔ΒσϓϩΠ࣮ߦ Ͱ͖Δʂʁ •
CircleCI͔ΒσϓϩΠͰ͖Δʁ
ເ͕ͻΖ͕ΓΜ͙ (∩´∀ʆ)∩ƂŖŘ
σϓϩΠ௨slack͔ consul-kv-dashboard
ϓϩϏδϣχϯάͷ
hogeʮpullܕσϓϩΠͰ͖Δ ͷΘ͔͚ͬͨͲɺͲ͏ͬ ͯͦͷঢ়ଶʹ͢ΔΜʁʯ
tjinjinʮ…ʯ
http://jigokuno.com/eid_679.html
pullܕσϓϩΠ͢ΔͨΊʹʁ • αʔό͕ىಈ͍ͯ͠Δ • ConsulΫϥελΛطʹܗ͍ͯ͠Δ • σϓϩΠʹඞཁͳϛυϧΣΞ͕Πϯετʔ ϧ͞Ε͍ͯΔʢstretcherͱ͔Ͷʣ
tjinjinʮஈ֊Λ͚࣮ͯݱ͠ Α͏ʂʯ
Phase1 ڥߏஙˍConsulΫϥελԽ • αʔόߏஙͨ͠λΠϛϯάͰConsulΫϥελ Խ͍ͤͨ͞ • ࣍ϖʔδͷਤͷߏΛఆ
શମߏਤ
Packer & Terraform
Packerͱ • HashiCorp • AWSΛىಈ͢Δͱ͖ʹ༻͢ΔAMIΛΧελ ϚΠζ͕؆୯ʹͰ͖Δ • AWSҙ֎ରԠͯ͠ΔΑʂ
stretcher/consul/awscliΛಋೖ
PackerͰ͍ͬͯΔ͜ͱ • stretcherಋೖ • awscliಋೖ • consulಋೖ
࣍
PackerͰ࡞ͬͨΧελϜAMI ΛͬͯTerraformͰڥߏ ங͢Δ͍ͧʂ
͍ͧ…ʁ
None
Terraformͱ • Hashicorp • αʔόڥͳͲΛίʔυͰநԽͰ͖Δ • ϘλϯҰͭͰڥͷߏஙɾഁյ͕Ͱ͖ɺॾਕ ͷ
ConsulΫϥελΛΉͨΊʹ • αʔόىಈޙʹ୭͔͕consul joinΛൃߦ͢Ε Α͍ • start_joinΛઃఆ͓͖ͯ͠ɺىಈޙʹjoinͤ͞ Ε͍͍͔
start_joinʹઃఆ͢ΔIP Ͳ͏͢Δʁ
Ͳ͜ʹjoin͢Δ͔ • AWSͰجຊతʹࢦఆ͞ΕͨIPϨϯδͰɺ։ ͍͍ͯΔIP͔ΒదͳͷΛબΜͰىಈ͢Δ • αʔόͷIPݻఆͯ͠ɺઃఆϑΝΠϧݻఆ͢Δ ͜ͱͰ͖Δ͚Ͳʢεέʔϧ͠ͳͦ͏…ʣ
TerraformͷTemplateΛར༻ ͢Δ
Template provider • TerraformͰ࡞ͨ͠ϦιʔεͷมΛར༻Ͱ ͖Δ • ࠓճͰݴ͏ͱbastionαʔόͷprivate_ipΛऔ ಘͯ͠ɺͦͷଞαʔό͕bastionαʔόʹ consul join͢ΔઃఆΛ࡞Δ
None
boot-consul.sh.tpl
Phase2 ΞϓϦʹඞཁͳϛυϧΣ Ξͷ४උ • ΞϓϦΛಈ͔ͨ͢ΊͷϛυϧΣΞΛಋೖ͠ ͍ͨ
ैདྷknife-soloʢchefʣΛ ͬͯͬͯͨ
knife-soloΠϝʔδ http://www.creationline.com/lab/6401 ΑΓҾ༻
ࠓճchef-soloΛͬͯ stretcherͰ
࡞ͬͨ ɾrake-stretcher-chef
Կ͕Ͱ͖Δʁ • chefͷϦιʔεΛtarballʹݻΊͯS3Ξοϓ ϩʔυ • APIϕʔεͰͷeventͷൃՐ
rake-stretcherΛ෦Ͱར༻ ͯ͠Δ͚ͩɻ
͜͜·ͰͰڥߏஙɾσϓϩ ΠͰ͖Δ४උ͕ྃͨ͠
Ͱɺڥ࡞ͬͯ ऴΘΓ͡Όແ͍
ӡ༻ͷ
ਓؒੜ͖͍ͯΕ͍ΖΜͳ͜ ͱ͕͋Γ·͢…
ӡ༻தͷαʔόಉ͡ʂʂ
Α͋͘Δͭ • ϛυϧΣΞͷηΩϡϦςΟΞοϓσʔτ • εέʔϧΞοϓ/μϯ • εέʔϧΞτ/Πϯ
None
Կ͕͋ͬͯαʔϏεͱΊ ͪΌ͍͚ͳ͍
҆શʹؾܰʹΓ͍ͨ
ࠓࢥ͍ඳ͍͍ͯΔߏ
εέʔϧΞτɾΠϯ
ࣈΛมߋ͢Δ͚ͩ
εέʔϧΞοϓ εέʔϧμϯ ηΩϡϦςΟΞοϓσʔτ
Blue greenతͳͭͰ
Blue-Green deployment • > ՔಇதͷBlueʹରͯ͠ԿͤͣɺผͷΠϯ ελϯεͰ৽͍͠ϦϏδϣϯͷGreenΛ࡞ͬ ͯɺҙͷઓུʹԊͬͯશମΛGreenʹΓସ ͍͑ͯ͘ http://aws.typepad.com/sajp/2015/12/what-is-blue-green-deployment.html
None
None
None
͜ΕΛTerraformͰ؆୯ɾ҆ શʹΓ͍ͨ
ʢ5ׂͰ͖ͯΔʣ
None
None
None
՝ • υϝΠϯͷΓସ͑ࠓͷͱ͜ΖखͰ ʢRoute53ͷϦιʔεͬͯྑ͍ʣ • Γସ͑ʹͨͬͯtfϑΝΠϧΛԿมߋ͠ ͳ͍ͱ͍͚ͳ͍͔…
·ͱΊ
՝ • ϑϩϯτͷσϓϩΠඋ • chef-solo͔Βͷ٫ • ͦͷଞpullܕσϓϩΠͱͷൺֱ • ʑͷӡ༻Λߟ͑ͯͷΑΓϕλʔͳͷΛ୳ ͢
ࣗಈԽ·ͰͷಓͷΓ ·ͩ·ͩԕ͍
ҰͭҰͭղܾ͍͖͍ͯͨ͠ʂ