Slide 1

Slide 1 text

ෛՙ෼ࢄٕज़Λ બͿͱ͖ʹߟ͑Δ͜ͱ ϖύϘ͸ͯͳٕज़େձ ژ౎ גࣜձࣾ͸ͯͳ JENBTBZPTIJ

Slide 2

Slide 2 text

ຊ೔ͷൃද • ࣗݾ঺հ • ෛՙ෼ࢄͷ֓ཁ • αʔό಺Ϧιʔεຖͷෛՙ෼ࢄ • ϩʔϧຖʹෛՙ෼ࢄ • αʔόຖͷෛՙ෼ࢄ • ෛՙ෼ࢄٕज़ͷબͼํͱ·ͱΊ

Slide 3

Slide 3 text

1 ࣗݾ঺հ

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

ID: masayoshi Twitter: yoyogidesaiz ৽ଔ 2016೥4݄ ΢ΣϒΦϖϨʔγϣϯΤϯδχΞ

Slide 6

Slide 6 text

• େֶ • ωοτϫʔΫܥͷݚڀ • SDN(Software-Defined Networking) • ΞϧόΠτͰαʔό؂ࢹۀ຿ • ࢓ࣄ • ωοτϫʔΫ͕த৺ • αʔϏε͕Քಇ͍ͯ͠Δαʔό΋ݟΔ

Slide 7

Slide 7 text

2 ෛՙ෼ࢄٕज़ͷ֓ཁ

Slide 8

Slide 8 text

%BUB$FOUFS %BUB$FOUFS 6TFS 1SPYZ 8FC -PBE#BMBODFS 4FSWFS 8FC %# ଎͍ ஗͍

Slide 9

Slide 9 text

ෛՙ෼ࢄͷछྨ • αʔό಺Ϧιʔεͷෛՙ෼ࢄ • ϩʔϧ͝ͱͷෛՙ෼ࢄ • αʔό͝ͱͷෛՙ෼ࢄ

Slide 10

Slide 10 text

3 αʔό಺Ϧιʔεͷ ෛՙ෼ࢄ

Slide 11

Slide 11 text

%BUB$FOUFS %BUB$FOUFS 6TFS 1SPYZ 8FC -PBE#BMBODFS 4FSWFS 8FC %# ଎͍ ஗͍

Slide 12

Slide 12 text

αʔό಺Ϧιʔεͷෛՙ෼ࢄٕज़ • ϋʔυ΢ΣΞػೳ • Hyper-ThreadingɺRAID0ͳͲ • ϋʔυ΢ΣΞΛҙࣝͨ͠OSͷෛՙ෼ࢄػೳ • NUMAɺRSS/RFS/RPSͳͲ • OSΛҙࣝͨ͠ΞϓϦέʔγϣϯͷ࡞Γํ • fork()ɺclone()ͳͲͷγεςϜίʔϧ

Slide 13

Slide 13 text

ϝϞϦίϯτϩʔϥ /6."/PEF ϝϞϦίϯτϩʔϥ /6."/PEF σʔλ

Slide 14

Slide 14 text

ϓϩηε εϨου ϓϩηε GPSL DMPOF ϓϩηε TFMFDU

Slide 15

Slide 15 text

ϓϩηε εϨου ϓϩηε GPSL DMPOF ϓϩηε TFMFDU • fork(), clone() • task_tܕߏ଄ମΛෳ੡͢Δ • task_tܕߏ଄ମΛεέδϡʔϦϯάͯ͠CPUʹׂ౰ • select(), epoll() • ϑΝΠϧσΟεΫϦϓλ(fd)Λ؂ࢹ͢Δ(IOଟॏԽ) • ಡΈॻ͖Ͱ͖Δfd͕͋Ε͹fdΛฦ͢

Slide 16

Slide 16 text

Α͋͘Δ͜ͱ top - 13:41:45 up 88 days, 15:26, 1 user, load average: 0.79, 0.78, 0.77 Tasks: 117 total, 2 running, 115 sleeping, 0 stopped, 0 zombie %Cpu0 : 95.9 us, 0.0 sy, 0.0 ni, 3.1 id, 0.0 wa, 0.0 hi, 1.0 si, 0.0 st %Cpu1 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st %Cpu2 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st %Cpu3 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st %Cpu4 : 0.0 us, 1.0 sy, 0.0 ni, 99.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st %Cpu5 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st %Cpu6 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st %Cpu7 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st

Slide 17

Slide 17 text

Ϧιʔεຖͷෛՙ෼ࢄٕज़ • ϋʔυ΢ΣΞػೳͱϋʔυ΢ΣΞΛҙࣝͨ͠OSػೳ • ରԠ͍ͯ͠Ε͹ػೳΛONʹ͢Δ͚ͩ(͓खܰ) • ྑ͘΋ѱ͘΋Ӆṭ͞Ε͍ͯΔ(ௐࠪ͸ࠔ೉) • ΞϓϦέʔγϣϯ࣮૷ • OSɺγεςϜίʔϧ΁ͷཧղ • ಛʹϛυϧ΢ΣΞͷ࣮૷Λҙࣝ͢Δ • OS͕ϦιʔεΛ෼ࢄ͠΍͍͢ίʔυΛॻ͘(೉͍͠)

Slide 18

Slide 18 text

4 ϩʔϧຖͰͷ෼ࢄ

Slide 19

Slide 19 text

%BUB$FOUFS %BUB$FOUFS 6TFS 1SPYZ 8FC -PBE#BMBODFS 4FSWFS 8FC %# ଎͍ ஗͍

Slide 20

Slide 20 text

6TFS 1SPYZ 8FC %# ଎͍ ஗͍ %#.4 ΫΤϦΩϟογϡ ಈతϖʔδ Ωϟογϡ ੩తϑΝΠϧ

Slide 21

Slide 21 text

ϩʔϧຖͷෛՙ෼ࢄٕज़ • Ϣʔβʹ͍ۙͱ͜ΖͰฦ͍ͯ͘͠ • جຊతʹ͸Ωϟογϡ • ࢖͍Ͳ͜ΖΛݟۃΊΔ • ΩϟογϡʹཔΓա͗ͳ͍ • Ωϟογϡ͕ώοτ͠ͳͯ͘ഁ୼ • ߏ੒΍࣮૷͕ແཧ͠ա͗ͳ͍ఔ౓ʹ࢖͏

Slide 22

Slide 22 text

5 αʔόຖͷෛՙ෼ࢄ

Slide 23

Slide 23 text

%BUB$FOUFS %BUB$FOUFS 6TFS 1SPYZ 8FC -PBE#BMBODFS 4FSWFS 8FC %# ଎͍ ஗͍

Slide 24

Slide 24 text

αʔόຖͷෛՙ෼ࢄ • ෛՙ෼ࢄٕज़Λ࣮ݱ͢Δʹ͸… • ෼ࢄγεςϜͷߟ͑ํΛࢀߟʹ͢Δ • ౰વͱ͍͑͹౰વ͕ͩ… • ಛʹαʔόͷෛՙ෼ࢄͰ͸ద༻͠΍͍͢

Slide 25

Slide 25 text

• ن໛ಁաੑ • εέʔϥϏϦςΟ • Ґஔಁաੑ • Ϧιʔεͷ৔ॴΛҙࣝͤͣಉ͡ํ๏ͰΞΫηε • Կ͔͠Βͷ໊લղܾͷ࢓૊Έ͕ඞཁ • ো֐ಁաੑ • ো֐͕ൃੜͯ͠΋มΘΓͳ͘ΞΫηεՄೳ • ো֐Λݕ஌͢Δ࢓૊Έ͕ඞཁ

Slide 26

Slide 26 text

DNSϥ΢ϯυϩϏϯ • ൺֱత༰қʹҐஔಁաੑΛ࣮ݱ • ෼ࢄઌϊʔυͷϔϧενΣοΫ͸ͳ͍ • ΫϥΠΞϯτ࣮૷͕ීٴ • ΫϥΠΞϯτͷ઀ଓઌΛ௚઀෼ࢄͤ͞Δ͜ͱ͕Մೳ FYBNQMFDPN

Slide 27

Slide 27 text

ϩʔυόϥϯα • L4ͳΒIP,ϙʔτͰҐஔಁաੑ͕͋Δ • ෼ࢄઌϊʔυͷϔϧενΣοΫ͕Մೳ • ωοτϫʔΫͷ੍ݶΛड͚Δ

Slide 28

Slide 28 text

Proxy • HAProxyͱ͔NginxͳͲ͕ίωΫγϣϯΛऴ୺͠෼ࢄ • ऴ୺͠ͳ͍L7ϩʔυόϥϯα΋͋Δ͕ॲཧෛՙ͕ߴ͍ • ϔϧενΣοΫ΋Ͱ͖ɺҐஔಁաੑ΋ߴ͍ IUUQXXXFYBNQMFDPN 1SPYZ

Slide 29

Slide 29 text

෼ࢄઌϊʔυͷϔϧενΣοΫ • ϔϧενΣοΫ • Proxy,LBͳͲ͕෼ࢄઌϊʔυΛ؂ࢹ • ໰୊͕͋ΔϊʔυΛ෼ࢄઌϊʔυϦετ͔Β࡟আ IUUQXXXFYBNQMFDPN 1SPYZ

Slide 30

Slide 30 text

෼ࢄઌϊʔυͷϔϧενΣοΫ • ϔϧενΣοΫ • Proxy,LBͳͲ͕෼ࢄઌϊʔυΛ؂ࢹ • ໰୊͕͋ΔϊʔυΛ෼ࢄઌϊʔυϦετ͔Β࡟আ IUUQXXXFYBNQMFDPN 1SPYZ Ͳ͏΍ͬͯ ໰୊ͬͯԿ ϔϧενΣοΫ͢Δ૷ஔ͕ ނোͨ͠Β

Slide 31

Slide 31 text

ϔϧενΣοΫ೉͍͠໰୊ • ࣮૷ɺઃܭڞʹ೉͍͠ • ͲͷϨΠϠʔ·Ͱ࣮૷͢Δ͔ • ICMPͰL3νΣοΫ? • L7ͰHTTPνΣοΫ?

Slide 32

Slide 32 text

ϔϧενΣοΫ೉͍͠໰୊ • Ԡ౴͸ਖ਼͍͠ͷ͔? • OKͱฦ͍ͯ͠Δϊʔυ͸ຊ౰ʹOK͔ʁԠ౴͸ਖ਼ ͍͠ͷ͔ʁ • Ϗβϯνϯক܉໰୊ • Gossip Protocol • ϥϯμϜʹྡ઀ϊʔυΛબͼ৘ใΛ఻͑Δ • ϥϯμϜʹબΜͩෳ਺ϊʔυ͔ΒϔϧενΣοΫ

Slide 33

Slide 33 text

ϩʔυόϥϯαͷ଱ো֐ੑ • VRRPͱ͔Α͘࢖ΘΕΔ • ৑௕Խٕज़Ͱ͋Γɺෛՙ෼ࢄٕज़Ͱ͸ͳ͍ • Ұ୆͸ϗοτελϯόΠঢ়ଶ(ॲཧ͸͍ͯ͠ͳ͍) 7331

Slide 34

Slide 34 text

ΫϥελγεςϜ • ༷ʑͳύλʔϯ͕͋Δ͕ྫ͑͹… • ෛՙ෼ࢄΛ͢ΔϦʔμ • ͦΕҎ֎ͷϊʔυʹॲཧΛ෼ࢄ • Ϧʔμ͕ނো࣌͸৽ͨͳϦʔμΛબग़ • ίϯηϯαεΞϧΰϦζϜ

Slide 35

Slide 35 text

ෛՙ෼ࢄٕज़ͷબͼํͱ ·ͱΊ

Slide 36

Slide 36 text

ෛՙ෼ࢄٕज़ͷબͿͱ͖ʹߟ͑Δ͜ͱ • ෛՙ෼ࢄٕज़͸૊Έ߹Θͤͯ࢖͏ • ඞཁҎ্ʹෳࡶʹ͠ͳ͍ • ෛՙ෼ࢄ͕ඞཁͳͷ͔࠶ߟ͢Δ

Slide 37

Slide 37 text

ෛՙ෼ࢄٕज़͸૊Έ߹Θͤͯ࢖͏ • αʔό಺ͷෛՙ෼ࢄٕज़ • RFSΛ༗ޮʹͯ͠soft irqΛϚϧνίΞε έʔϧ • auto NUMAΛ༗ޮʹ͢Δ • Prefork,eventܕϛυϧ΢ΣΞͰίωΫγϣ ϯΛ͞͹͘

Slide 38

Slide 38 text

ෛՙ෼ࢄٕज़͸૊Έ߹Θͤͯ࢖͏ • ϩʔϧຖͷෛՙ෼ࢄٕज़ • ProxyͰ੩తϑΝΠϧΛฦ͢ • ΩϟογϡαʔόʹಈతϖʔδΛΩϟογϡͤ͞Δ • ώοτ͢Ε͹ฦ͢ • ώοτ͠ͳ͍ͳΒDBʹ໰͍߹ΘͤΔ • DBαʔόͰ͸ΫΤϦΩϟογϡΛ༗ޮʹ͢Δ

Slide 39

Slide 39 text

ෛՙ෼ࢄٕज़͸૊Έ߹Θͤͯ࢖͏ • αʔόෛՙ෼ࢄٕज़ • LBΛಋೖ͢Δ • Ґஔಁաੑͷ֬อ • DNS • ো֐ಁաੑͷ֬อ • Gossip ProrocolͰϔϧενΣοΫͱϊʔυ؅ཧ • ίϯηϯαεΞϧΰϦζϜͰϦʔμબग़

Slide 40

Slide 40 text

ඞཁҎ্ʹෳࡶʹ͠ͳ͍ • ෳࡶͰ͋Δ͜ͱ͸ѱ • ίετͷ૿Ճ • αʔόඅ༻ͷ૿Ճ • ؅ཧίετͷ૿Ճ • ো֐ൃੜ཰ͷ૿Ճ

Slide 41

Slide 41 text

ෛՙ෼ࢄ͕ඞཁͳͷ͔࠶ߟ͢Δ • ෛՙΛݮΒ͢ • ΞϧΰϦζϜɺSQLΫΤϦվળ • վળग़དྷͨͱ͖ͷݟฦΓ͕େ͖͍ • ॲཧ଎౓Λ͋͛Δ • ίετ͕ݟ߹͏ͳΒεέʔϧΞοϓ • ଴ͪߦྻཧ࿦ • ͦΕͰ΋ͩΊͳΒෛՙΛ෼ࢄ͢Δ

Slide 42

Slide 42 text

·ͱΊ • ෛՙ෼ࢄٕज़͸૊Έ߹ΘͤΔ • Ϧιʔεɺϩʔϧɺαʔό • ֤ʑͷ෼ࢄٕज़ͷಁաੑΛߟ͑Δ • Ґஔಁաੑɺো֐ಁաੑͳͲ • ෛՙ෼ࢄΛ͢΂͖͔Λߟ͑Δ • ෛՙ෼ࢄ͠ͳͯ͘ࡁΉͳΒͦΕ͕Ұ൪