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
AWSのオートスケールとなかよく付き合う
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
FUJIWARA Shunichiro
July 02, 2016
Technology
25
12k
AWSのオートスケールとなかよく付き合う
YAP(achimon)C::Asia Hachioji 2016 mid
FUJIWARA Shunichiro
July 02, 2016
Tweet
Share
More Decks by FUJIWARA Shunichiro
See All by FUJIWARA Shunichiro
さくらのクラウドでのシークレット管理を考える/tamachi.sre#2
fujiwara3
1
220
Amazon ECS デプロイツール ecspresso の開発を支える「正しい抽象化」の探求 / YAPC::Fukuoka 2025
fujiwara3
13
8.8k
パフォーマンスチューニングのために普段からできること/Performance Tuning: Daily Practices
fujiwara3
8
6.1k
alecthomas/kong はいいぞ
fujiwara3
7
2.1k
ecspressoの設計思想に至る道 / sekkeinight2025
fujiwara3
12
3.3k
さくらのIaaS基盤のモニタリングとOpenTelemetry/OSC Hokkaido 2025
fujiwara3
3
2.7k
監視のこれまでとこれから/sakura monitoring seminar 2025
fujiwara3
11
5.6k
k6による負荷試験 入門から日常的な実践まで/Re:TechTalk #01
fujiwara3
2
460
困難を「一般解」で解く
fujiwara3
10
4.1k
Other Decks in Technology
See All in Technology
ファシリテーション勉強中 その場に何が求められるかを考えるようになるまで / 20260123 Naoki Takahashi
shift_evolve
PRO
3
410
最速で価値を出すための プロダクトエンジニアのツッコミ術
kaacun
1
430
3分でわかる!新機能 AWS Transform custom
sato4mi
1
270
開発メンバーが語るFindy Conferenceの裏側とこれから
sontixyou
2
410
20260129_CB_Kansai
takuyay0ne
1
240
Tebiki Engineering Team Deck
tebiki
0
23k
What happened to RubyGems and what can we learn?
mikemcquaid
0
130
MySQLのJSON機能の活用術
ikomachi226
0
120
セキュリティについて学ぶ会 / 2026 01 25 Takamatsu WordPress Meetup
rocketmartue
1
120
Sansan Engineering Unit 紹介資料
sansan33
PRO
1
3.8k
Introduction to Sansan, inc / Sansan Global Development Center, Inc.
sansan33
PRO
0
2.9k
書籍執筆での生成AIの活用
sat
PRO
1
240
Featured
See All Featured
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
53
How Software Deployment tools have changed in the past 20 years
geshan
0
31k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
0
260
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
100
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
34k
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.1k
GraphQLの誤解/rethinking-graphql
sonatard
74
11k
Designing for Performance
lara
610
70k
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
130
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
2.8k
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
570
Transcript
AWSͷΦʔτεέʔϧͱ ͳ͔Α͖͘߹͏ YAP(achimon)C::Asia Hachioji 2016 mid 2016-07-02 @fujiwara
@fujiwara github.com/fujiwara sfujiwara.hatenablog.com ٕज़෦
Agenda • ΦʔτεέʔϧͬͯԿ • ͳͥΦʔτεέʔϧ͢Δͷ͔ • ͦͦΦʔτεέʔϧ͢Δ͖? • Ͳ͏͍͏݅ͰΦʔτεέʔϧΛൃಈ͢Δ͔ •
ຊʹى͖ͨා͍
Φʔτεέʔϧͱ
AWSͷΦʔτεέʔϧ ΞϓϦέʔγϣϯͷෛՙΛॲཧ͢ΔͨΊʹ దͳͷEC2ΠϯελϯεΛىಈ͢ΔΈ
ͳͥΦʔτεέʔϧ͢Δͷ͔
ͳͥΦʔτεέʔϧ͢Δͷ͔ ΞΫηε(≒ෛՙ)1ͷதͰมಈ͢Δ
ͳͥΦʔτεέʔϧ͢Δͷ͔ min : avg : max = 200 : 1000
: 3000 ϐʔΫ࣌ͷෛՙ1ฏۉͷ3ഒ ϐʔΫΛఆͨ͠ΠϯελϯεΛৗ࣌ىಈ͢Δͱ ! ෛՙʹԠͯ͡ΠϯελϯεΛௐ͢ΕઅͰ͖Δ
ͳͥΦʔτεέʔϧ͢Δͷ͔ ʰಥൃతͳෛՙʹରԠͰ͖Δʱ • ͋Δఔ·Ͱԣʹ૿ͤΔͷͰ͋Ε ⭕ • ྫ͑RDS͕ϘτϧωοΫʹͳΔͱ… ❓ • ෛՙͷ૿େ͕͗͢Δͱؒʹ߹Θͳ͍
ͳͥΦʔτεέʔϧ͢Δͷ͔ ͦͷଞʹخ͍͠(ؾΛ͚ͭΔ)͜ͱ • ো͕ൃੜͨ͠ΠϯελϯεࣗಈͰআ(terminate) • ৽͍͠Πϯελϯε͕ࣗಈͰىಈ • ઃఆ͞ΕͨΛอͱ͏ͱͯ͘͠ΕΔ ! ΠϯελϯεোͰ࠶ىಈෆཁ
" আ͞ΕͨΠϯελϯεͷEBSফ໓
ͦͦΦʔτεέʔϧ͢Δ͖ʁ
ͦͦΦʔτεέʔϧ͢Δ͖ʁ 16ίΞϚγϯ͕ϐʔΫͰ30ඞཁͳγεςϜ ! c4.4xlarge(16 cores) $776.66/month • avg: × 10
= $7,766 / month • max: x 30 = $23,299 / month ฏۉ10ʹ͑ΒΕΕֹࠩ20 $15,533 ≒ 150ສԁ ͋Δఔͷن͕͋Εݮֹ͕େ͖͍
ن͕ͦΕ΄ͲͰͳ͍߹ 4ίΞϚγϯ͕ϐʔΫͰ6ඞཁͳγεςϜ ! c4.xlarge(4 cores) $193.98/month • avg: × 4
= $776 / month • max: x 6 = $1,164 / month ࠷3ಈ͔͍ͨ͠ͷͰavg = max / 3 ʹͳΒͳ͍ ֹࠩ2 $387 ఔɺݻఆඅͱൺΔͱ…
None
ͦͦΦʔτεέʔϧ͢Δ͖ʁ·ͱΊ ΦʔτεέʔϧΛߟྀ͍ͯ͠ͳ͍γεςϜʹޙ͔Βಋೖ͢Δʹ ͍Ζ͍Ζඞཁ ӡ༻த҆ఆ͢Δ·Ͱ͍Ζ͍Ζ͋Δ ಋೖɺӡ༻ίετ͕ݮίετʹݟ߹͏͔Ͳ͏͔அ
Auto Scaling ུ֓
Auto Scaling Group Πϯελϯεͷ·ͱ·Γ͝ͱʹ Auto Scaling GroupΛఆٛ • ͷ࠷খ(min)ɺ࠷େ(max)ɺر (desired)
• ؔ࿈͚ͮΔ ELB • ىಈઃఆ (Launch Configuration) • εέʔϦϯάϙϦγʔ
࠷খ (min) ❌ ͜ͷҎԼʹݮΒͳ͍ ⭕ ͜ͷΛ࠷ݶҡ࣋͠Α͏ͱ͢Δ min: 3, ݱࡏ3ͷঢ়ଶͰ1͕ϔϧενΣοΫࣦഊ →
৽͍͠Πϯελϯε͕ىಈ͞ΕΔ → ࣦഊͨ͠Πϯελϯε͕আ͞ΕΔ Ұ࣌తʹminΛԼճΔ͜ͱ͕͋Δ
ر (desired) ͜ͷΛҡ࣋͠Α͏ͱ͢Δ εέʔϦϯάϙϦγʔʹΑͬͯ desired ͕มߋ͞ΕΔ → Πϯελϯε͕ىಈ/আ͞ΕΔ → desiredΛຬͨͨ͠Βྃ
ىಈࣦഊͨ͠߹ɺdesiredΛຬͨ͢·ͰϦτϥΠ ͏·͘ىಈ͠ͳ͍AMIΛ࡞ͬͯ͠·͏ͱӬԕʹ…!
࠷େ (max) ͜ͷҎ্ىಈ͠ͳ͍ ઃఆϛεͰͷىಈ͗͢͠ΛࢭͰ͖Δ ෛՙ૿େ࣌ʹఱҪʹͨΔՄೳੑ͕͋ΔͷͰؾΛ͚͓ͭͯ͘
εέʔϦϯάϙϦγʔ Ͳ͏͍͏݅ͰdesiredΛ૿Ճɺݮগͤ͞Δ͔ɺͱ͍͏ఆٛ CloudWatchͷϝτϦΫεΛݩʹͨ͠ΞϥʔϜΛτϦΨʹ͢Δ • Auto Scaling GroupͷEC2 CPU༻ • ओʹWebΞϓϦέʔγϣϯ͚
• Amazon SQS ͷΩϡʔʹཷ·͍ͬͯΔ • ඇಉظδϣϒॲཧαʔό(ಈըมͳͲ)͚
spot or on demand? ΦϯσϚϯυΠϯελϯε͔εϙοτΠϯελϯε͔ ΦʔτεέʔϧʹͲͪΒͰར༻Մೳ(LaunchConfigͰࢦఆ) ΦϯσϚϯυΠϯελϯε ͍ͭͰಉҰՁ֨ͰىಈͰ͖Δ (εϙοτͱൺΔͱ)ߴ͍ WebΞϓϦέʔγϣϯαʔό͖
spot or on demand? εϙοτΠϯελϯε ಈ࡞தͷεϙοτՁ֨ (धཁͱڙڅͰܾఆ)Ͱֹ͕ܾۚ·Δ ͍҆ (͍͍ͨͯͷ߹ΦϯσϚϯυͷ1/5ʙ1/10) ߴಅ͢Δ͜ͱ͕͋Δ
(ΦϯσϚϯυՁ֨ͷഒ) ೖࡳՁ֨ΛεϙοτՁ্͕֨ճΔͱΠϯελϯεআ → શ໓͢ΔՄೳੑ͕͋Δ ଟগͷॲཧԆ͕ڐ͞ΕΔδϣϒϫʔΧʔ͖
None
γεςϜΛΦʔτεέʔϧʹ ରԠͤ͞Δ
γεςϜΛΦʔτεέʔϧʹରԠͤ͞Δ ʮAMI͔Βىಈ͢Δ͚ͩͰɺਖ਼ৗʹՔಇ͢Δঢ়ଶʹͳΔʯ ͜ͷঢ়ଶΛ࡞Βͳ͍ͱΦʔτεέʔϧʹରԠͰ͖ͳ͍ • ϓϩϏδϣχϯά/σϓϩΠ • ࢹ • ϩάసૹ
ϓϩϏδϣχϯάɺσϓϩΠख๏ ❌ σϓϩΠ͍ͨ͠λΠϛϯάͰ push ⭕ ىಈͨ͠Πϯελϯε͕ pull ΠϯελϯεΛىಈͨ࣌͠Ͱͷਓؒͷ࡞ۀΛෆཁʹ͢Δ
AMIΛຖճ࡞Δ ϓϩϏδϣχϯάɺΞϓϦέʔγϣϯͷσϓϩΠ͕ྃͨ͠ঢ় ଶͰAMIΛ࡞Γ͢ˠ ىಈ͢Δ͚ͩͰOK ϝϦοτ • ىಈ͢Δ͚ͩɺىಈޙʹԿඞཁͳ͍ σϝϦοτ • ઃఆมߋɺΞϓϦέʔγϣϯमਖ਼ͰຖճAMIΛ࡞Γ͢खؒ
• มߋ͝ͱʹΠϯελϯεΛશ෦ೖΕସ͑
AMIΛຖճ࡞Δ • σϓϩΠස͕ଟ͘ͳ͍αʔϏεͳΒՄೳ (10ճ/͍͔͠…) • ݻఆͷΠϯελϯε͕͋Δ߹Ͳ͏͢Δ…ʁ (σʔλετΞͳͲ͕ϚωʔδυαʔϏεͰͳ͍߹)
ϓϧܕͷϓϩϏδϣχϯάɺσϓϩΠख๏ S3ͳͲʹΞʔΧΠϒΛอଘɺ֤ΠϯελϯεͰऔಘɺల։͢Δ AWS CodeDeploy Mamiya github.com/sorah/mamiya Stretcher github.com/fujiwara/stretcher
ϓϧܕͷϓϩϏδϣχϯάɺσϓϩΠख๏ Πϯελϯε͕ىಈ࣌ʹࣗΒ࠷৽ͷͷΛऔಘɺ࣮ߦ S3ΛόοΫΤϯυʹ͢ΕՄ༻ੑ ⭕ σϓϩΠ͍
⾠ rsyncͳͲͰϓϧܕσϓϩΠΛࣗ࡞͢Δ build్தͷத్ͳঢ়ଶ͕औಘ͞Εͳ͍Α͏ҙ → ΠϯελϯεىಈதσϓϩΠ࡞ۀΛ͠ͳ͍(ͱ͔) औಘݩΛߴՄ༻/ߴੑೳʹ͢Δඞཁ͕͋Δ
⾠ Git͔Βऔಘͯ͠σϓϩΠ͢Δ ʮGitσϓϩΠπʔϧͰ͋Γ·ͤΜʯ খنͳΒͳ͍ ن͕େ͖͘ͳΔͱGitαʔόͷෛՙ͕ਂࠁ ৄ͘͠ YAPC::Asia 2015 ੈքల։͢ΔେنΣϒαʔϏεͷσϓϩΠΛࢧ͑Δٕज़ https://speakerdeck.com/hatena/yapc-asia-tokyo-2015
γεςϜΛΦʔτεέʔϧʹରԠͤ͞Δ ·ͱΊ ىಈͨ͠Πϯελϯε͕ࣗ͢Δ ͋Δϗετ͔Βશʹ˓˓(ssh)ɺͱ͍͏ൃΛΊΔ
ࢹ
ࢹͰඞཁͳ͜ͱ ಈతʹࢹରΛ૿ݮͰ͖ΔπʔϧΛ͏ agentΛىಈ͢Δ͚ͩͰࢹରʹՃ agentىಈΛܖػʹࣗಈొઃఆ͕Մೳ APIͰϗετొՄೳ
ࢹͰඞཁͳ͜ͱ ΦʔτεέʔϦϯάάϧʔϓશΛूͨ͠ϝτϦΫεΛΈΔ • CPU༻ͳͲ
ࢹͰඞཁͳ͜ͱ 1མ͙ͪͨΒ͍Ͱ͘Α͘Α͠ͳ͍ େྔʹىಈ͢ΕམͪΔ͍ͭΔ Πϯελϯεఀࢭ࣌ʹࢹఀࢭʹࣦഊ͢Δ͜ͱ͋Δ ZabbixͰͷτϦΨͷྫ grpavg["AutoScale","icmpping[]",last,0].last(0)<0.7 ʮϗετάϧʔϓͰpingޭׂͨ͠߹͕70%ΛԼճͬͨΒʯ
ࢹͰඞཁͳ͜ͱ ELBͷ UnHealthyHostCount ͕Ͳ͏্͕ͯ͠Δ ʰʮUnHealthyHostCount > 0ʯ͕7ؒܧଓͨ͠Βܯࠂʱ
None
ϩάΛ͔ʹΠϯελϯε֎ʹసૹ͢Δ ΦʔτεέʔϧͷΠϯελϯε͕আ(terminate)͞ΕΔͱ ʮEBSফ͑·͢ʯ
ࢹͱϩάʹ͍ͭͯ ·ͱΊ γεςϜશମͱ݈ͯ͠શ͔Ͳ͏͔ΛΈΔ ݸผͷΠϯεϯλϯεʹͩ͜ΘΓ͗͢ͳ͍ → ϓϩηεΈ͍ͨͳ ͷ ΠϯελϯεʹӬଓΛ͞ͳ͍ → ϝϞϦΈ͍ͨͳͷ
Ͳ͏͍͏݅Ͱ ΦʔτεέʔϧΛൃಈ͢Δ͔
εέʔϦϯάϙϦγʔ ΞϓϦέʔγϣϯαʔόͷ߹ͷྫ • ۙ5ؒͷʮฏۉʯCPU༻͕50%Λ͑ͨΒ → ݱࡏͷͷ40%ͷΛىಈ → 7ͳʹ͠ͳ͍(ΠϯελϯεىಈΛͭ) • ۙ1࣌ؒͷʮ࠷ߴʯCPU༻͕25%ΛͬͨΒ
→ 1ఀࢭ → 3ͳʹ͠ͳ͍(Ұؾʹམͪ͗͢ͳ͍Α͏ʹ)
CPU༻(ੵΈ্͛), CPU idle(ฏۉ), ϨεϙϯελΠϜ
ΠϯελϯεΛ૿͢ͱ͖ͷίπ CPU 40ʙ50%͙Β͍Ͱىಈ͢Δ • CPU༻্͕͕Δͱॲཧೳྗ͕ઢܗൺྫ͠ͳ͘ͳΔ 100%Ͱ50%ͷ2ഒॲཧͰ͖ΔΘ͚Ͱͳ͍ • Πϯελϯεىಈ·ͰͷϥάΛߟྀ͢Δ 3ʙ5ఔ͑ΒΕΔ͏ͪʹൃಈ͓ͯ͘͠
ΠϯελϯεΛ૿͢ͱ͖ͷίπ ݱࡏͷ40%ͷɺ࠷2ىಈ͢Δ • 10͋Δͱ͖ʹ1૿ͯ͠ॲཧೳྗʴ10%͚ͩ +40%͕2ճൃಈ͢Ε2ഒʹͳΔ • Πϯελϯεৗʹىಈޭ͢ΔͱݶΒͳ͍ AWSଆͷɺϓϩϏδϣχϯάσϓϩΠࣦഊ
ΠϯελϯεΛݮΒ͢ͱ͖ͷίπ ۙ1࣌ؒͷʮ࠷ߴʯCPU༻͕25%ҎԼ 1ͣͭམͱͯ͠3ͭ • ʮ͍࣌ؒʯͷʮฏۉʯͰམͱ͞ͳ͍ ૿͑Δͱ༨༟͕Ͱ͖ΔˠམͪΔˠෛՙ্͕Δˠىಈ! ༨༟͕े͋Δঢ়ଶ͕࣌ؒଓ͍ͨΒམͱ͢ • Ұؾʹམͱ͢ˠෛՙ্͕͕Δˠىಈ!
None
εέʔϦϯάϙϦγʔ·ͱΊ ૿͢ͱ͖େʹ → Γͳ͚Εো ݮΒ͢ͱ͖ண࣮ʹ → ݮΒ͗ͨ͢͠Βো ᮢΛ߈Ί͗͢ͳ͍
ϔϧενΣοΫ
ELBʹΈࠐΉͨΊʹϔϧενΣοΫ͕ඞཁ 1. EC2Πϯελϯε͕ੜ͖͍ͯΔ 2. (ELB͔Β)TCPͰଓͰ͖Δ 3. (ELB͔Β)HTTPͰԠΛ200Ͱฦ͢ ԿΛ࣋ͬͯਖ਼ৗͱஅ͢Δ͔
ELBʹΈࠐΉͨΊʹϔϧενΣοΫ͕ඞཁ 1. ❌ EC2Πϯελϯε͕ੜ͖͍ͯΔ → Πϯελϯεىಈ ≠ ΞϓϦέʔγϣϯͷ४උ 2. ❌
TCPͰଓͰ͖Δ → Webαʔόىಈ ≠ ΞϓϦέʔγϣϯαʔόͷ४උ 3. ⭕ HTTPͰԠΛ200Ͱฦ͢ GET /ping HTTP/1.0 ΞϓϦέʔγϣϯαʔόͰDBଓͳͲνΣοΫ͢Δ
ELBʹΈࠐΉͨΊʹϔϧενΣοΫ͕ඞཁ Πϯελϯεىಈ࣌ͷࣄނ͕ଟ͍ ! ΞϓϦέʔγϣϯαʔό͕DBͦͷଞʹଓͰ͖Δ →ΞϓϦέʔγϣϯΑΓԼͷͷͳ͍ͣ !
ϔϧενΣοΫ·ͱΊ ࣮֬ʹΞϓϦέʔγϣϯͷ४උ͕Ͱ͖͔ͯΒޭͤ͞Δ ΞϓϦέʔγϣϯαʔόʹࢮ׆ࢹΤϯυϙΠϯτΛ༻ҙ
ຊʹ͋ͬͨා͍
ຊʹ͋ͬͨා͍(1) ىಈޙʹϔϧενΣοΫ͕௨Βͳ͍ Πϯελϯε
ϔϧενΣοΫ͕௨Βͳ͍Πϯελϯε͕ൃੜ શͰͳ͍ ىಈޙͷϓϩϏδϣχϯάɺσϓϩΠͳ͍ ͳ͔ͥElasticacheRedisʹܨ͕Βͳ͍ →ΞϓϦέʔγϣϯϨϕϧͰͷϔϧενΣοΫʹࣦഊ
ϔϧενΣοΫ͕௨Βͳ͍Πϯελϯε͕ൃੜ ىಈˠআˠىಈˠআ !!! ͩΜͩΜࣦഊ্͕͕֬ΔΑ͏ͳ…
ϔϧενΣοΫ͕௨Βͳ͍Πϯελϯε͕ൃੜ ͡ʔͬͱϩάΛݟΔ ʮΉΉɺ͜ͷIPΞυϨεݟ͕֮͑…ʯ
ϔϧενΣοΫ͕௨Βͳ͍Πϯελϯε͕ൃੜ աڈʹىಈ͍ͯͨ͠ΠϯελϯεͷIPΞυϨεΛϩά͔Βऩू 10͙Β͍Ұؾʹىಈ͢Δ ࣦഊͨͭ͠ͷIPΞυϨεΛݟΔ
Ṗͯ͢...
աڈʹ༻͞Εͨ͜ͱ͕ ͋ΔIPΞυϨε͕࠶ׂΓ ͯ͞ΕͨΠϯελϯε ͕ElastcacheRedisʹܨ ͕Βͳ͍
աڈʹ༻͞Εͨ͜ͱ͕͋ΔIPΞυϨε͕࠶ׂΓ ͯ͞ΕͨΠϯελϯε͕ElastcacheRedisʹ ܨ͕Βͳ͍ ElasticacheRedisͷARPςʔϒϧϦϑϨογϡʹ͕͋ͬͨ (20156݄࣌) αϙʔτͰݸผରԠ (20158݄2िҎ߱ʹ৽نىಈ͞Εͨnodeͳ͍ͦ͏Ͱ͢)
ΞϓϦέʔγϣϯϨϕϧͷ ϔϧενΣοΫΛ͍ͯͯ͠Α͔ͬͨ
ຊʹ͋ͬͨා͍(2) ϝϯςφϯεฤ
MHAͰDB masterΓସ͑ ΞϓϦέʔγϣϯΛͯ͢ϝϯςϞʔυʹ MHAͰmaster switch
ϝϯς໌͚Α͏ͱͨ͠Β ΞϓϦέʔγϣϯαʔό ͕མ͍ͪͯͨ
ϔϧενΣοΫͰDBͷଓΛΈ͍ͯͨ DB master͕switch DBͷӬଓଓ͕அ͞ΕΔˠ࣍ͷϦΫΤετͰ࠶ଓ(༧ఆ) AppPlack͕80ϓϩηε ֤ϓϩηε͕அͰΤϥʔΛฦ͢ →ͳ͔ͳ͔ϔϧενΣοΫ͕௨Βͳ͍ →Πϯελϯεterminate
ܭըϝϯςͰͳͯ͘DB͕ࢮ͵͜ͱ͋Δ ϔϧενΣοΫ͕௨Βͳ͍ͱΠϯελϯε͕མͪΔ RDSElasticacheͨ·ʹࢮ͵(ͷ͕લఏ)
ʮΠϯελϯεͷࣄނ΄΅ىಈ࣌ʯ Ұਖ਼ৗʹىಈͨ͠Πϯελϯε͕ࢮ͵ͷΠϯελϯεো ͕΄ͱΜͲ ઃఆϛεϛυϧΣΞͷͰશ໓͢Δͷ·͍ͣ → Ұਖ਼ৗʹΈࠐ·ΕͨΒΞϓϦέʔγϣϯϨϕϧͷϔϧε νΣοΫ͠ͳ͍ʂ
Ұਖ਼ৗʹΈࠐ·ΕͨΒ… at ίϚϯυΛ͏ ࣗಈىಈͷ࠷ޙʹ at 'now + 5 min' -f
/usr/local/sbin/confirm-pass-healthcheck ىಈޙ5ͷ࣌ͰELBͰInServiceͩͬͨΒ touch /dev/shm/pass_healthcheck ͱ͍͏ίϚϯυΛ࣮ߦ
nginxͷϨϕϧͰϔϧενΣοΫΛฦ͢ location /ping { if (-f "/dev/shm/pass_healthcheck") { return 200;
} # ϑΝΠϧ͕ͳ͚ΕΞϓϦέʔγϣϯͷϔϧενΣοΫ proxy_pass http://app; } tmpfsʹஔ͍ͯ͋ΔͷͰෆҙͷ࠶ىಈ͕͋ͬͯىಈ࣌ͱಉ͡
ೖΔ͖ELBͰInServiceʹͳ͍ͬͯΔ͔Λஅ #!/bin/bash instance_id=$(curl -s 169.254.169.254/latest/meta-data/instance-id) for elb in $(jq -r
".[]" /etc/elb.conf) do health=$(aws elb describe-instance-health \ --load-balancer-name "${elb}" --instances "${instance_id}") state=$(echo "$health" | jq -r '.InstanceStates[].State') if [[ $state != "InService" ]]; then exit 1 fi done touch /dev/shm/pass_healthcheck
ຊʹ͋ͬͨා͍ ·ͱΊ ੈؒݫ͍͠
·ͱΊ Φʔτεέʔϧίετݮʹ༗༻ (نʹΑΔ) ߟ͑ํͷมֵΛഭΒΕΔ (ָ͍͠) ͪΌΜͱ੍ޚ͢Δͷେม (େม)