HTTPリクエスト単位でコンテナを再配置する仮想化基盤の高速なスケジューリング手法
by
MATSUMOTO Ryosuke
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Slide 1
Slide 1 text
FastContainerΞʔΩςΫνϟʹΑΔԾԽج൫ͷߋͳΔ৴པੑ্ʹ͚ͯ দຊ྄հɼాதྒհɼ܀ྛ ݈ଠ / Pepabo R&D Institute, GMO Pepabo, Inc. 2018.05.12 ୈ2ճ Web System Architecture ݚڀձ HTTPϦΫΤετ୯ҐͰίϯςφΛ࠶ஔ͢Δ ԾԽج൫ͷߴͳεέδϡʔϦϯάख๏
Slide 2
Slide 2 text
1. എܠͱత 2. ؔ࿈ݚڀͷ՝ 3. ఏҊख๏ 4. ࣮ݧͱߟ 5. ·ͱΊͱࠓޙͷల 2 ࣍
Slide 3
Slide 3 text
1. എܠͱత
Slide 4
Slide 4 text
• ݸਓ͕ͨΓલʹଟछଟ༷ͳWebαΠτΛ࣋ͭ࣌ • ΫϥυɾVPSͷΑ͏ͳࣗ༝ͱִڥʢΠϯελϯεʣʹର͢Δཁٻ • SNSΛհͯ͠ݸਓͷίϯςϯπΛ֦ࢄ͍࣌͢͠ • ݸਓͷWebαΠτͷΞΫηεूத͢Δػձͷ૿େ • ݸਓαΠτͰΞΫηεूதোʹڧ͍৴པੑͷ͋Δج൫͕ඞཁ 4 ݸਓͷWebαΠτͷΞΫηεूத৴པੑ
Slide 5
Slide 5 text
1. ΠϯελϯεՃॲཧ͕Ͱ͋Δ͜ͱΛղܾ • Πϯελϯεͷঢ়ଶͷఀࢭɾىಈɾεέʔϦϯάΛߴʹ॥ • ϦΫΤετ୯ҐͰঢ়ଶΛܾఆ 2. ϋʔυΣΞϦιʔεͷར༻ޮͷ͞Λղܾ • ϦΫΤετ͕ແ͍ΠϯελϯεҰఆظؒىಈޙʹఀࢭ ΠϯελϯεΛߴूੵʹऩ༰ՄೳͰมԽʹڧ͍ԾԽج൫ͷఏҊ 5 Πϯελϯε͕॥͢ΔมԽʹڧ͍ج൫ͷఏҊ※1 ˞দຊ྄հ ۙ౻Ӊஐ࿕ ࡾ༔հ ྗ݈࣍ ܀ྛ݈ଠ 'BTU$POUBJOFS࣮ߦڥͷมԽʹૉૣ͘దԠͰ͖Δ߃ৗੑΛ࣋ ͭγεςϜΞʔΩςΫνϟ Πϯλʔωοτͱӡ༻ٕज़γϯϙδϜจूɼɼʢʣ /PW
Slide 6
Slide 6 text
• ෳΠϯελϯεՔಇͤ͞Δ͜ͱʹΑΔίετͷ૿େ • ෳͷऩ༰αʔόʹΠϯελϯεΛͦΕͧΕՔಇͤ͞Δ͜ͱͰՄ༻ੑΛ୲อ • ߴूੵʹΠϯελϯεऩ༰͢Δ؍͔ΒͰ͖Δ͚ͩϦιʔεΛઅ͍ͨ͠ • ࣮ӡ༻࣌ͷՄ༻ੑతͱෛՙࢄతͷࠞࡏʹΑΔෳࡶ͞ • Մ༻ੑతͷΠϯελϯεΛίετΛཧ༝ʹෛՙࢄʹͬͯ͠·͏ • Β͵ؒʹऩ༰αʔόো࣌ʹੑೳॖୀঢ়ଶʹͳΓೋ࣍ো 6 FastContainer͓Αͼؔ࿈ݚڀͷՄ༻ੑͷ՝
Slide 7
Slide 7 text
1. Πϯελϯε্ͰWordPressͷΑ͏ͳҰൠతͳWebΞϓϦ͕ಈ࡞Մೳ 2. ୯ҰΠϯελϯεͰऩ༰αʔόো࣌ʹผαʔόࣗಈతʹ࠶ஔՄೳ 3. Πϯελϯεͷ࠶ஔͷ࣮ߦ࣌Ͱ͋ͬͯඵͷԆͰHTTPλΠϜΞτ͢ Δ͜ͱͳ͘ΦϯϥΠϯͰϨεϙϯεΛૹ৴Մೳ ߴूੵʢݸਓ͚ͷՁ֨Խʣͱ৴པੑੑೳͷόϥϯεΛͱΔͨΊͷख๏ 7 ݚڀͷత: ϦΫΤετ୯Ґ ͰͷΠϯελϯε࠶ஔ
Slide 8
Slide 8 text
2. ؔ࿈ݚڀͷ՝
Slide 9
Slide 9 text
• FastContainer ※1HTTPϦΫΤετʹԠͯ͡Ԡత͔ͭߴʹΠϯελϯε ͷঢ়ଶʢىಈɺఀࢭɺҠಈɺෳɺϦιʔε૿ݮʣΛܾఆ • ΞΫηεʹԠͨ͡ϦΞΫςΟϒͳεέʔϦϯάॲཧ͕Մೳ • ΫϥυαʔϏεج൫༧ΊΠϯελϯεΛىಈͤͯ͞ϦΫΤετΛॲཧ • ΞΫηεूத࣌༧ଌత͔ͭϓϩΞΫςΟϒͳεέʔϦϯάॲཧ͕ඞཁ 9 FastContainerͱΫϥυαʔϏεج൫ͷಛ ˞দຊ྄հ ۙ౻Ӊஐ࿕ ࡾ༔հ ྗ݈࣍ ܀ྛ݈ଠ 'BTU$POUBJOFS࣮ߦڥͷมԽʹૉૣ͘దԠͰ͖ Δ߃ৗੑΛ࣋ͭγεςϜΞʔΩςΫνϟ Πϯλʔωοτͱӡ༻ٕज़γϯϙδϜจूɼɼ ʢʣ ݄
Slide 10
Slide 10 text
1. WordPressͷΑ͏ͳҰൠతͳWebΞϓϦέʔγϣϯΛར༻Մೳ 2. Πϯελϯεͷऩ༰αʔόͷো࣌ʹHTTPλΠϜΞτ͕ੜ͡ͳ͍ϨϕϧͰ αʔϏεΛܧଓͰ͖ΔఔͷՄ༻ੑΛఆ Ձ֨WebϗεςΟϯάج൫ɺΫϥυج൫ɺFastContainerج൫Ͱཧ 10 ຊݚڀʹ͓͚ΔԾԽج൫ͱՄ༻ੑͷલఏ
Slide 11
Slide 11 text
• ҰൠతͳWebΞϓϦέʔγϣϯ͕ར༻Մೳ • Ձ֨Λ࣮ݱ͢ΔͨΊߴूੵʹϗετΛऩ༰ՄೳͳԾϗετํ͕ࣜҰൠత • ྫɿ୯ҰͷApacheͰສυϝΠϯͷԾϗετΛॲཧ • ສυϝΠϯΛॲཧ͢ΔApacheΛෳαʔόʹෳஔͯ͠Մ༻ੑΛ୲อ※1 • ෳWebαʔόϓϩηεͷىಈ͕લఏͱͳΓϦιʔε༗ͷίετ͕૿େ 11 Ձ֨WebϗεςΟϯάج൫ͷՄ༻ੑ ˞দຊ྄հ ݪক࢘ দԬً େنڞ༗ܕ8FCόʔνϟϧϗεςΟϯάج൫ͷηΩϡϦςΟͱӡ༻ٕज़ͷ վળ ใॲཧֶձจࢽ 7PM /P QQ .BS
Slide 12
Slide 12 text
• ༷ʑͳWebΞϓϦέʔγϣϯʢϗεςΟϯάΑΓࣗ༝͕ߴ͍ʣ͕ར༻Մೳ • IaaSPaaSΛར༻ͨ͠Πϯελϯε୯ҐͰͷߏங͓ΑͼՄ༻ੑ୲อ͕Ұൠత • ຊݚڀͷՄ༻ੑ͕લఏͷ߹ɺෳऩ༰αʔόʹͦΕͧΕΠϯελϯεΛϗο τελϯόΠํࣜʢىಈࡁΈͷػΠϯελϯεʣͰػ͢Δ͜ͱͰ࣮ݱ • ऩ༰αʔόఀࢭ࣌ʹଈ࣌αʔϏεΛܧଓ͢ΔͨΊ • ෳΠϯελϯεͷىಈ͕લఏͱͳΓϦιʔε༗ͷίετ͕૿େ 12 FastContainerΫϥυج൫ͷՄ༻ੑ
Slide 13
Slide 13 text
13 $MJFOU 4FSWFS "QBDIF ʢWIPTU܈ʣ 4UPSBHF $MJFOU 4FSWFS JOTUBODF" JOTUBODF# JOTUBODF$ 4FSWFS JOTUBODF" 4UPSBHF 4FSWFS "QBDIF ʢWIPTU܈ʣ Ձ֨8FCϗεςΟϯάج൫ͷՄ༻ੑ 'BTU$POUBJOFSΫϥυج൫ͷՄ༻ੑ )551ϦΫΤετ )551ϦΫΤετ
Slide 14
Slide 14 text
14 $MJFOU 4FSWFS "QBDIF ʢWIPTU܈ʣ 4UPSBHF $MJFOU 4FSWFS JOTUBODF" JOTUBODF# JOTUBODF$ 4FSWFS JOTUBODF" 4UPSBHF 4FSWFS "QBDIF ʢWIPTU܈ʣ Ձ֨8FCϗεςΟϯάج൫ͷՄ༻ੑ 'BTU$POUBJOFSΫϥυج൫ͷՄ༻ੑ )551ϦΫΤετ )551ϦΫΤετ ✗ ✗
Slide 15
Slide 15 text
• ݶΒΕͨίετʹ͓͚ΔՄ༻ੑͱෛՙࢄͷཱ͕྆ট͘ো࣌ͷॖୀ • ϗοτελϯόΠͷίετΛ༗ޮ׆༻͢ΔͨΊʹෛՙࢄʹ׆༻ • ӡ༻ܧଓ͢ΔதͰՄ༻ੑͱෛՙࢄͷత͕ࠞࡏ͠ɺো࣌ʹॖୀঢ়ଶ • ॖୀঢ়ଶͰॲཧ͕͍͔ͭͣ෮چલʹαʔϏεఀࢭΛট͘͜ͱ 15 ͦͷଞෳߏʹΑΔՄ༻ੑ୲อͷ՝
Slide 16
Slide 16 text
3. ఏҊख๏
Slide 17
Slide 17 text
1. Πϯελϯε্ͰWordPressͷΑ͏ͳҰൠతͳWebΞϓϦ͕ಈ࡞Մೳ 2. ୯ҰΠϯελϯεͰऩ༰αʔόো࣌ʹผαʔόࣗಈతʹ࠶ஔՄೳ 3. Πϯελϯεͷ࠶ஔͷ࣮ߦ࣌Ͱ͋ͬͯඵͷԆͰHTTPλΠϜΞτ͢ Δ͜ͱͳ͘ΦϯϥΠϯͰϨεϙϯεΛૹ৴Մೳ ͞ΒʹFastContainerʹΑΓɺ࠶ஔ࣌ʹΞΫηε͕ूதͨ͠߹ىಈ͍ͯ͠ Δαʔό্ͰϦΞΫςΟϒʹεέʔϦϯάՄೳʢॖୀ͕ى͖ͳ͍ʣ 17 ఏҊख๏: ϦΫΤετ୯Ґ ͰͷΠϯελϯε࠶ஔ
Slide 18
Slide 18 text
18 4UPSBHF $MJFOU 4FSWFS JOTUBODF" JOTUBODF# JOTUBODF$ 4FSWFS JOTUBODF" 'BTU$POUBJOFSΫϥυج൫ͷՄ༻ੑ 4UPSBHF $MJFOU 4FSWFS JOTUBODF" JOTUBODF# JOTUBODF$ 4FSWFS ఏҊख๏ʴ'BTU$POUBJOFSͷՄ༻ੑ ఏҊख๏ )551ϦΫΤετ )551ϦΫΤετ
Slide 19
Slide 19 text
19 4UPSBHF $MJFOU 4FSWFS JOTUBODF" JOTUBODF# JOTUBODF$ 4FSWFS JOTUBODF" 'BTU$POUBJOFSΫϥυج൫ͷՄ༻ੑ 4UPSBHF $MJFOU 4FSWFS JOTUBODF" JOTUBODF# JOTUBODF$ 4FSWFS ఏҊख๏ʴ'BTU$POUBJOFSͷՄ༻ੑ ఏҊख๏ )551ϦΫΤετ )551ϦΫΤετ JOTUBODF" ✗Ԡతʹ ࠶ஔ ✗
Slide 20
Slide 20 text
HTTP FastContainerͷجຊϑϩʔ 20 8FC1SPYZ ʢOHY@NSVCZ $.%# ʴ "1* 8FC%JTQBUDIFS OHY@NSVCZ $MJFOU ίϯςφ ίϯςφ ίϯςφ w )551ϦΫΤετͷ)PTUOBNF ΛΩʔʹɺ$.%# ߏཧ%# ͔ΒίϯςφͷใΛऔಘ )551 4 ϦΫΤετ w ίϯςφͷ*1ͱϙʔτʹج͍ ͯίϯςφʹϓϩΩγ w ίϯςφ͕-JTUFO͍ͯ͠ͳ͍ ߹$.%#͔Βίϯςφ ใΛಘͯىಈ $POUBJOFS&OHJOF IBDPOJXB ऩ༰ϗετ"
Slide 21
Slide 21 text
1. Web Proxy͔Βऩ༰αʔόʹICMPͰ1ύέοτͷԠΛଌఆ 2. Ԡ͕ᮢΛ͍͑ͯͨΒผͷऩ༰αʔό࠶ஔ → ඇৗʹγϯϓϧͳํࣜͰ࣮ݱՄೳ 21 ߴͳऩ༰ϗετͷࢮ׆ࢹͱ࠶ஔ
Slide 22
Slide 22 text
)PTU04 8FC1SPYZ $.%#"1* $POUBJOFS %JTQBUDIFS $POUBJOFS )PTU04 $POUBJOFS %JTQBUDIFS $POUBJOFS $MJFOU )551 *$.1 *$.1 )551 )551 )551
Slide 23
Slide 23 text
)PTU04 8FC1SPYZ $.%#"1* $POUBJOFS %JTQBUDIFS $POUBJOFS )PTU04 $POUBJOFS %JTQBUDIFS $POUBJOFS $MJFOU )551 *$.1 *$.1 )551 )551 )551 ✗ ࠷ॳͷ࠶ஔ࣌ίϯςφͷىಈ͕ඞཁͰ͋Δ͕ɺ ىಈޙҰఆظؒىಈ͠ଓ͚Δɻ
Slide 24
Slide 24 text
• ICMPͰᮢνΣοΫ͕Ұ࣌తʹޡݕͯ͠Өڹ͕গͳ͍ • FastContainerͳͷͰޡݕͷ࠶ஔ͕ੜͯ͡αʔϏε͕ܧଓ͞ΕΔ • ޡݕͰଞαʔόʹىಈͯ͠͠·ͬͯҰఆ࣌ؒىಈͨ͠Βఀࢭ͢Δ • ݩαʔόʹ࠶ஔ͞ΕͯCMDB্ݩαʔόͷΈʹϦΫΤετ͕ྲྀΕΔ • Ԡ࣌ؒͷᮢλΠϜΞτΛΪϦΪϦ·ͰνϡʔχϯάՄೳ 24 ఏҊख๏ͷϙΠϯτʢICMPࢹͱFastContainerʣ
Slide 25
Slide 25 text
• ୯ҰͷΠϯελϯεͰ͋ͬͯProxyʹΑͬͯࣗతʹՄ༻ੑ͕อͨΕΔ • ෛՙࢄͷΈʹෳΠϯελϯε༻ҙ͢ΔɺͱతΛݶఆͰ͖Δ • ݪཧతʹॖୀ͕ൃੜ͠ͳ͍ 25 ఏҊख๏ͷϙΠϯτʢॖୀͷղܾʣ
Slide 26
Slide 26 text
4. ࣮ݧͱߟ
Slide 27
Slide 27 text
FastContainerͷγεςϜߏ 27
Slide 28
Slide 28 text
28
Slide 29
Slide 29 text
• Web Proxyͱίϯςφऩ༰ϗετؒͷ ICMPԠ࣌ؒ • 1ύέοτ1500byteͷԠΛ1000ճ ଌఆ 29 ༧උ࣮ݧ1ʢICMPͷԠ࣌ؒʣ
Slide 30
Slide 30 text
• 40byteͷHTMLΛฦ͢ Apache+mod_phpͷίϯςφ • ϦΫΤετΛૹ৴ޙɺԠతʹ ىಈͯ͠ϨεϙϯεΛฦ͢·Ͱ ͷ࣌ؒΛ500ճଌఆ 30 ༧උ࣮ݧ1ʢίϯςφͷىಈ࣌ؒʣ
Slide 31
Slide 31 text
• 40όΠτͷHTMLΛฦ͢ίϯςφʢCPUίΞ1ɺϝϞϦ512MBʣ • ಉ࣌ଓ10૯ଓ10ສͷϕϯνϚʔΫɺICMPͷᮢ10msec • WordPressͷτοϓϖʔδΛฦ͢ίϯςφʢCPUίΞ4ɺϝϞϦ512MBʣ • ಉ࣌ଓ10૯ଓ5ઍͷϕϯνϚʔΫɺICMPͷᮢ100msec • ϕϯνϚʔΫͷͷ͕࣌ؒܦաͨ͠ஈ֊Ͱऩ༰αʔόΛiptableͰૄ௨அ 31 ຊ࣮ݧ
Slide 32
Slide 32 text
40όΠτͷindex.htmlΛฦ͢ίϯςφ 32
Slide 33
Slide 33 text
WordPressͷτοϓϖʔδΛฦ͢ίϯςφ 33
Slide 34
Slide 34 text
• ICMPࢹͷᮢνϡʔχϯάʹΑΓߴͳ࠶ஔΛ࣮ݱ • ίϯςφͷىಈ͕࣌ؒࢧత • ίϯςφͷىಈ࣌ؒΛඦɾेmsecҎԼʹͰ͖ΕWordPressʹ͓͍ͯ Φʔόʔϔου͕ΞϓϦέʔγϣϯ • ݱ࣌ͰҰ࣌తͳԆͰ͋ΔͨΊSLA࣍ୈͰ࣮༻ԽՄೳ 34 ߟ
Slide 35
Slide 35 text
• ProxyͱDispatcherؒͷॲཧதʹϗετ͕ఀࢭͨ͠߹ϦΫΤετΛऔΓ͜ ΅͋͢Δ • ͜ΕैདྷͷෳΠϯελϯεͰಉ༷ 35 ߟ 8FC1SPYZ ʢOHY@NSVCZ $.%# ʴ "1* 8FC%JTQBUDIFS OHY@NSVCZ $MJFOU ίϯςφ ίϯςφ $POUBJOFS&OHJOF IBDPOJXB ΓΛ·ͨͣʹ ऩ༰αʔόμϯ
Slide 36
Slide 36 text
5. ·ͱΊͱࠓޙͷల
Slide 37
Slide 37 text
• ୯ҰΠϯελϯεͰՄ༻ੑΛ୲อ͢ΔߴͳεέδϡʔϦϯάख๏ΛఏҊ • ෳΠϯελϯεΛඞཁͱ͠ͳ͍ͨΊϦιʔείετ͕͍ • ࣮ݧ͔Βݱ࣌Ͱ࣮༻ՄೳͳϨϕϧͷ࠶ஔͷੑೳ͕ಘΒΕͨ • ར༻ऀෳͷΠϯελϯεར༻Λෛՙࢄ༻్ʹूதͰ͖ΔΑ͏ʹͳΔ 37 ·ͱΊ
Slide 38
Slide 38 text
• ࠶ஔͷॲཧ࣌ؒʹ͓͍ͯίϯςφͷWebαʔόͷىಈ͕࣌ؒࢧత • WebαʔόΛेmsecͰىಈ͢Δ൚༻తͳىಈ࣌ؒॖख๏Λݕূத • IOT42Ͱൃද༧ఆ • ຊݚڀͷεέδϡʔϦϯάख๏ΛԠ༻ͯࣗ͠తͳෛՙࢄͷͨΊͷϋʔυΣ ΞεέδϡʔϦϯάख๏ൃల͍͖͍ͤͯͨ͞ 38 ࠓޙͷల
Slide 39
Slide 39 text
ContainerͷதͷϛυϧΣΞͷىಈߴԽPoC 39 SFGl04ϨΠϠͰ8FCαʔό͕ىಈ࣌ʹ࣮ߦ͢ΔγεςϜίʔϧΛࢹ͠ىಈྃલͷϓϩηεΛΠϝʔδԽ͢ΔlIUUQ ICNBUTVNPUPSKQFOUSZ