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
はてなのインフラ環境を自宅で再現する
Search
masayoshi
December 10, 2016
Technology
7
12k
はてなのインフラ環境を自宅で再現する
YAPC::Hokkaido 2016 SAPPOROでの発表資料です。
今後ネットワーク図とか色々ブログの方に公開していきたいと思っています。
masayoshi
December 10, 2016
Tweet
Share
More Decks by masayoshi
See All by masayoshi
これからSREになる人と、これからもSREをやっていく人へ
masayoshi
6
5.2k
メトリクス、ログ、トレースをうまく使い分けて可観測性を高めよう!
masayoshi
8
11k
Developers Summit 2021 summer
masayoshi
15
30k
2021-06-cloud-native-reg-event
masayoshi
8
2.5k
SRE_Culture_Organization
masayoshi
17
10k
cloudnative-kansai-2019
masayoshi
1
710
ミドルウェア実行環境の多様化を考慮したインフラアーキテクチャの一検討/study on web system architecture #2
masayoshi
0
3.6k
Webサービスにおけるインフラアーキテクチャの体系化と選択自動化の研究/study on web system architecture #1
masayoshi
0
2.8k
はてなのインフラストラクチャ設計構想 / The Concept of Hatena Infrastructure
masayoshi
1
5.4k
Other Decks in Technology
See All in Technology
強化されたAmazon Location Serviceによる新機能と開発者体験
dayjournal
3
260
Amazon Bedrockで実現する 新たな学習体験
kzkmaeda
2
680
モバイル界のMCPを考える
naoto33
0
360
Lazy application authentication with Tailscale
bluehatbrit
0
110
MUITにおける開発プロセスモダナイズの取り組みと開発生産性可視化の取り組みについて / Modernize the Development Process and Visualize Development Productivity at MUIT
muit
0
180
Model Mondays S2E03: SLMs & Reasoning
nitya
0
240
FOSS4G 2025 KANSAI QGISで点群データをいろいろしてみた
kou_kita
0
240
AI専用のリンターを作る #yumemi_patch
bengo4com
4
2k
Github Copilot エージェントモードで試してみた
ochtum
0
130
事業成長の裏側:エンジニア組織と開発生産性の進化 / 20250703 Rinto Ikenoue
shift_evolve
PRO
1
390
AWS テクニカルサポートとエンドカスタマーの中間地点から見えるより良いサポートの活用方法
kazzpapa3
2
610
生まれ変わった AWS Security Hub (Preview) を紹介 #reInforce_osaka / reInforce New Security Hub
masahirokawahara
0
370
Featured
See All Featured
Rebuilding a faster, lazier Slack
samanthasiow
82
9.1k
The Cost Of JavaScript in 2023
addyosmani
51
8.5k
Agile that works and the tools we love
rasmusluckow
329
21k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
657
60k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
45
7.5k
Making Projects Easy
brettharned
116
6.3k
What's in a price? How to price your products and services
michaelherold
246
12k
A designer walks into a library…
pauljervisheath
207
24k
BBQ
matthewcrist
89
9.7k
Designing Experiences People Love
moore
142
24k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
130
19k
Fantastic passwords and where to find them - at NoRuKo
philnash
51
3.3k
Transcript
ͯͳͷΠϯϑϥڥ ΛࣗͰ࠶ݱ͢Δ :"1$)PLLBJEP
ࣗͷ༷ࢠ
None
ཧαʔό: 3 (+1) Ծαʔό: 40 L3εΠον: 1 (+1) Քಇதͷ ()ઃఆதͷ
None
YAPC::Hokkaidoͷൃදه೦ʹ αʔόΛ૿ڧ͠·ͨ͠ (10ສ)
ࣗݾհ
ࣗݾհ • id:masayoshi (yoyogidesaiz) • גࣜձࣾͯͳ (20164݄ೖࣾ) • YAPC ॳࢀՃͰ͢
• ֶੜ࣌αʔόࢹͷΞϧόΠτ • ݱࡏWebΦϖϨʔγϣϯΤϯδχΞͷج൫νʔϜ
ΞδΣϯμ • ॳΊʹ • ࢲͳΓͷߟ͑ํͱษڧํ๏ • ࣗαʔόͷߏհ • ·ͱΊ
1 ॳΊʹ
৽ଔ࠷ॳͷ3ϲ݄
• 4݄ ݚम http://developer.hatenastaff.com/entry/2016-newbie-training-of-web-operation • 5݄ ࣾͷωοτϫʔΫ֮͑·͔ͨ͠? ֎෦τϥϑΟοΫͷଳҬ૿͍ͯͩ͘͠͞ • 6݄
ωοτϫʔΫઃܭ͍͍ײ͡ʹ͓ئ͍͠·͢ • ͦͷޙɺج൫νʔϜ͕ൃ͠ϝϯόʔʹ
ج൫νʔϜ(3໊) • ࣗࣾͷΠϯϑϥಛੑΛѲ͍͍ͯ͠ײ͡ʹ͢Δ • αʔϏε͕ଟ͍(10αʔϏεҎ্) • DC + AWS +
͘͞Βͷઐ༻αʔό • 5,10ར༻͞ΕΔαʔϏε • ཧ,Ծαʔό1000Ҏ্
ࠓҎ্ʹษڧ͠ͳ͍ͱϚζΠ
ͱ͍͏͜ͱͰ
͏͜Ε ࣗͰձࣾͷΠϯϑϥΛ ਅࣅͯΈΔ͔͠ͳ͍ʂ
ͱ͍͏͜ͱʹͳͬͨ
2 ࢲͳΓͷ ߟ͑ํͱษڧํ๏
ษڧటष͘ ࣄεϚʔτʹ (Γ͍ͨͱࢥ͍ͬͯΔ)
ࣄ… • ॏཁͳ͜ͱ • ϢʔβʹαʔϏε(Ձ)Λಧ͚Δ͜ͱ • ࣌ؒత੍ • ઓͱ҆ఆͷόϥϯε •
͍࣋ͬͯΔٕज़ɺࣝͰΨϯΨϯԥΔ • ศརɺར༻͞Ε͍ͯΔͷΛੵۃతʹ͏
ษڧ… • ࣌ؒΛֶ͔͚ͯΜͰྑ͍ • Ұͭͷ͜ͱΛஸೡʹਂ۷Γ • ۚͳ͍ɺ͔͚࣌ؒͯΑ͍ • ཕ౿Μ͚ͩͩڧ͘ͳΔ •
͋ɺʙͰݟͨ͜ͱ͋Δͭͩ • ཕௐࠪਂ۷Γ͢Δ͍͍νϟϯε
࣌ؒΛ͔͚ͯਂ۷Γ
࡞ΔਅࣅΔ৮Δฉ͘ ಡΉ ͍͠ ͔͔࣌ؒΔ Α͘Θ͔Δ ؆୯ ͙͢ग़དྷΔ Α͘Θ͔ΒΜ
ֶ෦3ͷࠒͷษڧํ๏ • ਓ͔Βฉ͘ɺٕज़ϒϩάͱ͔ಡΉ • LinuxͷίϚϯυͱ͔ • શવ֮͑ΒΕͳ͍͠ɺΘ͔ΒΜ • ͱΓ͋͑ͣܰ͘৮ͬͯΈΔ •
ՈͷϊʔτPCΛLinuxʹ͢Δ • wordpressͱ͔Λߏஙͯ͠ΈͨΓ
৮Δ͚ͩͷݶք • ߏஙखॱΛ֮͑Δ͜ͱ͕ٕज़ྗ? • εΫϦϓτͱ͔ChefͰࣗಈԽग़དྷΔΒ͍͠ • ઃఆ߲Λ֮͑Δ͜ͱ͕ॏཁ? • Ͳ͏ͯͦ͠ͷઃఆΛ͢Δͱ͘ͳΔͷ͔͕ॏཁ •
ϛυϧΣΞͲ͏ͬͯબྑ͍? • ಓ۩ͷ͍ํॏཁ͚ͩͲબͼํॏཁ
ܰ͘৮ͬͨΓɺ ฉ͘ɺಡΉఔͰ ৽͍͠ͷΛ࡞ɺઃܭ͍͠ ͨΓલ͕ͩ
ֶ෦4Ҏ߱ͷษڧํ๏ • αʔόࢹͷΞϧόΠτ • ϛυϧΣΞɺෛՙࢄɺԽͳͲͷߏྫ • ਅࣅΔͨΊͷ࣮ྫ • ݚڀ •
ιϑτΣΞϧʔλ࡞ɺϓϩτίϧͷௐࠪͳͲ • ඞཁͳجૅࣝͷษڧͱ࣮
ਅࣅͯ࡞ͬͨΓมߋͨ͠Γ • ߏྫͷߏஙࣗಈԽνϟϨϯδ • ݅ΛՃ͑ͯɺͦΕʹ͋͏Α͏ʹߏྫΛมߋ͢Δ • ݸਓతʹ”റΓϓϨΠ”ͱݺΜͰ͍Δ (ແఀࢭറΓͱ͔) • େม͚ͩͲҰ͔Β࡞ͬͯΈΔ
• ϥΠϒϥϦͷ࠶࣮ͱ͔ • ϛυϧΣΞͳͲͷҰ෦Λ؆қ࣮ • ιέοτϓϩάϥϛϯάͰpreforkܕͱeventܕͱ͔
ಘΒΕΔͷ(ͦͷ1) • ఆੴͷϝϦοτɺσϝϦοτֶ͕Δ • બࢶΛ૿ͤΔɺஅج४͕ग़དྷΔ • ҰͭԼͷϨΠϠʔֶ͕Δ (syscall, OS, Network,..)
• ҧ͏ϛυϧΣΞͷཧղʹཱͭ • ͕͕ࣝΔ • ͔ͬͨ”ͭΓ”෦ͷѲ • ͳΜ͔ٕज़ϒϩάɺຊͱ͔Ͱͬͨؾʹͳͬͯͨ • צҧ͍ɺࢥͬͨΑΓ~ͩͬͨ
ಘΒΕΔͷ(ͦͷ2) • ײͱٙ (ෳࡶ,γϯϓϧ, ͍, ͍, ָ, ͭΒ ͍, …)
• ΈΜͳͲ͏͍ͯ͠ΔΜͩΖ͏? • ͭΒ͍ͷఆ͞ΕͨΘΕํ͡Όͳ͍͔Β͔ • ͔ͩΒ͜͏͍͏࣮ͳͷ͔~ • ݁ہ͕͜͜ͳΜͩΑͳ͊ • ଞʹͬͱద࣮͕ͨ͋͠ΔͷͰ? • ͳ͍ͳΒ࡞Δ͔(ͱݴ͑Δͱ͔͍͍ͬ͜)
ྫ͑ ιϑτΣΞϧʔλ࡞
࡞Δͱ͖ͷֶͼྫ (checksum) • 1ͷิ? 2ͷิͳΒΑ͘͏͚Ͳͳ͊ • L2ͰL3ͰL4ͰνΣοΫαϜܭࢉ͢Μͷ͔Α • ٙࣅϔομΛ͚ͭͯܭࢉ? IPΞυϨε͕͋Δ
ͱ͍͏͜ͱIPΞυϨεॻ͖͑ͨΒL4ܭࢉ͠͠? • ͳΜ͔͍….γϑτԋࢉͱ͔ͰͬͯΔͷʹͳ͊ • kernelͲ͏ͬͯΜͩ? ΞηϯϒϦ͔Α… • νΣοΫαϜΦϑϩʔυ? ͍! ϋʔυΣΞ࠷ߴ! • Μ? ԾϚγϯԿʹΦϑϩʔυͯ͠Μͷ? • xenͩͬͨΒxen-netbackͱ͔ʹͦΕͬΆ͍ͷ͋Δͳ͊ʔ
࡞Δͱ͖ͷֶͼྫ (ͦͷଞ) • ͏͐…౸ணύέοτͷฒͼସ͑ΊͬͪΌ͍… • TCPͷΦϓγϣϯϑΟʔϧυ? LinuxσϑΥϧτͰtimestamp͍ͬͯΔͷ͔… • ωοτϫʔΫͷײͩͱϝϞϦίϐʔ͍… •
CPU͕1ίΞʹுΓ͘~ͱ͜ΖͰsoftirqͬͯͳʹ? • kernelͷωοτϫʔΫελοΫ͕ϘτϧωοΫ?͑? • DPDKࢯ~ པΉ~
Λͯ͠
ં֯ࣾͷΠϯϑϥͷத͕ݟΕΔͷͰ ՈͰਅࣅͯΈΑ͏
3 ࣗαʔόͷߏհ
ࣾͷΠϯϑϥΛਅࣅΔϝϦοτ • WebαʔϏεܥͷΠϯϑϥج൫ͷఆੴΛֶΔ • ࠓͰ௨༻͢Δےͷྑ͍ઃܭ • ࠓͰݹ͍ɺطʹഁͨ͠Ξϯνύλʔϯ • ͪΐ͏ͲΑ͍نײ •
খنΫϥυ, ࣮͕͍͖ΕΔ • ࣌ͷઃܭऀͷҙਤɺؾ͕͔࣋ͪΔ • ࣾݻ༗ͷࣄ(ن, ίετ)Λྀͨ͠ઃܭ • ؆୯ͦ͏Ͱ͍͠, ࣌͑ͳ͔ͬͨ
ਅࣅΔͱ͜Ζਅࣅ͍͍ͯײ͡ʹ • ศརͳͱ͜Ζਅࣅ͍ͯ͘ • ҧ͏ͷࢼ͍ͨ͠ͱ͜Ζม͑Δ • ґଘؔʹҙ͠ͳ͕Βߏங͍ͯ͘͠ • ՈͱձࣾͷنײΛҙࣝ͢Δ •
ՄೳͳݶΓ৽͍͠όʔδϣϯͰ࡞Δ • ͍͍ײ͡ʹͳͬͨΒࣾಋೖ • ָ͠Ήʂ
ͱ͍͏͜ͱͰ࣌ؒ͋Δ͔͗Γհ • ωοτϫʔΫߏ • ཧαʔόͷηοτΞοϓ • ԾαʔόͷηοτΞοϓ • ϓϩϏδϣχϯά •
ෛՙࢄɺԽ • WebΞϓϦέʔγϣϯ
ωοτϫʔΫߏ %PN &BTU )PNF 0QF 0QFSBUJPO CS CS %PN6 %PN6
%PN %PN6 %PN6 %PN %PN6 %PN6 CS 8FTU &9 +VOPT CS CS CS CS CS 394 %FCJBO YFO 594 7Z04 $PSF
ཧαʔόͷηοτΞοϓ • Debian Stretch + Xen4.6 • Βͳ͍͏ͪʹ࠶ىಈ • Φϑϩʔυ༗ޮʹ͢Δͱ1࣌ؒޙ͙Β͍ʹigb͕Τϥʔ
• vif͕4ͭ·Ͱ͔͠࡞Εͳ͍ • ηοτΞοϓPXEϒʔτ+Preseed • ϒʔτબͨ͠ΒࣗಈͰOSΠϯετʔϧ • ࡉ͔͍ͷىಈޙʹAnsibleͰ͑Δ
ԾαʔόͷηοτΞοϓ • ࣾ • ԾCPUɺϝϞϦɺσΟεΫαΠζΛਓ͕ࢦఆ • IP, ϗετ໊ཧߏཧπʔϧ, Mackerelʹొ •
ࣗ • NUMAΛҙࣝͨ͠ΠϯελϯελΠϓͷఆٛͱಋೖ • xen 4.5͔Β͍͍ײ͡ͷεέδϡʔϥ • IP,ϗετ໊ཧMackerel • ໊લղܾconsul(0.7)ͱPowerDNS(4.0.1)
ϓϩϏδϣχϯάͱ͔ • ࣾ • Chef + Capistrano + Jenkins •
ࣗ • Ansible + Fabric + Rundeck
ෛՙࢄɺԽ • ࣾ • LVS+keepalived, HAProxy • ࣗ • LVS+keepalivedͱconsul
• Seesawͱ͔ࢼͯ͠Έ͍ͨ • ࣗ࡞
WebΞϓϦέʔγϣϯ • ISUCONͷΛ༻ • ؆қ࣮ͳͷͰ৭ʑ֬ೝ͍͢͠ • ϕϯνϚʔΫ͕͋Δ • ଞͷํͱൺֱɺ͕ग़དྷΔ •
·ͩ࡞Ε͍ͯͳ͍͕ࣗ࡞͍ͨ͠ • PerlͰҰͭԿ͔࡞Γ͍ͨ
ࣗαʔόͷྑ͞ • ؾܰʹෛՙ͔͚ΒΕΔ • ωοτϫʔΫ·ͰݟΕΔ • ؾʹ͠ͳ͍ͰݐͯΒΕΔ • 10Ҏ্ͳΒίετ҆͘ͳΔ? •
ཧɺԾɺίϯςφͳΜͰબΔ • ϋΠύʔόΠβʔͷϩάݟΕΔ • ਂ۷Γ͢Δʹ࠷దʂ
None
ࣗαʔόָ͍͠ʂ
4 ·ͱΊ
·ͱΊ • ͊ʙࣗαʔόͨͷ͌͠ʙ • ؆қͳͷͰࣗͰ࡞Δͷେࣄ • ΤϯδχΞϥΠτϢʔβ͡Όବ • Γ͜Έॏཁ •
ษڧํ๏ΞϓϦέʔγϣϯΤϯδχΞͱ͞΄Ͳม ΘΒͳ͍ • ͱʹ͔ࣗ͘Ͱ࡞ͬͯΈΑ͏ʂ