学生に2500台サーバ構築させようとした

1f745ff900e1be51aedae18cae76593c?s=47 Kurochan
December 27, 2017
320

 学生に2500台サーバ構築させようとした

1f745ff900e1be51aedae18cae76593c?s=128

Kurochan

December 27, 2017
Tweet

Transcript

  1. ֶੜʹαʔόΛ2500୆ߏங
 ͤ͞Α͏ͱͨ͠

  2. ICTτϥϒϧγϡʔςΟϯάίϯςετ • ֶੜ޲͚ͷL1ʙL7ͷίϯςετ • ӡӦΛ͍ͯ͠ΔֶੜͷϨϕϧ͕ҟৗʹߴ͍ • ༧બ໰୊ • ࣾձਓ͕࡞੒ •

    ຊઓ͸ӡӦΛ͢Δֶੜ͕͢΂ͯग़୊/ߏங
  3. ग़୊ͨ͠໰୊ • Linuxαʔόʹsshͯ͠nginxΛೖΕͯ΋Β͏ • +ࢦఆͨ͠ݻఆͷJSONΛฦͯ͠΋Β͏ • ↑ͷߏ੒Λ100୆ʹରͯ͠࡞ۀͯ͠΋Β͏ • ༧બͷҰ໰໨ͩͬͨͷͰ •

    sshͯ͠ίϚϯυ͕ଧͯΔ͔ • ؆୯ͳࣗಈԽ͕Ͱ͖Δ͔ • Λݟ͔ͨͬͨ • 100୆ʹssh͢Δܦݧ΋ͳ͔ͳ͔ͳ͍ͩΖ͏ • 25νʔϜ x 100୆ = 2500୆ʂ
  4. ճ౴ঢ়گ • ໰୊จ: https://gist.github.com/kurochan/0100c43de27c953d18b9dfca290f7b77 • νϡʔτϦΞϧͲ͓Γ1୆ߏஙͰ͖ͨνʔϜ • 25νʔϜ (શνʔϜnginxͷΠϯετʔϧͰ͖ͨʂ) •

    ແ͔͠͠Βͷํ๏ͰߏஙΛࣗಈԽͨ͠νʔϜ • 16νʔϜ (64%ʂ) • खಈͰͻͨ͢ΒίϚϯυΛଧͬͯ࠳ંͨ͠νʔϜ • 1νʔϜ • sudo apt install yumͯ͠yumΛ࢖͑ΔΑ͏ʹ͠Α͏ͱͨ͠νʔϜ • 1νʔϜ
  5. ղ౴ྫ • ౿Έ୆αʔό͔ΒγΣϧεΫϦϓτͰϧʔϓΛ
 ճ͢νʔϜ͕΄ͱΜͲ • 1νʔϜ͚ͩansibleΛ࢖ͬͯஸೡʹߏங͍ͯͨ͠

  6. ग़୊؀ڥ • 2500୆΋Ͳ͏΍ͬͯ༻ҙ͢Δͷ͔ • 2500VM΋ݐͯΔͷ͸ඇݱ࣮త • ແঈఏڙͱ͸͍͑͘͞Β͞Μʹਃ͠༁ͳ͍ • ssh͕Ͱ͖ͯίϚϯυ͕ଧͯΕ͹ͳΜͰ΋͍͍ •

    ίϯςφʂ • LXD (Linux Container Daemon) • Docker͕ΞϓϦέʔγϣϯίϯςφ
 ͳΒLXD͸γεςϜίϯςφ
  7. LXDίϯςφͷத͔Βݟͨܠ৭ • ී௨ͷVMͱ΄ͱΜͲ͍ͬ͠ΐ(Լखͨ͠Βؾ͔ͮͳ͍)

  8. ͔ͤͬ͘ͳͷͰ௅ઓ • 1ίϯςφ͋ͨΓ0.1CPU x 256MB Memory x 256MB Disk •

    36ίΞCPU x 224GB MemoryͷVM x 2Ͱϗετ͢Δ • 1VM͋ͨΓ1500ϗετ(ίϯςφ)ऩ༰͍ͨ͠ • ίϯςφ͸εέʔϧ͢Δͷ͔ࢼ͔ͨͬͨ͠
  9. ݕূ • VM: 36ίΞCPU x 224GB Memory • OS: Ubuntu16.04

    • LXD: 2.21 • 1500ίϯςφੜ੒͍ͨ͠ • Storage: ZFS • Solaris͕ݩɺ*BSD΍Linuxʹ΋Ҡ২͞Ε͍ͯΔ • ϑΝΠϧγεςϜࣗମ͕RAIDػೳΛ࣋ͭ(RAID-Z) • Copy on Write͕͋Δ • ॏෳഉআ͕Ͱ͖Δ (༗ޮʹ͢Δͱ͖͸ϝϞϦফඅʹ஫ҙ)
  10. 16ϗετੜ੒ͨ͠ॴͰΤϥʔ͕ग़Δ • Failed to allocate directory watch: Too many open

    files • ϗετ(਌)ଆͷsystemdͷϦιʔε੍ݶʹҾ͔͔ͬΔ • nofile(ϑΝΠϧΦʔϓϯ਺)ͷ্ݶΛ্͛Δ • inotify(ϑΝΠϧ؂ࢹ)ͷ্ݶΛ্͛Δ • vm.max_map_count(ϝϞϦϚοϓ)ͷ্ݶΛ্͛Δ • ຊ൪ӡ༻޲͚ͷυΩϡϝϯτ: 
 https://github.com/lxc/lxd/blob/master/doc/production-setup.md
  11. 600ϗετੜ੒ͨ͠ͱ͜ΖͰΤϥʔ͕ग़Δ • failed to create new OS thread

  12. LinuxͷPIDͷ্ݶ஋ • ID͕ৼΕͳ͍͍ͤͰ32768ݸ͔͠ϓϩηεཱ͕ͨͳ͍ • ௨ৗ໰୊ʹ͸ͳΒͳ͍ͷͰ࢝Ίͯ஌ͬͨ • 6ܻͷPIDͳΜͯΈͨ͜ͱͳ͍ • 60ສݸʹͨ͠(pid_max, thread-max)

  13. 1300ίϯςφੜ੒ͨ͠ͱ͜ΖͰΤϥʔ͕ग़ͨ • cgroup͕࡞Εͳ͘ͳͬͨ • syslogΛಡΉͱ…

  14. ఘΊͨ • ༧બ։࠵લ೔(ฏ೔)ʹLinuxΧʔωϧͷΤϥʔ͸͖͍ͭ • ͵ΔΆ & Linux kernel oops •

    1300ίϯςφ & ΞΠυϧঢ়ଶͰϩʔυΞϕϨʔδ600 • 16ίΞCPU x 196GB VM x 4୆ʹ੾ସ • 1300ίϯςφ·Ͱ͸Քಇͤ͞Δ஌ݟΛಘͨͷͰ • 800ίϯςφ x 4୆Ͱ3200ϗετ(ίϯςφ)ੜ੒ͨ͠
  15. ຊ൪ӡ༻ • ΘΓͱ༨༟Ͱಈ͍ͯ͠·ͬͨ

  16. ײ૝ • (ίϯςφ͋ͨΓͷෛՙ͕͍ͨͨ͜͠ͱͳ͍͚Ͳ)
 3200ίϯςφӡ༻͢Δ஌ݟΛಘͨͷ͸Ͱ͔͍(?) • ίϯςφ͸ແݶʹεέʔϧ͢ΔΘ͚Ͱ͸ͳ͍(ctx switch) • ZFSͷCoW x

    ॏෳഉআ͍͢͝ • 256MB(limit) x 800ϗετ = 205GBফඅΛ֮ޛ͍ͯͨ͠ • ࣮ࡍ͸3.11GB͔͠࢖͍ͬͯͳ͍ • ಉ͡Α͏ͳ؀ڥͰಉ͡Α͏ͳࣄ͔͍ͯ͠͠ͳ͍ͨΊ