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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
masayoshi
December 10, 2016
Technology
12k
7
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
はてなのインフラ環境を自宅で再現する
YAPC::Hokkaido 2016 SAPPOROでの発表資料です。
今後ネットワーク図とか色々ブログの方に公開していきたいと思っています。
masayoshi
December 10, 2016
More Decks by masayoshi
See All by masayoshi
Perlアプリケーションで トレースを実装するまでの 工夫と苦労話
masayoshi
1
790
これからSREになる人と、これからもSREをやっていく人へ
masayoshi
6
6.1k
メトリクス、ログ、トレースをうまく使い分けて可観測性を高めよう!
masayoshi
8
12k
Developers Summit 2021 summer
masayoshi
15
31k
2021-06-cloud-native-reg-event
masayoshi
8
2.6k
SRE_Culture_Organization
masayoshi
16
11k
cloudnative-kansai-2019
masayoshi
1
790
ミドルウェア実行環境の多様化を考慮したインフラアーキテクチャの一検討/study on web system architecture #2
masayoshi
0
4k
Webサービスにおけるインフラアーキテクチャの体系化と選択自動化の研究/study on web system architecture #1
masayoshi
0
3.1k
Other Decks in Technology
See All in Technology
Bucharest Tech Week 2026 - Guardians of the Cloud-Native Galaxy
edeandrea
PRO
0
140
秘密度ラベル初心者が第1歩でつまづかないための「設計・運用」ポイント
seafay
PRO
1
480
事業会社における 機械学習・推薦システム技術の活用事例と必要な能力 / ml-recsys-in-layerx-wantedly-2026
yuya4
0
160
SteampipeとExcel Power QueryでAWS構成定義書の作成を自動化する
jhashimoto
0
180
あなたの知らないPDFのアクセシビリティ
lycorptech_jp
PRO
0
240
レガシーな広告配信システムでのAI駆動開発/運用の挑戦
i16fujimoto
0
120
SONiC Scale-Up Working Group から探る Scale-UpやUltraEthernet機能の実装方法
ebiken
PRO
2
480
從開發到部署全都交給 AI:實作 AI 驅動的自動化流程
appleboy
0
160
AI時代のコスト管理を考えよう〜明日から使える実践AWSノウハウ~
yoshimi0227
0
860
AIチャット検索改善の3週間
kworkdev
PRO
2
170
5分でわかるDuckDB Quack
chanyou0311
2
250
Microsoft のサポートとフィードバック総まとめ
murachiakira
PRO
0
110
Featured
See All Featured
YesSQL, Process and Tooling at Scale
rocio
174
15k
How to Ace a Technical Interview
jacobian
281
24k
Technical Leadership for Architectural Decision Making
baasie
3
420
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
270
Navigating Weather and Climate Data
rabernat
0
230
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.7k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.1k
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
200
Building a Scalable Design System with Sketch
lauravandoore
463
34k
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
2
870
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
740
Everyday Curiosity
cassininazir
0
240
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 ·ͱΊ
·ͱΊ • ͊ʙࣗαʔόͨͷ͌͠ʙ • ؆қͳͷͰࣗͰ࡞Δͷେࣄ • ΤϯδχΞϥΠτϢʔβ͡Όବ • Γ͜Έॏཁ •
ษڧํ๏ΞϓϦέʔγϣϯΤϯδχΞͱ͞΄Ͳม ΘΒͳ͍ • ͱʹ͔ࣗ͘Ͱ࡞ͬͯΈΑ͏ʂ