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
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
alecthomas/kong はいいぞ
fujiwara3
6
1.8k
ecspressoの設計思想に至る道 / sekkeinight2025
fujiwara3
12
2.9k
さくらのIaaS基盤のモニタリングとOpenTelemetry/OSC Hokkaido 2025
fujiwara3
3
1.2k
監視のこれまでとこれから/sakura monitoring seminar 2025
fujiwara3
11
5.3k
k6による負荷試験 入門から日常的な実践まで/Re:TechTalk #01
fujiwara3
2
160
困難を「一般解」で解く
fujiwara3
10
3.8k
「隙間家具OSS」に至る道/Fujiwara Tech Conference 2025
fujiwara3
7
13k
alecthomas/kong はいいぞ / kamakura.go#7
fujiwara3
1
1.2k
ISUCONに強くなるかもしれない日々の過ごしかた/Findy ISUCON 2024-11-14
fujiwara3
11
1.4k
Other Decks in Technology
See All in Technology
Where will it converge?
ibknadedeji
0
190
小学4年生夏休みの自由研究「ぼくと Copilot エージェント」
taichinakamura
0
480
[2025-09-30] Databricks Genie を利用した分析基盤とデータモデリングの IVRy の現在地
wxyzzz
0
500
いまさら聞けない ABテスト入門
skmr2348
1
210
LLM時代にデータエンジニアの役割はどう変わるか?
ikkimiyazaki
4
860
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
11
78k
about #74462 go/token#FileSet
tomtwinkle
1
420
空間を設計する力を考える / 20251004 Naoki Takahashi
shift_evolve
PRO
3
400
業務自動化プラットフォーム Google Agentspace に入門してみる #devio2025
maroon1st
0
200
Trust as Infrastructure
bcantrill
0
350
PLaMoの事後学習を支える技術 / PFN LLMセミナー
pfn
PRO
9
3.9k
SOC2取得の全体像
shonansurvivors
1
410
Featured
See All Featured
Faster Mobile Websites
deanohume
310
31k
Docker and Python
trallard
46
3.6k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
29
2.6k
How to Think Like a Performance Engineer
csswizardry
27
2k
[RailsConf 2023] Rails as a piece of cake
palkan
57
5.9k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
19
1.2k
Context Engineering - Making Every Token Count
addyosmani
5
200
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
229
22k
Optimising Largest Contentful Paint
csswizardry
37
3.4k
Building a Scalable Design System with Sketch
lauravandoore
462
33k
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
ຊʹ͋ͬͨා͍ ·ͱΊ ੈؒݫ͍͠
·ͱΊ Φʔτεέʔϧίετݮʹ༗༻ (نʹΑΔ) ߟ͑ํͷมֵΛഭΒΕΔ (ָ͍͠) ͪΌΜͱ੍ޚ͢Δͷେม (େม)