Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
学生に2500台サーバ構築させようとした
Search
Kurochan
December 27, 2017
0
460
学生に2500台サーバ構築させようとした
Kurochan
December 27, 2017
Tweet
Share
More Decks by Kurochan
See All by Kurochan
AWS Elemental MediaPackageと格闘🤼
kurochan
2
37
サイバーエージェントでのSlack活用事例 @ 2025
kurochan
5
47
15年入社者に聞く! これまでのCAのキャリアとこれから
kurochan
1
240
入門 電気通信事業者
kurochan
13
5.6k
AWS x さくらのクラウドのハイブリッドクラウドによる安価なフレッツ閉域網接続の実装
kurochan
9
5.7k
GoでTCP Proxyを実装してみよう
kurochan
1
1.2k
サイバーエージェントの広告配信におけるIPoEトラフィックの概況
kurochan
0
500
スケールするというのはどういうことなのか
kurochan
14
5k
サイバーエージェントのGitHub Copilot導入と 開発生産性
kurochan
52
46k
Featured
See All Featured
How STYLIGHT went responsive
nonsquared
100
5.7k
The Power of CSS Pseudo Elements
geoffreycrofte
77
5.9k
How to train your dragon (web standard)
notwaldorf
96
6.2k
Being A Developer After 40
akosma
90
590k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
The Pragmatic Product Professional
lauravandoore
36
6.8k
How GitHub (no longer) Works
holman
315
140k
Speed Design
sergeychernyshev
32
1.1k
Designing for Performance
lara
610
69k
Imperfection Machines: The Place of Print at Facebook
scottboms
268
13k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
26k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Transcript
ֶੜʹαʔόΛ2500ߏங ͤ͞Α͏ͱͨ͠
ICTτϥϒϧγϡʔςΟϯάίϯςετ • ֶੜ͚ͷL1ʙL7ͷίϯςετ • ӡӦΛ͍ͯ͠ΔֶੜͷϨϕϧ͕ҟৗʹߴ͍ • ༧બ • ࣾձਓ͕࡞ •
ຊઓӡӦΛ͢Δֶੜ͕ͯ͢ग़/ߏங
ग़ͨ͠ • Linuxαʔόʹsshͯ͠nginxΛೖΕͯΒ͏ • +ࢦఆͨ͠ݻఆͷJSONΛฦͯ͠Β͏ • ↑ͷߏΛ100ʹରͯ͠࡞ۀͯ͠Β͏ • ༧બͷҰͩͬͨͷͰ •
sshͯ͠ίϚϯυ͕ଧͯΔ͔ • ؆୯ͳࣗಈԽ͕Ͱ͖Δ͔ • Λݟ͔ͨͬͨ • 100ʹssh͢Δܦݧͳ͔ͳ͔ͳ͍ͩΖ͏ • 25νʔϜ x 100 = 2500ʂ
ճঢ়گ • จ: https://gist.github.com/kurochan/0100c43de27c953d18b9dfca290f7b77 • νϡʔτϦΞϧͲ͓Γ1ߏஙͰ͖ͨνʔϜ • 25νʔϜ (શνʔϜnginxͷΠϯετʔϧͰ͖ͨʂ) •
ແ͔͠͠Βͷํ๏ͰߏஙΛࣗಈԽͨ͠νʔϜ • 16νʔϜ (64%ʂ) • खಈͰͻͨ͢ΒίϚϯυΛଧͬͯ࠳ંͨ͠νʔϜ • 1νʔϜ • sudo apt install yumͯ͠yumΛ͑ΔΑ͏ʹ͠Α͏ͱͨ͠νʔϜ • 1νʔϜ
ղྫ • ౿Έαʔό͔ΒγΣϧεΫϦϓτͰϧʔϓΛ ճ͢νʔϜ͕΄ͱΜͲ • 1νʔϜ͚ͩansibleΛͬͯஸೡʹߏங͍ͯͨ͠
ग़ڥ • 2500Ͳ͏ͬͯ༻ҙ͢Δͷ͔ • 2500VMݐͯΔͷඇݱ࣮త • ແঈఏڙͱ͍͑͘͞Β͞Μʹਃ͠༁ͳ͍ • ssh͕Ͱ͖ͯίϚϯυ͕ଧͯΕͳΜͰ͍͍ •
ίϯςφʂ • LXD (Linux Container Daemon) • Docker͕ΞϓϦέʔγϣϯίϯςφ ͳΒLXDγεςϜίϯςφ
LXDίϯςφͷத͔Βݟͨܠ৭ • ී௨ͷVMͱ΄ͱΜͲ͍ͬ͠ΐ(Լखͨ͠Βؾ͔ͮͳ͍)
͔ͤͬ͘ͳͷͰઓ • 1ίϯςφ͋ͨΓ0.1CPU x 256MB Memory x 256MB Disk •
36ίΞCPU x 224GB MemoryͷVM x 2Ͱϗετ͢Δ • 1VM͋ͨΓ1500ϗετ(ίϯςφ)ऩ༰͍ͨ͠ • ίϯςφεέʔϧ͢Δͷ͔ࢼ͔ͨͬͨ͠
ݕূ • VM: 36ίΞCPU x 224GB Memory • OS: Ubuntu16.04
• LXD: 2.21 • 1500ίϯςφੜ͍ͨ͠ • Storage: ZFS • Solaris͕ݩɺ*BSDLinuxʹҠ২͞Ε͍ͯΔ • ϑΝΠϧγεςϜࣗମ͕RAIDػೳΛ࣋ͭ(RAID-Z) • Copy on Write͕͋Δ • ॏෳഉআ͕Ͱ͖Δ (༗ޮʹ͢Δͱ͖ϝϞϦফඅʹҙ)
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
600ϗετੜͨ͠ͱ͜ΖͰΤϥʔ͕ग़Δ • failed to create new OS thread
LinuxͷPIDͷ্ݶ • ID͕ৼΕͳ͍͍ͤͰ32768ݸ͔͠ϓϩηεཱ͕ͨͳ͍ • ௨ৗʹͳΒͳ͍ͷͰ࢝Ίͯͬͨ • 6ܻͷPIDͳΜͯΈͨ͜ͱͳ͍ • 60ສݸʹͨ͠(pid_max, thread-max)
1300ίϯςφੜͨ͠ͱ͜ΖͰΤϥʔ͕ग़ͨ • cgroup͕࡞Εͳ͘ͳͬͨ • syslogΛಡΉͱ…
ఘΊͨ • ༧બ։࠵લ(ฏ)ʹLinuxΧʔωϧͷΤϥʔ͖͍ͭ • ͵ΔΆ & Linux kernel oops •
1300ίϯςφ & ΞΠυϧঢ়ଶͰϩʔυΞϕϨʔδ600 • 16ίΞCPU x 196GB VM x 4ʹସ • 1300ίϯςφ·ͰՔಇͤ͞ΔݟΛಘͨͷͰ • 800ίϯςφ x 4Ͱ3200ϗετ(ίϯςφ)ੜͨ͠
ຊ൪ӡ༻ • ΘΓͱ༨༟Ͱಈ͍ͯ͠·ͬͨ
ײ • (ίϯςφ͋ͨΓͷෛՙ͕͍ͨͨ͜͠ͱͳ͍͚Ͳ) 3200ίϯςφӡ༻͢ΔݟΛಘͨͷͰ͔͍(?) • ίϯςφແݶʹεέʔϧ͢ΔΘ͚Ͱͳ͍(ctx switch) • ZFSͷCoW x
ॏෳഉআ͍͢͝ • 256MB(limit) x 800ϗετ = 205GBফඅΛ֮ޛ͍ͯͨ͠ • ࣮ࡍ3.11GB͔͍ͬͯ͠ͳ͍ • ಉ͡Α͏ͳڥͰಉ͡Α͏ͳࣄ͔͍ͯ͠͠ͳ͍ͨΊ