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

HTTPリクエスト単位でコンテナを再配置する仮想化基盤の高速なスケジューリング手法

 HTTPリクエスト単位でコンテナを再配置する仮想化基盤の高速なスケジューリング手法

HTTPリクエスト単位でコンテナを再配置する仮想化基盤の高速なスケジューリング手法
FastContainerアーキテクチャによる仮想化基盤の更なる信頼性向上に向けて

松本亮介,田中諒介,栗林 健太郎 / Pepabo R&D Institute, GMO Pepabo, Inc.
2018.05.17 第41回 インターネットと運用技術研究会

MATSUMOTO Ryosuke
PRO

May 18, 2018
Tweet

More Decks by MATSUMOTO Ryosuke

Other Decks in Technology

Transcript

  1. FastContainerΞʔΩςΫνϟʹΑΔԾ૝Խج൫ͷߋͳΔ৴པੑ޲্ʹ޲͚ͯ
    দຊ྄հɼాதྒհɼ܀ྛ ݈ଠ࿠ / Pepabo R&D Institute, GMO Pepabo, Inc.
    2018.05.17 ୈ41ճ Πϯλʔωοτͱӡ༻ٕज़ݚڀձ
    HTTPϦΫΤετ୯ҐͰίϯςφΛ࠶഑ஔ͢Δ
    Ծ૝Խج൫ͷߴ଎ͳεέδϡʔϦϯάख๏

    View Slide

  2. 1. എܠͱ໨త
    2. ؔ࿈ݚڀͷ՝୊
    3. ఏҊख๏
    4. ࣮ݧͱߟ࡯
    5. ·ͱΊͱࠓޙͷల๬
    2
    ໨࣍

    View Slide

  3. 1.
    എܠͱ໨త

    View Slide

  4. • ݸਓ͕౰ͨΓલʹଟछଟ༷ͳWebαΠτΛ࣋ͭ࣌୅
    • Ϋϥ΢υɾVPSͷΑ͏ͳࣗ༝౓ͱִ཭؀ڥʢΠϯελϯεʣʹର͢Δཁٻ
    • SNSΛհͯ͠ݸਓͷίϯςϯπΛ֦ࢄ͠΍͍࣌͢୅
    • ݸਓͷWebαΠτ΁ͷΞΫηεूத͢Δػձͷ૿େ
    • ݸਓαΠτͰ΋ΞΫηεूத΍ো֐ʹڧ͍৴པੑͷ͋Δج൫͕ඞཁ
    4
    ݸਓͷWebαΠτ΁ͷΞΫηεूத΍৴པੑ

    View Slide

  5. 1. Πϯελϯε௥Ճॲཧ͕௿଎Ͱ͋Δ͜ͱΛղܾ
    • Πϯελϯεͷঢ়ଶͷఀࢭɾىಈɾεέʔϦϯάΛߴ଎ʹ॥؀
    • ϦΫΤετ୯ҐͰঢ়ଶΛܾఆ
    2. ϋʔυ΢ΣΞϦιʔεͷར༻ޮ཰ͷ௿͞Λղܾ
    • ϦΫΤετ͕ແ͍Πϯελϯε͸Ұఆظؒىಈޙʹఀࢭ
    ΠϯελϯεΛߴूੵʹऩ༰ՄೳͰมԽʹڧ͍Ծ૝Խج൫ͷఏҊ
    5
    Πϯελϯε͕॥؀͢ΔมԽʹڧ͍ج൫ͷఏҊ※1
    ˞দຊ྄հ ۙ౻Ӊஐ࿕ ࡾ୐༔հ ྗ෢݈࣍ ܀ྛ݈ଠ࿠ 'BTU$POUBJOFS࣮ߦ؀ڥͷมԽʹૉૣ͘దԠͰ͖Δ߃ৗੑΛ࣋
    ͭγεςϜΞʔΩςΫνϟ Πϯλʔωοτͱӡ༻ٕज़γϯϙδ΢Ϝ࿦จूɼɼʢʣ /PW

    View Slide

  6. • ෳ਺ΠϯελϯεՔಇͤ͞Δ͜ͱʹΑΔίετͷ૿େ
    • ෳ਺ͷऩ༰αʔόʹΠϯελϯεΛͦΕͧΕՔಇͤ͞Δ͜ͱͰՄ༻ੑΛ୲อ
    • ߴूੵʹΠϯελϯεऩ༰͢Δ؍఺͔ΒͰ͖Δ͚ͩϦιʔεΛઅ໿͍ͨ͠
    • ࣮ӡ༻࣌ͷՄ༻ੑ໨తͱෛՙ෼ࢄ໨తͷࠞࡏʹΑΔෳࡶ͞
    • Մ༻ੑ໨తͷΠϯελϯεΛίετΛཧ༝ʹෛՙ෼ࢄʹ΋࢖ͬͯ͠·͏
    • ஌Β͵ؒʹऩ༰αʔόো֐࣌ʹ͸ੑೳ΋ॖୀঢ়ଶʹͳΓೋ࣍ো֐΋
    6
    FastContainer͓Αͼؔ࿈ݚڀͷՄ༻ੑͷ՝୊

    View Slide

  7. 1. Πϯελϯε্ͰWordPressͷΑ͏ͳҰൠతͳWebΞϓϦ͕ಈ࡞Մೳ
    2. ୯ҰΠϯελϯεͰ΋ऩ༰αʔόো֐࣌ʹ͸ผαʔό΁ࣗಈతʹ࠶഑ஔՄೳ
    3. Πϯελϯεͷ࠶഑ஔͷ࣮ߦ࣌Ͱ͋ͬͯ΋਺ඵͷ஗ԆͰHTTPλΠϜΞ΢τ͢
    Δ͜ͱͳ͘ΦϯϥΠϯͰϨεϙϯεΛૹ৴Մೳ
    ߴूੵʢݸਓ޲͚ͷ௿Ձ֨Խʣͱ৴པੑ΍ੑೳͷόϥϯεΛͱΔͨΊͷख๏
    7
    ݚڀͷ໨త: ϦΫΤετ୯Ґ ͰͷΠϯελϯε࠶഑ஔ

    View Slide

  8. 2.
    ؔ࿈ݚڀͷ՝୊

    View Slide

  9. • FastContainer ※1͸HTTPϦΫΤετʹԠͯ͡൓Ԡత͔ͭߴ଎ʹΠϯελϯε
    ͷঢ়ଶʢىಈɺఀࢭɺҠಈɺෳ੡ɺϦιʔε૿ݮ౳ʣΛܾఆ
    • ΞΫηε਺ʹԠͨ͡ϦΞΫςΟϒͳεέʔϦϯάॲཧ͕Մೳ
    • Ϋϥ΢υαʔϏεج൫͸༧ΊΠϯελϯεΛىಈͤͯ͞ϦΫΤετΛॲཧ
    • ΞΫηεूத࣌͸༧ଌత͔ͭϓϩΞΫςΟϒͳεέʔϦϯάॲཧ͕ඞཁ
    9
    FastContainerͱΫϥ΢υαʔϏεج൫ͷಛ௃
    ˞দຊ྄հ ۙ౻Ӊஐ࿕ ࡾ୐༔հ ྗ෢݈࣍ ܀ྛ݈ଠ࿠ 'BTU$POUBJOFS࣮ߦ؀ڥͷมԽʹૉૣ͘దԠͰ͖
    Δ߃ৗੑΛ࣋ͭγεςϜΞʔΩςΫνϟ Πϯλʔωοτͱӡ༻ٕज़γϯϙδ΢Ϝ࿦จूɼɼ
    ʢʣ ೥݄

    View Slide

  10. 1. WordPressͷΑ͏ͳҰൠతͳWebΞϓϦέʔγϣϯΛར༻Մೳ
    2. Πϯελϯεͷऩ༰αʔόͷো֐࣌ʹHTTPλΠϜΞ΢τ͕ੜ͡ͳ͍ϨϕϧͰ
    αʔϏεΛܧଓͰ͖Δఔ౓ͷՄ༻ੑΛ૝ఆ
    ௿Ձ֨WebϗεςΟϯάج൫ɺΫϥ΢υج൫ɺFastContainerج൫Ͱ੔ཧ
    10
    ຊݚڀʹ͓͚ΔԾ૝Խج൫ͱՄ༻ੑͷલఏ

    View Slide

  11. • ҰൠతͳWebΞϓϦέʔγϣϯ͕ར༻Մೳ
    • ௿Ձ֨Λ࣮ݱ͢ΔͨΊߴूੵʹϗετΛऩ༰ՄೳͳԾ૝ϗετํ͕ࣜҰൠత
    • ྫɿ୯ҰͷApacheͰ਺ສυϝΠϯͷԾ૝ϗετΛॲཧ
    • ਺ສυϝΠϯΛॲཧ͢ΔApacheΛෳ਺αʔόʹෳ਺഑ஔͯ͠Մ༻ੑΛ୲อ※1
    • ෳ਺Webαʔόϓϩηεͷىಈ͕લఏͱͳΓϦιʔε઎༗ͷίετ͕૿େ
    11
    ௿Ձ֨WebϗεςΟϯάج൫ͷՄ༻ੑ
    ˞দຊ྄հ ઒ݪক࢘ দԬً෉ େن໛ڞ༗ܕ8FCόʔνϟϧϗεςΟϯάج൫ͷηΩϡϦςΟͱӡ༻ٕज़ͷ
    վળ ৘ใॲཧֶձ࿦จࢽ 7PM /P QQ .BS

    View Slide

  12. • ༷ʑͳWebΞϓϦέʔγϣϯʢϗεςΟϯάΑΓࣗ༝౓͕ߴ͍ʣ͕ར༻Մೳ
    • IaaS΍PaaSΛར༻ͨ͠Πϯελϯε୯ҐͰͷߏங͓ΑͼՄ༻ੑ୲อ͕Ұൠత
    • ຊݚڀͷՄ༻ੑ͕લఏͷ৔߹ɺෳ਺ऩ༰αʔόʹͦΕͧΕΠϯελϯεΛϗο
    τελϯόΠํࣜʢىಈࡁΈͷ଴ػΠϯελϯεʣͰ଴ػ͢Δ͜ͱͰ࣮ݱ
    • ऩ༰αʔόఀࢭ࣌ʹ΋ଈ࣌αʔϏεΛܧଓ͢ΔͨΊ
    • ෳ਺Πϯελϯεͷىಈ͕લఏͱͳΓϦιʔε઎༗ͷίετ͕૿େ
    12
    FastContainer΍Ϋϥ΢υج൫ͷՄ༻ੑ

    View Slide

  13. 13
    $MJFOU
    4FSWFS
    "QBDIF
    ʢWIPTU܈ʣ
    4UPSBHF
    $MJFOU
    4FSWFS
    JOTUBODF"
    JOTUBODF#
    JOTUBODF$
    4FSWFS
    JOTUBODF"
    4UPSBHF
    4FSWFS
    "QBDIF
    ʢWIPTU܈ʣ
    ௿Ձ֨8FCϗεςΟϯάج൫ͷՄ༻ੑ 'BTU$POUBJOFS΍Ϋϥ΢υج൫ͷՄ༻ੑ
    )551ϦΫΤετ )551ϦΫΤετ

    View Slide

  14. 14
    $MJFOU
    4FSWFS
    "QBDIF
    ʢWIPTU܈ʣ
    4UPSBHF
    $MJFOU
    4FSWFS
    JOTUBODF"
    JOTUBODF#
    JOTUBODF$
    4FSWFS
    JOTUBODF"
    4UPSBHF
    4FSWFS
    "QBDIF
    ʢWIPTU܈ʣ
    ௿Ձ֨8FCϗεςΟϯάج൫ͷՄ༻ੑ 'BTU$POUBJOFS΍Ϋϥ΢υج൫ͷՄ༻ੑ
    )551ϦΫΤετ
    )551ϦΫΤετ


    View Slide

  15. • ݶΒΕͨίετʹ͓͚ΔՄ༻ੑͱෛՙ෼ࢄͷཱ͕྆ট͘ো֐࣌ͷॖୀ໰୊
    • ϗοτελϯόΠͷίετΛ༗ޮ׆༻͢ΔͨΊʹෛՙ෼ࢄʹ΋׆༻
    • ӡ༻ܧଓ͢ΔதͰՄ༻ੑͱෛՙ෼ࢄͷ໨త͕ࠞࡏ͠ɺো֐࣌ʹॖୀঢ়ଶ΁
    • ॖୀঢ়ଶͰॲཧ͕௥͍͔ͭͣ෮چલʹαʔϏεఀࢭΛট͘͜ͱ΋
    15
    ͦͷଞෳ਺୆ߏ੒ʹΑΔՄ༻ੑ୲อͷ՝୊

    View Slide

  16. 3.
    ఏҊख๏

    View Slide

  17. 1. Πϯελϯε্ͰWordPressͷΑ͏ͳҰൠతͳWebΞϓϦ͕ಈ࡞Մೳ
    2. ୯ҰΠϯελϯεͰ΋ऩ༰αʔόো֐࣌ʹ͸ผαʔό΁ࣗಈతʹ࠶഑ஔՄೳ
    3. Πϯελϯεͷ࠶഑ஔͷ࣮ߦ࣌Ͱ͋ͬͯ΋਺ඵͷ஗ԆͰHTTPλΠϜΞ΢τ͢
    Δ͜ͱͳ͘ΦϯϥΠϯͰϨεϙϯεΛૹ৴Մೳ
    ͞ΒʹFastContainerʹΑΓɺ࠶഑ஔ࣌ʹΞΫηε͕ूதͨ͠৔߹͸ىಈ͍ͯ͠
    Δαʔό্ͰϦΞΫςΟϒʹεέʔϦϯά΋Մೳʢॖୀ໰୊͕ى͖ͳ͍ʣ
    17
    ఏҊख๏: ϦΫΤετ୯Ґ ͰͷΠϯελϯε࠶഑ஔ

    View Slide

  18. 18
    4UPSBHF
    $MJFOU
    4FSWFS
    JOTUBODF"
    JOTUBODF#
    JOTUBODF$
    4FSWFS
    JOTUBODF"
    'BTU$POUBJOFS΍Ϋϥ΢υج൫ͷՄ༻ੑ
    4UPSBHF
    $MJFOU
    4FSWFS
    JOTUBODF"
    JOTUBODF#
    JOTUBODF$
    4FSWFS
    ఏҊख๏ʴ'BTU$POUBJOFSͷՄ༻ੑ
    ఏҊख๏
    )551ϦΫΤετ )551ϦΫΤετ

    View Slide

  19. 19
    4UPSBHF
    $MJFOU
    4FSWFS
    JOTUBODF"
    JOTUBODF#
    JOTUBODF$
    4FSWFS
    JOTUBODF"
    'BTU$POUBJOFS΍Ϋϥ΢υج൫ͷՄ༻ੑ
    4UPSBHF
    $MJFOU
    4FSWFS
    JOTUBODF"
    JOTUBODF#
    JOTUBODF$
    4FSWFS
    ఏҊख๏ʴ'BTU$POUBJOFSͷՄ༻ੑ
    ఏҊख๏
    )551ϦΫΤετ )551ϦΫΤετ
    JOTUBODF"
    ✗൓Ԡతʹ
    ࠶഑ஔ

    View Slide

  20. HTTP FastContainerͷجຊϑϩʔ
    20
    8FC1SPYZ
    ʢ[email protected]

    $.%#
    ʴ
    "1*
    8FC%JTQBUDIFS
    [email protected]

    $MJFOU ίϯςφ
    ίϯςφ
    ίϯςφ
    w )551ϦΫΤετͷ)PTUOBNF
    ΛΩʔʹɺ$.%# ߏ੒؅ཧ%#

    ͔Βίϯςφͷ৘ใΛऔಘ
    )551 4

    ϦΫΤετ
    w ίϯςφͷ*1ͱϙʔτʹج͍
    ͯίϯςφʹϓϩΩγ
    w ίϯςφ͕-JTUFO͍ͯ͠ͳ͍
    ৔߹͸$.%#͔Βίϯςφ
    ৘ใΛಘͯىಈ
    $POUBJOFS&OHJOF
    IBDPOJXB

    ऩ༰ϗετ"

    View Slide

  21. 1. Web Proxy͔Βऩ༰αʔόʹICMPͰ1ύέοτͷԠ౴଎౓Λଌఆ
    2. Ԡ౴଎౓͕ᮢ஋Λ௒͍͑ͯͨΒผͷऩ༰αʔό΁࠶഑ஔ
    → ඇৗʹγϯϓϧͳํࣜͰ࣮ݱՄೳ
    21
    ߴ଎ͳऩ༰ϗετͷࢮ׆؂ࢹͱ࠶഑ஔ

    View Slide

  22. )PTU04
    8FC1SPYZ
    $.%#"1*
    $POUBJOFS
    %JTQBUDIFS
    $POUBJOFS
    )PTU04
    $POUBJOFS
    %JTQBUDIFS
    $POUBJOFS
    $MJFOU
    )551 *$.1
    *$.1
    )551
    )551
    )551

    View Slide

  23. )PTU04
    8FC1SPYZ
    $.%#"1*
    $POUBJOFS
    %JTQBUDIFS
    $POUBJOFS
    )PTU04
    $POUBJOFS
    %JTQBUDIFS
    $POUBJOFS
    $MJFOU
    )551 *$.1
    *$.1
    )551
    )551
    )551

    ࠷ॳͷ࠶഑ஔ࣌͸ίϯςφͷىಈ͕ඞཁͰ͋Δ͕ɺ
    ىಈޙ͸Ұఆظؒىಈ͠ଓ͚Δɻ

    View Slide

  24. • ICMPͰᮢ஋νΣοΫ͕Ұ࣌తʹޡݕ஌ͯ͠΋Өڹ͕গͳ͍
    • FastContainerͳͷͰޡݕ஌ͷ࠶഑ஔ͕ੜͯ͡΋αʔϏε͕ܧଓ͞ΕΔ
    • ޡݕ஌Ͱଞαʔόʹىಈͯ͠͠·ͬͯ΋Ұఆ࣌ؒىಈͨ͠Βఀࢭ͢Δ
    • ݩαʔόʹ࠶഑ஔ͞ΕͯCMDB্͸ݩαʔόͷΈʹϦΫΤετ͕ྲྀΕΔ
    • Ԡ౴࣌ؒͷᮢ஋΍λΠϜΞ΢τΛΪϦΪϦ·ͰνϡʔχϯάՄೳ
    24
    ఏҊख๏ͷϙΠϯτʢICMP؂ࢹͱFastContainerʣ

    View Slide

  25. • ୯ҰͷΠϯελϯεͰ͋ͬͯ΋ProxyʹΑͬͯࣗ཯తʹՄ༻ੑ͕อͨΕΔ
    • ෛՙ෼ࢄͷΈʹෳ਺Πϯελϯε༻ҙ͢Δɺͱ໨తΛݶఆͰ͖Δ
    • ݪཧతʹॖୀ໰୊͕ൃੜ͠ͳ͍
    25
    ఏҊख๏ͷϙΠϯτʢॖୀ໰୊ͷղܾʣ

    View Slide

  26. 4.
    ࣮ݧͱߟ࡯

    View Slide

  27. FastContainerͷγεςϜߏ੒
    27

    View Slide

  28. 28

    View Slide

  29. • Web Proxyͱίϯςφऩ༰ϗετؒͷ
    ICMPԠ౴࣌ؒ
    • 1ύέοτ1500byteͷԠ౴଎౓Λ1000ճ
    ଌఆ
    29
    ༧උ࣮ݧ1ʢICMPͷԠ౴࣌ؒʣ

    View Slide

  30. • 40byteͷHTMLΛฦ͢
    Apache+mod_phpͷίϯςφ
    • ϦΫΤετΛૹ৴ޙɺ൓Ԡతʹ
    ىಈͯ͠ϨεϙϯεΛฦ͢·Ͱ
    ͷ࣌ؒΛ500ճଌఆ
    30
    ༧උ࣮ݧ1ʢίϯςφͷىಈ࣌ؒʣ

    View Slide

  31. • 40όΠτͷHTMLΛฦ͢ίϯςφʢCPUίΞ1ɺϝϞϦ512MBʣ
    • ಉ࣌઀ଓ਺10૯઀ଓ਺10ສͷϕϯνϚʔΫɺICMPͷᮢ஋10msec
    • WordPressͷτοϓϖʔδΛฦ͢ίϯςφʢCPUίΞ4ɺϝϞϦ512MBʣ
    • ಉ࣌઀ଓ਺10૯઀ଓ਺5ઍͷϕϯνϚʔΫɺICMPͷᮢ஋100msec
    • ϕϯνϚʔΫͷ൒෼ͷ͕࣌ؒܦաͨ͠ஈ֊Ͱऩ༰αʔόΛiptableͰૄ௨੾அ
    31
    ຊ࣮ݧ

    View Slide

  32. 40όΠτͷindex.htmlΛฦ͢ίϯςφ
    32

    View Slide

  33. WordPressͷτοϓϖʔδΛฦ͢ίϯςφ
    33

    View Slide

  34. • ICMP؂ࢹͷᮢ஋νϡʔχϯάʹΑΓߴ଎ͳ࠶഑ஔΛ࣮ݱ
    • ίϯςφͷىಈ͕࣌ؒࢧ഑త
    • ίϯςφͷىಈ࣌ؒΛ਺ඦɾ਺ेmsecҎԼʹͰ͖Ε͹WordPressʹ͓͍ͯ
    ͸Φʔόʔϔου͕ΞϓϦέʔγϣϯ΁
    • ݱ࣌఺Ͱ΋Ұ࣌తͳ஗ԆͰ͋ΔͨΊSLA࣍ୈͰ࣮༻Խ΋Մೳ
    34
    ߟ࡯

    View Slide

  35. • ProxyͱDispatcherؒͷॲཧதʹϗετ͕ఀࢭͨ͠৔߹͸ϦΫΤετΛऔΓ͜
    ΅͢໰୊͸͋Δ
    • ͜Ε͸ैདྷͷෳ਺ΠϯελϯεͰ΋ಉ༷
    35
    ߟ࡯
    8FC1SPYZ
    ʢ[email protected]

    $.%#
    ʴ
    "1*
    8FC%JTQBUDIFS
    [email protected]

    $MJFOU ίϯςφ
    ίϯςφ
    $POUBJOFS&OHJOF
    IBDPOJXB

    ໭ΓΛ·ͨͣʹ
    ऩ༰αʔόμ΢ϯ

    View Slide

  36. 5.
    ·ͱΊͱࠓޙͷల๬

    View Slide

  37. • ୯ҰΠϯελϯεͰՄ༻ੑΛ୲อ͢Δߴ଎ͳεέδϡʔϦϯάख๏ΛఏҊ
    • ෳ਺ΠϯελϯεΛඞཁͱ͠ͳ͍ͨΊϦιʔείετ͕௿͍
    • ࣮ݧ͔Βݱ࣌఺Ͱ΋࣮༻ՄೳͳϨϕϧͷ࠶഑ஔͷੑೳ͕ಘΒΕͨ
    • ར༻ऀ͸ෳ਺ͷΠϯελϯεར༻Λෛՙ෼ࢄ༻్ʹूதͰ͖ΔΑ͏ʹͳΔ
    37
    ·ͱΊ

    View Slide

  38. • ࠶഑ஔͷॲཧ࣌ؒʹ͓͍ͯίϯςφ಺ͷWebαʔόͷىಈ͕࣌ؒࢧ഑త
    • WebαʔόΛ਺ेmsecͰىಈ͢Δ൚༻తͳىಈ࣌ؒ୹ॖख๏Λݕূத
    • IOT42Ͱൃද༧ఆ
    • ຊݚڀͷεέδϡʔϦϯάख๏ΛԠ༻ͯࣗ͠཯తͳෛՙ෼ࢄͷͨΊͷϋʔυ΢Σ
    ΞεέδϡʔϦϯάख๏΁ൃల͍͖͍ͤͯͨ͞
    38
    ࠓޙͷల๬

    View Slide

  39. Containerͷதͷϛυϧ΢ΣΞͷىಈߴ଎ԽPoC
    39
    SFGl04ϨΠϠͰ8FCαʔό͕ىಈ࣌ʹ࣮ߦ͢ΔγεςϜίʔϧΛ؂ࢹ͠ىಈ׬ྃ௚લͷϓϩηεΛΠϝʔδԽ͢ΔlIUUQ
    ICNBUTVNPUPSKQFOUSZ

    View Slide