Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
αʔόϓϩηεͷChekpoint/RestoreʹΑΔίϯςφىಈॲཧͷߴԽ দຊ྄հɼதా ༟وɼ܀ྛ ݈ଠ / Pepabo R&D Institute, GMO Pepabo, Inc. 2018.06.28 ୈ42ճ Πϯλʔωοτͱӡ༻ٕज़ݚڀձ 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. ϋʔυΣΞϦιʔεͷར༻ޮͷ͞Λղܾ • ϦΫΤετ͕ແ͍ΠϯελϯεҰఆظؒىಈޙʹఀࢭ • CPU48ίΞ256GBϝϞϦఔͷαʔόʹສ͔ΒेສϗετΛఆ ΠϯελϯεΛߴूੵʹऩ༰ՄೳͰมԽʹڧ͍ԾԽج൫FastContainer 5 Πϯελϯε͕॥͢ΔมԽʹڧ͍ج൫ͷఏҊ※1 ˞দຊ྄հ ۙ౻Ӊஐ࿕ ࡾ༔հ ྗ݈࣍ ܀ྛ݈ଠ 'BTU$POUBJOFS࣮ߦڥͷมԽʹૉૣ͘దԠͰ͖Δ߃ৗੑΛ࣋ͭγεςϜΞʔΩςΫνϟ Πϯλʔωοτͱӡ༻ٕज़γϯϙδϜจूɼɼʢʣ /PW
Slide 6
Slide 6 text
• Մ༻ੑ୲อͷͨΊʹෳΠϯελϯεՔಇͤ͞Δ͜ͱʹΑΔίετͷ૿େ • ෳͷऩ༰αʔόʹΠϯελϯεΛͦΕͧΕՔಇͤ͞Δ͜ͱͰՄ༻ੑΛ୲อ • ߴूੵʹΠϯελϯεऩ༰͢Δ؍͔ΒͰ͖Δ͚ͩϦιʔεΛઅ͍ͨ͠ • ར༻ऀઢͰՄ༻ੑΛ୲อͭͭ͠අ༻Λݮ͍ͨ͠ • ґવͱͯ͠ɺHTTPͷϨεϙϯελΠϜͷ؍͔ΒɺFastContainerͷHTTPϦ ΫΤετܖػͰঢ়ଶΛมߋ͢Δ࣌ؒͷॖ՝ 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
3. ఏҊख๏
Slide 16
Slide 16 text
1. Πϯελϯε্ͰWordPressͷΑ͏ͳҰൠతͳWebΞϓϦ͕ಈ࡞Մೳ 2. ୯ҰΠϯελϯεͰऩ༰αʔόো࣌ʹผαʔόࣗಈతʹ࠶ஔՄೳ 3. Πϯελϯεͷ࠶ஔͷ࣮ߦ࣌Ͱ͋ͬͯඵͷԆͰHTTPλΠϜΞτ͢ Δ͜ͱͳ͘ΦϯϥΠϯͰϨεϙϯεΛૹ৴Մೳ 16 ఏҊख๏: ϦΫΤετ୯Ґ ͰͷΠϯελϯε࠶ஔ
Slide 17
Slide 17 text
17 4UPSBHF $MJFOU 4FSWFS JOTUBODF" JOTUBODF# JOTUBODF$ 4FSWFS JOTUBODF" 'BTU$POUBJOFSΫϥυج൫ͷՄ༻ੑ 4UPSBHF $MJFOU 4FSWFS JOTUBODF" JOTUBODF# JOTUBODF$ 4FSWFS ఏҊख๏ʴ'BTU$POUBJOFSͷՄ༻ੑ ఏҊख๏ )551ϦΫΤετ )551ϦΫΤετ
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ϦΫΤετ JOTUBODF" ✗Ԡతʹ ࠶ஔ ✗
Slide 19
Slide 19 text
HTTP FastContainerͷجຊϑϩʔ 19 8FC1SPYZ ʢOHY@NSVCZ $.%# ʴ "1* 8FC%JTQBUDIFS OHY@NSVCZ $MJFOU ίϯςφ ίϯςφ ίϯςφ w )551ϦΫΤετͷ)PTUOBNF ΛΩʔʹɺ$.%# ߏཧ%# ͔ΒίϯςφͷใΛऔಘ )551 4 ϦΫΤετ w ίϯςφͷ*1ͱϙʔτʹج͍ ͯίϯςφʹϓϩΩγ w ίϯςφ͕-JTUFO͍ͯ͠ͳ͍ ߹$.%#͔Βίϯςφ ใΛಘͯىಈ $POUBJOFS&OHJOF IBDPOJXB ऩ༰ϗετ"
Slide 20
Slide 20 text
1. Web Proxy͔Βऩ༰αʔόʹICMPͰ1ύέοτͷԠΛଌఆ 2. Ԡ͕ᮢΛ͍͑ͯͨΒผͷऩ༰αʔό࠶ஔ 3. ίϯςφىಈ࣌ɺىಈྃલͷঢ়ଶͷϓϩηεΠϝʔδ͔Β෮ݩ → ඇৗʹγϯϓϧͳํࣜͰߴͳ࠶ஔΛ࣮ݱՄೳ → ୯ҰͷίϯςφͰ࣮༻తͳՄ༻ੑΛ୲อՄೳʢϦιʔείετͷݮʣ 20 ߴͳऩ༰ϗετͷࢮ׆ࢹͱ࠶ஔ
Slide 21
Slide 21 text
)PTU04 8FC1SPYZ $.%#"1* $POUBJOFS %JTQBUDIFS $POUBJOFS )PTU04 $POUBJOFS %JTQBUDIFS $POUBJOFS $MJFOU )551 *$.1 *$.1 )551 )551 )551
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
• ICMPͰᮢνΣοΫ͕Ұ࣌తʹޡݕͯ͠Өڹ͕গͳ͍ • FastContainerͳͷͰޡݕͷ࠶ஔ͕ੜͯ͡αʔϏε͕ܧଓ͞ΕΔ • ޡݕͰଞαʔόʹىಈͯ͠͠·ͬͯҰఆ࣌ؒىಈͨ͠Βఀࢭ͢Δ • ݩαʔόʹ࠶ஔ͞ΕͯCMDB্ݩαʔόͷΈʹϦΫΤετ͕ྲྀΕΔ • Ԡ࣌ؒͷᮢλΠϜΞτΛΪϦΪϦ·ͰνϡʔχϯάՄೳ 23 ఏҊख๏ͷϙΠϯτʢICMPࢹͱFastContainerʣ
Slide 24
Slide 24 text
• ίϯςφͷWebαʔόϓϩηεΛىಈྃલͰΠϝʔδԽ(Checkpoint) • ఆظతʹඇಉظͰϓϩηεͷىಈྃલΠϝʔδΛ࡞͓ͯ͘͠ • ϦΫΤετड৴࣌ʹΠϝʔδΛϓϩηεʹ෮ݩ(Restore) • αʔόϓϩηεͷॳظԽॲཧΛεΩοϓ 24 ఏҊख๏ͷϙΠϯτʢCheckpoint/Restoreʣ
Slide 25
Slide 25 text
• αʔόϓϩηεىಈྃલʹಉ༷ͷγεςϜίʔϧΛ࣮ߦ͢Δ͜ͱʹண • Webαʔόͷ߹ɺbind()ɺlisten()ɺsocket()ɺsetsockopt()ͳͲ • αʔόϓϩηεͷىಈྃલͷγεςϜίʔϧΛࢹͯ͠Checkpoint • seccompͰγεςϜίʔϧΛࢹ͠ptraceͰҰ࣌ఀࢭ͔ͯ͠ΒCRIUͰ CheckpointʹΑΔΠϝʔδԽ • ϦΫΤετΛड͚ͯίϯςφΛىಈ͢Δ࣌Πϝʔδ͔ΒRestoreͯ͠ىಈ 25 Checkpoint/RestoreʹΑΔFastContainerͷىಈ
Slide 26
Slide 26 text
αʔόϓϩηεͷCheckpoint/Restoreͷ࣮ 26 SFGl04ϨΠϠͰ8FCαʔό͕ىಈ࣌ʹ࣮ߦ͢ΔγεςϜίʔϧΛࢹ͠ىಈྃલͷϓϩηεΛΠϝʔδԽ͢ΔlIUUQ ICNBUTVNPUPSKQFOUSZ
Slide 27
Slide 27 text
4. ࣮ݧͱߟ
Slide 28
Slide 28 text
FastContainerͷγεςϜߏ 28
Slide 29
Slide 29 text
29
Slide 30
Slide 30 text
• ༧උ࣮ݧ1ɿICMPͷԠ࣌ؒ • ༧උ࣮ݧ2ɿίϯςφͷىಈ࣌ؒ • ༧උ࣮ݧ3ɿϓϩηεͷΠϝʔδԽ(Checkpoint/Restore)ͷ࣮ݧ • ຊ࣮ݧɿWordPressΛஔͨ͠Webαʔόίϯςφ(Checkpoint/Restoreແ͠) 30 ࣮ݧ
Slide 31
Slide 31 text
• Web Proxyͱίϯςφऩ༰ϗετؒͷ ICMPԠ࣌ؒ • 1ύέοτ1500byteͷԠΛ1000ճ ଌఆ 31 ༧උ࣮ݧ1ɿICMPͷԠ࣌ؒ
Slide 32
Slide 32 text
• 40byteͷHTMLΛฦ͢ Apache+mod_phpͷίϯςφ • ϦΫΤετΛૹ৴ޙɺԠతʹ ىಈͯ͠ϨεϙϯεΛฦ͢·Ͱ ͷ࣌ؒΛ500ճଌఆ 32 ༧උ࣮ݧ̎ɿίϯςφͷىಈ࣌ؒ
Slide 33
Slide 33 text
• ComputeͰWebαʔόͷCheckpoint/RestoreͷΛܭଌ • mruby-simplehttpserverͰWebαʔόΛىಈͤ͞setsockopt()Λࢹ • setsockopt()࣮ߦલʹCheckpoint • setsockopt()࣮ߦલʹϝϞϦΛ֬อͯ͠ɺϝϞϦαΠζʹԠͯ͡ Checkpoint/RestoreͷͷมԽΛܭଌ 33 ༧උ࣮ݧ3ɿϓϩηεͷΠϝʔδԽͷ࣮ݧ
Slide 34
Slide 34 text
αʔόϓϩηεͷΠϝʔδԽ(Checkpoint/Restore) 34 $IFDLQPJOU3FTUPSF1SPDFTTJOH5JNFEVFUP.FNPSZ6TBHF 1SPDFTTJOHUJNF .FNPSZVTBHFQFSQSPDFTT<.#> $IFDLQPJOU 3FTUPSF
Slide 35
Slide 35 text
• WordPressͷτοϓϖʔδΛฦ͢ίϯςφʢCPUίΞ4ɺϝϞϦ512MBʣ • ಉ࣌ଓ10૯ଓ5ઍͷϕϯνϚʔΫɺICMPͷᮢ100msec • Checkpoint/Restoreͷಋೖ͕ؒʹ߹͓ͬͯΒͣΠϝʔδԽΛߦΘͣʹ࣮ࢪ • ϕϯνϚʔΫͷͷ͕࣌ؒܦաͨ͠ஈ֊Ͱऩ༰αʔόΛiptableͰૄ௨அ 35 ຊ࣮ݧ
Slide 36
Slide 36 text
WordPressͷτοϓϖʔδΛฦ͢ίϯςφ 36
Slide 37
Slide 37 text
• ίϯςφͷىಈ͕࣌ؒࢧత • ίϯςφͷىಈ࣌ؒΛඦɾेmsecҎԼʹͰ͖ΕWordPressʹ͓͍ͯ Φʔόʔϔου͕WebΞϓϦέʔγϣϯଆ • ϓϩηεͷCheckpoint/RestoreͰରԠՄೳ͔ → γεςϜʹӶҙ࣮த • ݱ࣌Ͱ2ඵҎͱҰ࣌తͳԆ(ϒϥβͰλΠϜΞτ͠ͳ͍ఔ)Ͱ ͋ΔͨΊSLA࣍ୈͰ࣮༻ԽՄೳ 37 ߟ
Slide 38
Slide 38 text
5. ·ͱΊ
Slide 39
Slide 39 text
• ୯ҰΠϯελϯεͰՄ༻ੑΛ୲อ͢ΔߴͳεέδϡʔϦϯάख๏ΛఏҊ • ෳΠϯελϯεΛඞཁͱ͠ͳ͍ͨΊϦιʔείετ͕͍ • ࣮ݧ͔Βݱ࣌Ͱ࣮༻ՄೳͳϨϕϧͷ࠶ஔͷੑೳ͕ಘΒΕͨ • Checkpoint/RestoreͷΈࠐΈʹΑͬͯ͞ΒͳΔ࠶ஔͷߴԽ 39 ·ͱΊ