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
12k
25
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
AWSのオートスケールとなかよく付き合う
YAP(achimon)C::Asia Hachioji 2016 mid
FUJIWARA Shunichiro
July 02, 2016
More Decks by FUJIWARA Shunichiro
See All by FUJIWARA Shunichiro
作るべきものと向き合う - ecspresso 8年間の開発史から学ぶ技術選定 / 技術選定con findy 2026
fujiwara3
9
5.2k
さくらのクラウドでのシークレット管理を考える/tamachi.sre#2
fujiwara3
2
350
Amazon ECS デプロイツール ecspresso の開発を支える「正しい抽象化」の探求 / YAPC::Fukuoka 2025
fujiwara3
13
13k
パフォーマンスチューニングのために普段からできること/Performance Tuning: Daily Practices
fujiwara3
9
6.8k
alecthomas/kong はいいぞ
fujiwara3
7
2.5k
ecspressoの設計思想に至る道 / sekkeinight2025
fujiwara3
12
3.7k
さくらのIaaS基盤のモニタリングとOpenTelemetry/OSC Hokkaido 2025
fujiwara3
3
4.7k
監視のこれまでとこれから/sakura monitoring seminar 2025
fujiwara3
12
5.9k
k6による負荷試験 入門から日常的な実践まで/Re:TechTalk #01
fujiwara3
2
620
Other Decks in Technology
See All in Technology
AI時代のYAGNI:「爆速で無駄になった機能」からの学び / 20260720 Naoki Takahashi
shift_evolve
PRO
3
380
凡エンジニアがこの先生きのこるためには。〜TypeScript完全に理解したい〜
alchemy1115
2
310
タスクの複雑さでモデルを選ぶ ── Thompson Samplingで動かす“トークン/コスト最適化
satohy0323
0
570
第67回コンピュータビジョン勉強会CVPR2026読会前編
tsukamotokenji
0
160
2年前に削除したPHPクラスが、 ある日突然決済をエラーにした
ykagano
1
490
AI x 開発生産性を取り巻く予算戦略と投資対効果
i35_267
1
280
10年目を迎えた「ABEMA」がどのように AI 活用を推進して、AI 駆動開発にシフトしているのか / How ABEMA, entering its 10th year, is promoting the use of AI and shifting toward AI-driven development
miyukki
0
290
AI時代の開発生産性は、個人技からチーム設計へ
moongift
PRO
4
2.4k
Kaggleで成長するために意識したこと
prgckwb
2
420
SREとQA 二人三脚で進めるSLO運用/sre-qa-slo
sugitak
0
1k
【Claude Code】鹿野さんに聞く 私の推しの並行開発環境 大公開 / claude-code-parallel-2026-07-15
tonkotsuboy_com
13
8.8k
AIレビューはどこまで任せられるのか?自動化と人が背負うレビューの境界
sansantech
PRO
3
1.1k
Featured
See All Featured
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.6k
Docker and Python
trallard
47
4k
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.4k
Fireside Chat
paigeccino
42
4k
We Are The Robots
honzajavorek
0
280
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
220
The Curious Case for Waylosing
cassininazir
1
430
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
420
Designing for Performance
lara
611
70k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.8k
Deep Space Network (abreviated)
tonyrice
0
230
SEO for Brand Visibility & Recognition
aleyda
0
4.6k
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
ຊʹ͋ͬͨා͍ ·ͱΊ ੈؒݫ͍͠
·ͱΊ Φʔτεέʔϧίετݮʹ༗༻ (نʹΑΔ) ߟ͑ํͷมֵΛഭΒΕΔ (ָ͍͠) ͪΌΜͱ੍ޚ͢Δͷେม (େม)