Upgrade to Pro — share decks privately, control downloads, hide ads and more …

AWSのオートスケールとなかよく付き合う

 AWSのオートスケールとなかよく付き合う

YAP(achimon)C::Asia Hachioji 2016 mid

Ca6281fff64797dc419b78f51f25c0a5?s=128

FUJIWARA Shunichiro
PRO

July 02, 2016
Tweet

Transcript

  1. AWSͷΦʔτεέʔϧͱ ͳ͔Α͘෇͖߹͏ YAP(achimon)C::Asia Hachioji 2016 mid 2016-07-02 @fujiwara

  2. @fujiwara github.com/fujiwara sfujiwara.hatenablog.com ٕज़෦

  3. Agenda • ΦʔτεέʔϧͬͯԿ • ͳͥΦʔτεέʔϧ͢Δͷ͔ • ͦ΋ͦ΋Φʔτεέʔϧ͢Δ΂͖? • Ͳ͏͍͏৚݅ͰΦʔτεέʔϧΛൃಈ͢Δ͔ •

    ຊ౰ʹى͖ͨා͍࿩
  4. Φʔτεέʔϧͱ͸

  5. AWSͷΦʔτεέʔϧ ΞϓϦέʔγϣϯͷෛՙΛॲཧ͢ΔͨΊʹ ద੾ͳ਺ͷEC2ΠϯελϯεΛىಈ͢Δ࢓૊Έ

  6. ͳͥΦʔτεέʔϧ͢Δͷ͔

  7. ͳͥΦʔτεέʔϧ͢Δͷ͔ ΞΫηε਺(≒ෛՙ)͸1೔ͷதͰมಈ͢Δ

  8. ͳͥΦʔτεέʔϧ͢Δͷ͔ min : avg : max = 200 : 1000

    : 3000 ϐʔΫ࣌ͷෛՙ͸1೔ฏۉͷ3ഒ ϐʔΫΛ૝ఆͨ͠ΠϯελϯεΛৗ࣌ىಈ͢Δͱ ! ෛՙʹԠͯ͡Πϯελϯε୆਺Λௐ੔͢Ε͹અ໿Ͱ͖Δ
  9. ͳͥΦʔτεέʔϧ͢Δͷ͔ ʰಥൃతͳෛՙʹ΋ରԠͰ͖Δʱ • ͋Δఔ౓·Ͱԣʹ૿΍ͤΔ΋ͷͰ͋Ε͹ ⭕ • ྫ͑͹RDS͕ϘτϧωοΫʹͳΔͱ… ❓ • ෛՙͷ૿େ͕଎͗͢Δͱؒʹ߹Θͳ͍

  10. ͳͥΦʔτεέʔϧ͢Δͷ͔ ͦͷଞʹ΋خ͍͠(ؾΛ͚ͭΔ)͜ͱ • ো֐͕ൃੜͨ͠Πϯελϯε͸ࣗಈͰ࡟আ(terminate) • ৽͍͠Πϯελϯε͕ࣗಈͰىಈ • ઃఆ͞Εͨ୆਺Λอͱ͏ͱͯ͘͠ΕΔ ! Πϯελϯεো֐Ͱ࠶ىಈෆཁ

    " ࡟আ͞ΕͨΠϯελϯεͷEBS͸ফ໓
  11. ͦ΋ͦ΋Φʔτεέʔϧ͢Δ΂͖ʁ

  12. ͦ΋ͦ΋Φʔτεέʔϧ͢Δ΂͖ʁ 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ສԁ ͋Δఔ౓ͷن໛͕͋Ε͹࡟ݮֹ͕େ͖͍
  13. ن໛͕ͦΕ΄ͲͰ΋ͳ͍৔߹ 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 ఔ౓ɺݻఆඅͱൺ΂Δͱ…
  14. None
  15. ͦ΋ͦ΋Φʔτεέʔϧ͢Δ΂͖ʁ·ͱΊ ΦʔτεέʔϧΛߟྀ͍ͯ͠ͳ͍γεςϜʹޙ͔Βಋೖ͢Δʹ ͸͍Ζ͍Ζඞཁ ӡ༻த΋҆ఆ͢Δ·Ͱ͸͍Ζ͍Ζ͋Δ ಋೖɺӡ༻ίετ͕࡟ݮίετʹݟ߹͏͔Ͳ͏͔൑அ

  16. Auto Scaling ུ֓

  17. Auto Scaling Group Πϯελϯεͷ·ͱ·Γ͝ͱʹ Auto Scaling GroupΛఆٛ • ୆਺ͷ࠷খ(min)ɺ࠷େ(max)ɺر๬ (desired)

    • ؔ࿈͚ͮΔ ELB • ىಈઃఆ (Launch Configuration) • εέʔϦϯάϙϦγʔ
  18. ࠷খ୆਺ (min) ❌ ͜ͷ୆਺ҎԼʹ͸ݮΒͳ͍ ⭕ ͜ͷ୆਺Λ࠷௿ݶҡ࣋͠Α͏ͱ͢Δ min: 3, ݱࡏ3୆ͷঢ়ଶͰ1୆͕ϔϧενΣοΫࣦഊ →

    ৽͍͠Πϯελϯε͕ىಈ͞ΕΔ → ࣦഊͨ͠Πϯελϯε͕࡟আ͞ΕΔ Ұ࣌తʹ͸minΛԼճΔ͜ͱ͕͋Δ
  19. ر๬୆਺ (desired) ͜ͷ୆਺Λҡ࣋͠Α͏ͱ͢Δ εέʔϦϯάϙϦγʔʹΑͬͯ desired ͕มߋ͞ΕΔ → Πϯελϯε͕ىಈ/࡟আ͞ΕΔ → desiredΛຬͨͨ͠Β׬ྃ

    ىಈࣦഊͨ͠৔߹͸ɺdesiredΛຬͨ͢·ͰϦτϥΠ ͏·͘ىಈ͠ͳ͍AMIΛ࡞ͬͯ͠·͏ͱӬԕʹ…!
  20. ࠷େ୆਺ (max) ͜ͷ୆਺Ҏ্͸ىಈ͠ͳ͍ ઃఆϛεͰͷىಈ͗͢͠Λ๷ࢭͰ͖Δ ෛՙ૿େ࣌ʹఱҪʹ౰ͨΔՄೳੑ͕͋ΔͷͰؾΛ͚͓ͭͯ͘

  21. εέʔϦϯάϙϦγʔ Ͳ͏͍͏৚݅ͰdesiredΛ૿Ճɺݮগͤ͞Δ͔ɺͱ͍͏ఆٛ CloudWatchͷϝτϦΫεΛݩʹͨ͠ΞϥʔϜΛτϦΨʹ͢Δ • Auto Scaling Group಺ͷEC2 CPU࢖༻཰ • ओʹWebΞϓϦέʔγϣϯ޲͚

    • Amazon SQS ͷΩϡʔʹཷ·͍ͬͯΔ਺ • ඇಉظδϣϒॲཧαʔό(ಈըม׵ͳͲ)޲͚
  22. spot or on demand? ΦϯσϚϯυΠϯελϯε͔εϙοτΠϯελϯε͔ Φʔτεέʔϧʹ͸ͲͪΒͰ΋ར༻Մೳ(LaunchConfigͰࢦఆ) ΦϯσϚϯυΠϯελϯε ͍ͭͰ΋ಉҰՁ֨ͰىಈͰ͖Δ (εϙοτͱൺ΂Δͱ)ߴ͍ WebΞϓϦέʔγϣϯαʔό޲͖

  23. spot or on demand? εϙοτΠϯελϯε ಈ࡞தͷεϙοτՁ֨ (धཁͱڙڅͰܾఆ)Ͱֹ͕ܾۚ·Δ ͍҆ (͍͍ͨͯͷ৔߹ΦϯσϚϯυͷ1/5ʙ1/10) ߴಅ͢Δ͜ͱ͕͋Δ

    (ΦϯσϚϯυՁ֨ͷ਺ഒ΋) ೖࡳՁ֨ΛεϙοτՁ্͕֨ճΔͱΠϯελϯε࡟আ → શ໓͢ΔՄೳੑ͕͋Δ ଟগͷॲཧ஗Ԇ͕ڐ͞ΕΔδϣϒϫʔΧʔ޲͖
  24. None
  25. γεςϜΛΦʔτεέʔϧʹ ରԠͤ͞Δ

  26. γεςϜΛΦʔτεέʔϧʹରԠͤ͞Δ ʮAMI͔Βىಈ͢Δ͚ͩͰɺਖ਼ৗʹՔಇ͢Δঢ়ଶʹͳΔʯ ͜ͷঢ়ଶΛ࡞Βͳ͍ͱΦʔτεέʔϧʹରԠͰ͖ͳ͍ • ϓϩϏδϣχϯά/σϓϩΠ • ؂ࢹ • ϩάసૹ

  27. ϓϩϏδϣχϯάɺσϓϩΠख๏ ❌ σϓϩΠ͍ͨ͠λΠϛϯάͰ push ⭕ ىಈͨ͠Πϯελϯε͕ pull ΠϯελϯεΛىಈͨ࣌͠఺Ͱͷਓؒͷ࡞ۀΛෆཁʹ͢Δ

  28. AMIΛຖճ࡞Δ ϓϩϏδϣχϯάɺΞϓϦέʔγϣϯͷσϓϩΠ͕׬ྃͨ͠ঢ় ଶͰAMIΛ࡞Γ௚͢ˠ ىಈ͢Δ͚ͩͰOK ϝϦοτ • ىಈ͢Δ͚ͩɺىಈޙʹ͸Կ΋ඞཁͳ͍ σϝϦοτ • ઃఆมߋɺΞϓϦέʔγϣϯमਖ਼ͰຖճAMIΛ࡞Γ௚͢खؒ

    • มߋ͝ͱʹΠϯελϯεΛશ෦ೖΕସ͑
  29. AMIΛຖճ࡞Δ • σϓϩΠස౓͕ଟ͘ͳ͍αʔϏεͳΒՄೳ (10ճ/೔͸೉͍͔͠΋…) • ݻఆͷΠϯελϯε͕͋Δ৔߹͸Ͳ͏͢Δ…ʁ (σʔλετΞͳͲ͕ϚωʔδυαʔϏεͰ͸ͳ͍৔߹)

  30. ϓϧܕͷϓϩϏδϣχϯάɺσϓϩΠख๏ S3ͳͲʹΞʔΧΠϒΛอଘɺ֤ΠϯελϯεͰऔಘɺల։͢Δ AWS CodeDeploy Mamiya github.com/sorah/mamiya Stretcher github.com/fujiwara/stretcher

  31. ϓϧܕͷϓϩϏδϣχϯάɺσϓϩΠख๏ Πϯελϯε͕ىಈ࣌ʹࣗΒ࠷৽ͷ΋ͷΛऔಘɺ࣮ߦ S3ΛόοΫΤϯυʹ͢Ε͹Մ༻ੑ΋ ⭕ σϓϩΠ΋଎͍

  32. ⾠ rsyncͳͲͰϓϧܕσϓϩΠΛࣗ࡞͢Δ build్தͷத్൒୺ͳঢ়ଶ͕औಘ͞Εͳ͍Α͏஫ҙ → Πϯελϯεىಈத͸σϓϩΠ࡞ۀΛ͠ͳ͍(ͱ͔) औಘݩΛߴՄ༻/ߴੑೳʹ͢Δඞཁ͕͋Δ

  33. ⾠ Git͔Βऔಘͯ͠σϓϩΠ͢Δ ʮGit͸σϓϩΠπʔϧͰ͸͋Γ·ͤΜʯ খن໛ͳΒ໰୊ͳ͍ ن໛͕େ͖͘ͳΔͱGitαʔόͷෛՙ͕ਂࠁ ৄ͘͠͸ YAPC::Asia 2015 ੈքల։͢Δେن໛΢ΣϒαʔϏεͷσϓϩΠΛࢧ͑Δٕज़ https://speakerdeck.com/hatena/yapc-asia-tokyo-2015

  34. γεςϜΛΦʔτεέʔϧʹରԠͤ͞Δ ·ͱΊ ىಈͨ͠Πϯελϯε͕ࣗ཯͢Δ ͋Δϗετ͔Βશ୆ʹ˓˓(ssh)ɺͱ͍͏ൃ૝Λ΍ΊΔ

  35. ؂ࢹ

  36. ؂ࢹͰඞཁͳ͜ͱ ಈతʹ؂ࢹର৅Λ૿ݮͰ͖ΔπʔϧΛ࢖͏ agentΛىಈ͢Δ͚ͩͰ؂ࢹର৅ʹ௥Ճ agentىಈΛܖػʹࣗಈొ࿥ઃఆ͕Մೳ APIͰϗετొ࿥΋Մೳ

  37. ؂ࢹͰඞཁͳ͜ͱ ΦʔτεέʔϦϯάάϧʔϓશ୆Λू໿ͨ͠ϝτϦΫεΛΈΔ • CPU࢖༻཰ͳͲ

  38. ؂ࢹͰඞཁͳ͜ͱ 1୆མ͙ͪͨΒ͍Ͱ͘Α͘Α͠ͳ͍ େྔʹىಈ͢Ε͹མͪΔ΍ͭ΋͍Δ Πϯελϯεఀࢭ࣌ʹ؂ࢹఀࢭʹࣦഊ͢Δ͜ͱ΋͋Δ ZabbixͰͷτϦΨͷྫ grpavg["AutoScale","icmpping[]",last,0].last(0)<0.7 ʮϗετάϧʔϓ಺Ͱping੒ޭׂͨ͠߹͕70%ΛԼճͬͨΒʯ

  39. ؂ࢹͰඞཁͳ͜ͱ ELBͷ UnHealthyHostCount ͕Ͳ͏ͯ͠΋্͕Δ ʰʮUnHealthyHostCount > 0ʯ͕7෼ؒܧଓͨ͠Βܯࠂʱ

  40. None
  41. ϩάΛ଎΍͔ʹΠϯελϯε֎ʹసૹ͢Δ ΦʔτεέʔϧͷΠϯελϯε͕࡟আ(terminate)͞ΕΔͱ ʮEBS΋ফ͑·͢ʯ

  42. ؂ࢹͱϩάʹ͍ͭͯ ·ͱΊ γεςϜશମͱ݈ͯ͠શ͔Ͳ͏͔ΛΈΔ ݸผͷΠϯεϯλϯεʹͩ͜ΘΓ͗͢ͳ͍ → ϓϩηεΈ͍ͨͳ ΋ͷ ΠϯελϯεʹӬଓ෺Λ࢒͞ͳ͍ → ϝϞϦΈ͍ͨͳ΋ͷ

  43. Ͳ͏͍͏৚݅Ͱ ΦʔτεέʔϧΛൃಈ͢Δ͔

  44. εέʔϦϯάϙϦγʔ ΞϓϦέʔγϣϯαʔόͷ৔߹ͷྫ • ௚ۙ5෼ؒͷʮฏۉʯCPU࢖༻཰͕50%Λ௒͑ͨΒ → ݱࡏͷ୆਺ͷ40%ͷ୆਺Λىಈ → 7෼ͳʹ΋͠ͳ͍(ΠϯελϯεىಈΛ଴ͭ) • ௚ۙ1࣌ؒͷʮ࠷ߴʯCPU࢖༻཰͕25%Λ੾ͬͨΒ

    → 1୆ఀࢭ → 3෼ͳʹ΋͠ͳ͍(Ұؾʹམͪ͗͢ͳ͍Α͏ʹ)
  45. CPU࢖༻཰(ੵΈ্͛), CPU idle(ฏۉ), ϨεϙϯελΠϜ෼෍

  46. ΠϯελϯεΛ૿΍͢ͱ͖ͷίπ CPU 40ʙ50%͙Β͍Ͱىಈ͢Δ • CPU࢖༻཰্͕͕Δͱॲཧೳྗ͕ઢܗൺྫ͠ͳ͘ͳΔ 100%Ͱ50%ͷ2ഒॲཧͰ͖ΔΘ͚Ͱ͸ͳ͍ • Πϯελϯεىಈ·ͰͷϥάΛߟྀ͢Δ 3ʙ5෼ఔ౓͸଱͑ΒΕΔ͏ͪʹൃಈ͓ͯ͘͠

  47. ΠϯελϯεΛ૿΍͢ͱ͖ͷίπ ݱࡏͷ40%ͷ୆਺ɺ࠷௿2୆ىಈ͢Δ • 10୆͋Δͱ͖ʹ1୆૿΍ͯ͠΋ॲཧೳྗ͸ʴ10%͚ͩ +40%͕2ճൃಈ͢Ε͹໿2ഒʹͳΔ • Πϯελϯε͸ৗʹىಈ੒ޭ͢Δͱ͸ݶΒͳ͍ AWSଆͷ໰୊ɺϓϩϏδϣχϯά΍σϓϩΠࣦഊ

  48. ΠϯελϯεΛݮΒ͢ͱ͖ͷίπ ௚ۙ1࣌ؒͷʮ࠷ߴʯCPU࢖༻཰͕25%ҎԼ 1୆ͣͭམͱͯ͠3෼଴ͭ • ʮ୹͍࣌ؒʯͷʮฏۉʯͰམͱ͞ͳ͍ ૿͑Δͱ༨༟͕Ͱ͖ΔˠམͪΔˠෛՙ্͕Δˠىಈ! ༨༟͕े෼͋Δঢ়ଶ͕௕࣌ؒଓ͍ͨΒམͱ͢ • Ұؾʹམͱ͢ˠෛՙ্͕͕Δˠىಈ!

  49. None
  50. εέʔϦϯάϙϦγʔ·ͱΊ ૿΍͢ͱ͖͸େ୾ʹ → ଍Γͳ͚Ε͹ো֐ ݮΒ͢ͱ͖͸ண࣮ʹ → ݮΒ͗ͨ͢͠Βো֐ ᮢ஋Λ߈Ί͗͢ͳ͍

  51. ϔϧενΣοΫ

  52. ELBʹ૊ΈࠐΉͨΊʹ͸ϔϧενΣοΫ͕ඞཁ 1. EC2Πϯελϯε͕ੜ͖͍ͯΔ 2. (ELB͔Β)TCPͰ઀ଓͰ͖Δ 3. (ELB͔Β)HTTPͰԠ౴Λ200Ͱฦ͢ ԿΛ࣋ͬͯਖ਼ৗͱ൑அ͢Δ͔

  53. ELBʹ૊ΈࠐΉͨΊʹ͸ϔϧενΣοΫ͕ඞཁ 1. ❌ EC2Πϯελϯε͕ੜ͖͍ͯΔ → Πϯελϯεىಈ ≠ ΞϓϦέʔγϣϯͷ४උ 2. ❌

    TCPͰ઀ଓͰ͖Δ → Webαʔόىಈ ≠ ΞϓϦέʔγϣϯαʔόͷ४උ 3. ⭕ HTTPͰԠ౴Λ200Ͱฦ͢ GET /ping HTTP/1.0 ΞϓϦέʔγϣϯαʔόͰDB઀ଓͳͲ΋νΣοΫ͢Δ
  54. ELBʹ૊ΈࠐΉͨΊʹ͸ϔϧενΣοΫ͕ඞཁ Πϯελϯε͸ىಈ࣌ͷࣄނ͕ଟ͍ ! ΞϓϦέʔγϣϯαʔό͕DB΍ͦͷଞʹ઀ଓͰ͖Δ →ΞϓϦέʔγϣϯΑΓԼͷ૚ͷ໰୊͸ͳ͍͸ͣ !

  55. ϔϧενΣοΫ·ͱΊ ࣮֬ʹΞϓϦέʔγϣϯͷ४උ͕Ͱ͖͔ͯΒ੒ޭͤ͞Δ ΞϓϦέʔγϣϯαʔόʹࢮ׆؂ࢹΤϯυϙΠϯτΛ༻ҙ

  56. ຊ౰ʹ͋ͬͨා͍࿩

  57. ຊ౰ʹ͋ͬͨා͍࿩(1) ىಈޙʹϔϧενΣοΫ͕௨Βͳ͍ Πϯελϯε

  58. ϔϧενΣοΫ͕௨Βͳ͍Πϯελϯε͕ൃੜ શ୆Ͱ͸ͳ͍ ىಈޙͷϓϩϏδϣχϯάɺσϓϩΠ͸໰୊ͳ͍ ͳ͔ͥElasticacheRedisʹܨ͕Βͳ͍ →ΞϓϦέʔγϣϯϨϕϧͰͷϔϧενΣοΫʹࣦഊ

  59. ϔϧενΣοΫ͕௨Βͳ͍Πϯελϯε͕ൃੜ ىಈˠ࡟আˠىಈˠ࡟আ !!! ͩΜͩΜࣦഊ֬཰্͕͕ΔΑ͏ͳ…

  60. ϔϧενΣοΫ͕௨Βͳ͍Πϯελϯε͕ൃੜ ͡ʔͬͱϩάΛݟΔ ʮΉΉɺ͜ͷIPΞυϨε͸ݟ͕֮͑…ʯ

  61. ϔϧενΣοΫ͕௨Βͳ͍Πϯελϯε͕ൃੜ աڈʹىಈ͍ͯͨ͠ΠϯελϯεͷIPΞυϨεΛϩά͔Βऩू 10୆͙Β͍Ұؾʹىಈ͢Δ ࣦഊͨ͠΍ͭͷIPΞυϨεΛݟΔ

  62. Ṗ͸͢΂ͯ...

  63. աڈʹ࢖༻͞Εͨ͜ͱ͕ ͋ΔIPΞυϨε͕࠶ׂΓ ౰ͯ͞ΕͨΠϯελϯε ͕ElastcacheRedisʹܨ ͕Βͳ͍

  64. աڈʹ࢖༻͞Εͨ͜ͱ͕͋ΔIPΞυϨε͕࠶ׂΓ ౰ͯ͞ΕͨΠϯελϯε͕ElastcacheRedisʹ ܨ͕Βͳ͍ ElasticacheRedisͷARPςʔϒϧϦϑϨογϡʹ໰୊͕͋ͬͨ (2015೥6݄౰࣌) αϙʔτͰݸผରԠ (2015೥8݄2िҎ߱ʹ৽نىಈ͞Εͨnode͸໰୊ͳ͍ͦ͏Ͱ͢)

  65. ΞϓϦέʔγϣϯϨϕϧͷ ϔϧενΣοΫΛ͍ͯͯ͠Α͔ͬͨ

  66. ຊ౰ʹ͋ͬͨා͍࿩(2) ϝϯςφϯεฤ

  67. MHAͰDB master੾Γସ͑ ΞϓϦέʔγϣϯΛ͢΂ͯϝϯςϞʔυʹ MHAͰmaster switch

  68. ϝϯς໌͚Α͏ͱͨ͠Β ΞϓϦέʔγϣϯαʔό ͕མ͍ͪͯͨ

  69. ϔϧενΣοΫͰDB΁ͷ઀ଓΛΈ͍ͯͨ DB master͕switch DB΁ͷӬଓ઀ଓ͕੾அ͞ΕΔˠ࣍ͷϦΫΤετͰ࠶઀ଓ(༧ఆ) App͸Plack͕80ϓϩηε ֤ϓϩηε͕੾அͰΤϥʔΛฦ͢ →ͳ͔ͳ͔ϔϧενΣοΫ͕௨Βͳ͍ →Πϯελϯεterminate

  70. ܭըϝϯςͰͳͯ͘΋DB͕ࢮ͵͜ͱ͸͋Δ ϔϧενΣοΫ͕௨Βͳ͍ͱΠϯελϯε͕མͪΔ RDS΍Elasticache͸ͨ·ʹࢮ͵(ͷ͕લఏ)

  71. ʮΠϯελϯεͷࣄނ͸΄΅ىಈ࣌ʯ Ұ౓ਖ਼ৗʹىಈͨ͠Πϯελϯε͕ࢮ͵ͷ͸Πϯελϯεো֐ ͕΄ͱΜͲ ઃఆϛε΍ϛυϧ΢ΣΞͷ໰୊Ͱશ໓͢Δͷ͸·͍ͣ → Ұ౓ਖ਼ৗʹ૊Έࠐ·ΕͨΒΞϓϦέʔγϣϯϨϕϧͷϔϧε νΣοΫ͸͠ͳ͍ʂ

  72. Ұ౓ਖ਼ৗʹ૊Έࠐ·ΕͨΒ… at ίϚϯυΛ࢖͏ ࣗಈىಈͷ࠷ޙʹ at 'now + 5 min' -f

    /usr/local/sbin/confirm-pass-healthcheck ىಈޙ5෼ͷ࣌఺ͰELBͰInServiceͩͬͨΒ touch /dev/shm/pass_healthcheck ͱ͍͏ίϚϯυΛ࣮ߦ
  73. nginxͷϨϕϧͰϔϧενΣοΫΛฦ͢ location /ping { if (-f "/dev/shm/pass_healthcheck") { return 200;

    } # ϑΝΠϧ͕ͳ͚Ε͹ΞϓϦέʔγϣϯͷϔϧενΣοΫ΁ proxy_pass http://app; } tmpfsʹஔ͍ͯ͋ΔͷͰෆҙͷ࠶ىಈ͕͋ͬͯ΋ىಈ࣌ͱಉ͡
  74. ೖΔ΂͖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
  75. ຊ౰ʹ͋ͬͨා͍࿩ ·ͱΊ ੈؒ͸ݫ͍͠

  76. ·ͱΊ Φʔτεέʔϧ͸ίετ࡟ݮʹ༗༻ (ن໛ʹΑΔ) ߟ͑ํͷมֵΛഭΒΕΔ (ָ͍͠) ͪΌΜͱ੍ޚ͢Δͷ͸େม (େม)