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
10k
Developers Summit 2021 summer
masayoshi
15
29k
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
What's new in OpenShift 4.19
redhatlivestreaming
1
260
Amplifyとゼロからはじめた AIコーディング 成果と展望
mkdev10
1
270
AIにどこまで任せる?実務で使える(かもしれない)AIエージェント設計の考え方
har1101
3
1.1k
AI技術トレンド勉強会 #1MCPの基礎と実務での応用
nisei_k
1
210
エンジニア採用から始まる技術広報と組織づくり/202506lt
nishiuma
8
1.7k
Bill One 開発エンジニア 紹介資料
sansan33
PRO
4
12k
IIWレポートからみるID業界で話題のMCP
fujie
0
380
“プロダクトを好きになれるか“も QAエンジニア転職の大事な判断基準だと思ったの
tomodakengo
0
140
RubyOnRailsOnDevin+α / DevinMeetupJapan#2
ginkouno
0
450
doda開発 生成AI元年宣言!自家製AIエージェントから始める生産性改革 / doda Development Declaration of the First Year of Generated AI! Productivity Reforms Starting with Home-grown AI Agents
techtekt
0
160
生成AIをテストプロセスに活用し"よう"としている話 #jasstnano
makky_tyuyan
0
170
In Praise of "Normal" Engineers (LDX3)
charity
2
990
Featured
See All Featured
Making the Leap to Tech Lead
cromwellryan
134
9.3k
Navigating Team Friction
lara
186
15k
Building Applications with DynamoDB
mza
95
6.4k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
181
53k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
120k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
123
52k
Build The Right Thing And Hit Your Dates
maggiecrowley
36
2.7k
jQuery: Nuts, Bolts and Bling
dougneiner
63
7.8k
Why You Should Never Use an ORM
jnunemaker
PRO
56
9.4k
Designing for Performance
lara
609
69k
Measuring & Analyzing Core Web Vitals
bluesmoon
7
480
The Illustrated Children's Guide to Kubernetes
chrisshort
48
50k
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 ·ͱΊ
·ͱΊ • ͊ʙࣗαʔόͨͷ͌͠ʙ • ؆қͳͷͰࣗͰ࡞Δͷେࣄ • ΤϯδχΞϥΠτϢʔβ͡Όବ • Γ͜Έॏཁ •
ษڧํ๏ΞϓϦέʔγϣϯΤϯδχΞͱ͞΄Ͳม ΘΒͳ͍ • ͱʹ͔ࣗ͘Ͱ࡞ͬͯΈΑ͏ʂ