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
多摩川(.dev)ランニング入門 / Tamagawa.dev#3
fujiwara3
3
310
クラウドを使う側から、作る側へ / 大吉祥寺.pm 2026前夜祭
fujiwara3
8
2.1k
作るべきものと向き合う - ecspresso 8年間の開発史から学ぶ技術選定 / 技術選定con findy 2026
fujiwara3
9
5.8k
さくらのクラウドでのシークレット管理を考える/tamachi.sre#2
fujiwara3
2
390
Amazon ECS デプロイツール ecspresso の開発を支える「正しい抽象化」の探求 / YAPC::Fukuoka 2025
fujiwara3
13
13k
パフォーマンスチューニングのために普段からできること/Performance Tuning: Daily Practices
fujiwara3
9
6.8k
alecthomas/kong はいいぞ
fujiwara3
7
2.6k
ecspressoの設計思想に至る道 / sekkeinight2025
fujiwara3
12
3.8k
さくらのIaaS基盤のモニタリングとOpenTelemetry/OSC Hokkaido 2025
fujiwara3
4
5.3k
Other Decks in Technology
See All in Technology
全員がプロダクトへ向き合う組織を持続成長させるために——組織づくりのフライホイールと4象限 / The Flywheel Model and Four Quadrants for Organizational Design
hiro_torii
3
670
書籍『生成AIの安全性入門』の入門
wataoka
0
200
Guerilla InnerSource in enterprises, during the AI hype
onenashev
PRO
0
140
本番に近いテストをもっと手軽に - Postmanで広がるAPIテストの世界 / Expanding the World of API Testing with Postman
yokawasa
1
240
リージョンの壁を越える、 ちょっと変わったAWSサービスの話
falken
PRO
0
170
いま、生成AIにKaggleをどこまで 任せられるか — ROGIIコンペでの進め方とTips
k951286
2
1.3k
Amazon S3 Tablesに全部任せてみた結果——コンパクション/スナップショット管理は本当に手放せるか
shigeruoda
0
300
AI活用の現在地、 ちゃんと見えてますか?/XPfest-2026
visional_engineering_and_design
0
120
Kiro Crewしか勝たん!?
miu_crescent
PRO
0
160
DGX Sparkを2台使って いろいろ動かす話
sonoda_mj
1
120
AIエージェントの開発・提供におけるセキュリティリスクの論点と対策
flatt_security
1
490
Instana&Bob トラブルシュートハンズオン
mayamasaki68
0
110
Featured
See All Featured
Joys of Absence: A Defence of Solitary Play
codingconduct
1
460
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
4.3k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
510
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
660
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.6k
Practical Orchestrator
shlominoach
191
12k
The Limits of Empathy - UXLibs8
cassininazir
1
630
The Invisible Side of Design
smashingmag
301
52k
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
74
42k
VelocityConf: Rendering Performance Case Studies
addyosmani
331
25k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
500
WCS-LA-2024
lcolladotor
0
820
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
ຊʹ͋ͬͨා͍ ·ͱΊ ੈؒݫ͍͠
·ͱΊ Φʔτεέʔϧίετݮʹ༗༻ (نʹΑΔ) ߟ͑ํͷมֵΛഭΒΕΔ (ָ͍͠) ͪΌΜͱ੍ޚ͢Δͷେม (େม)