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

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

Kurochan
December 27, 2017
440

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

Kurochan

December 27, 2017
Tweet

More Decks by Kurochan

Transcript

  1. ग़୊ͨ͠໰୊ • Linuxαʔόʹsshͯ͠nginxΛೖΕͯ΋Β͏ • +ࢦఆͨ͠ݻఆͷJSONΛฦͯ͠΋Β͏ • ↑ͷߏ੒Λ100୆ʹରͯ͠࡞ۀͯ͠΋Β͏ • ༧બͷҰ໰໨ͩͬͨͷͰ •

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

    ແ͔͠͠Βͷํ๏ͰߏஙΛࣗಈԽͨ͠νʔϜ • 16νʔϜ (64%ʂ) • खಈͰͻͨ͢ΒίϚϯυΛଧͬͯ࠳ંͨ͠νʔϜ • 1νʔϜ • sudo apt install yumͯ͠yumΛ࢖͑ΔΑ͏ʹ͠Α͏ͱͨ͠νʔϜ • 1νʔϜ
  3. ͔ͤͬ͘ͳͷͰ௅ઓ • 1ίϯςφ͋ͨΓ0.1CPU x 256MB Memory x 256MB Disk •

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

    • LXD: 2.21 • 1500ίϯςφੜ੒͍ͨ͠ • Storage: ZFS • Solaris͕ݩɺ*BSD΍Linuxʹ΋Ҡ২͞Ε͍ͯΔ • ϑΝΠϧγεςϜࣗମ͕RAIDػೳΛ࣋ͭ(RAID-Z) • Copy on Write͕͋Δ • ॏෳഉআ͕Ͱ͖Δ (༗ޮʹ͢Δͱ͖͸ϝϞϦফඅʹ஫ҙ)
  5. 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
  6. ఘΊͨ • ༧બ։࠵લ೔(ฏ೔)ʹLinuxΧʔωϧͷΤϥʔ͸͖͍ͭ • ͵ΔΆ & Linux kernel oops •

    1300ίϯςφ & ΞΠυϧঢ়ଶͰϩʔυΞϕϨʔδ600 • 16ίΞCPU x 196GB VM x 4୆ʹ੾ସ • 1300ίϯςφ·Ͱ͸Քಇͤ͞Δ஌ݟΛಘͨͷͰ • 800ίϯςφ x 4୆Ͱ3200ϗετ(ίϯςφ)ੜ੒ͨ͠
  7. ײ૝ • (ίϯςφ͋ͨΓͷෛՙ͕͍ͨͨ͜͠ͱͳ͍͚Ͳ)
 3200ίϯςφӡ༻͢Δ஌ݟΛಘͨͷ͸Ͱ͔͍(?) • ίϯςφ͸ແݶʹεέʔϧ͢ΔΘ͚Ͱ͸ͳ͍(ctx switch) • ZFSͷCoW x

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