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
ロードバランサーって何? / What is the load balancer?
Search
ハトネコエ
July 31, 2017
Technology
0
200
ロードバランサーって何? / What is the load balancer?
「ロードバランサーってよく聞くけど何物?」から始まり、DSRのメリット・デメリットなど。
社内勉強会にて発表。
ハトネコエ
July 31, 2017
Tweet
Share
More Decks by ハトネコエ
See All by ハトネコエ
日経が読める?! 株式市場の基礎 / Stock Market Basics
nekonenene
0
36
プルリクエストレビューを終わらせるためのチーム体制 / The Team for Completing Pull Request Reviews
nekonenene
4
2.9k
今年こそ知るべきセキュリティー入門 / Security Basics 2025
nekonenene
0
64
Godot 4.3 と学ぶインタラクティブミュージック / Interactive Music Basics with Godot 4.3
nekonenene
0
170
Developer Consoleを使い倒そう / Use Web Browser DevTools
nekonenene
0
48
まだまだマイナー?! 未踏事業について教えます / Introduction of Mitou Project
nekonenene
1
150
Docker for Windows/macOS
nekonenene
0
38
技術的負債を防ぐには / What is the Technical Debt
nekonenene
0
340
画像処理の基礎の基礎 / Ultra Basic of Image Processing
nekonenene
0
56
Other Decks in Technology
See All in Technology
プロファイルとAIエージェントによる効率的なデバッグ / Effective debugging with profiler and AI assistant
ymotongpoo
1
240
CREが作る自己解決サイクルSlackワークフローに組み込んだAIによる社内ヘルプデスク改革 #cre_meetup
bengo4com
0
350
OSSで50の競合と戦うためにやったこと
yamadashy
3
1k
Kubernetes self-healing of your workload
hwchiu
0
560
オブザーバビリティが育むシステム理解と好奇心
maruloop
2
1.3k
ストレージエンジニアの仕事と、近年の計算機について / 第58回 情報科学若手の会
pfn
PRO
3
860
IBC 2025 動画技術関連レポート / IBC 2025 Report
cyberagentdevelopers
PRO
2
190
Zero Trust DNS でより安全なインターネット アクセス
murachiakira
0
100
GraphRAG グラフDBを使ったLLM生成(自作漫画DBを用いた具体例を用いて)
seaturt1e
1
150
Azure Well-Architected Framework入門
tomokusaba
1
130
CNCFの視点で捉えるPlatform Engineering - 最新動向と展望 / Platform Engineering from the CNCF Perspective
hhiroshell
0
140
AIプロダクトのプロンプト実践テクニック / Practical Techniques for AI Product Prompts
saka2jp
0
110
Featured
See All Featured
Designing for Performance
lara
610
69k
Scaling GitHub
holman
463
140k
The Invisible Side of Design
smashingmag
302
51k
Become a Pro
speakerdeck
PRO
29
5.6k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
34
2.3k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3.1k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
190
55k
Being A Developer After 40
akosma
91
590k
Done Done
chrislema
185
16k
Documentation Writing (for coders)
carmenintech
75
5.1k
How GitHub (no longer) Works
holman
315
140k
GitHub's CSS Performance
jonrohan
1032
470k
Transcript
ϩʔυόϥϯαʔ͕ Θ͔Βͳ͍ ϋτωίΤ @nekonenene 201707݄31
• ϩʔυόϥϯαʔɺௐΕௐΔ΄Ͳ NATSSL௨৴ͳͲલఏͱͳΔωοτϫʔΫ ͕ࣝΓࢁͳ͜ͱ͕Θ͔ͬͯɺ શ෦৮ΕΒΕͳ͍ͷͰɺؾʹͳͬͯͨ ࣍ϖʔδͷ͜ͱͷΈѻ͍·͢ • L4ʢτϥϯεϙʔτɿTCP/UDPʣ • L7ʢΞϓϦέʔγϣϯʣ
ϩʔυόϥϯαʔΘ͔Βͳ͍
• ϩʔυͬͯͳʹʁ ಓʁ • ͲΜͳΈͳͷʁ • σʔλΛͲ͏ͬͯΫϥΠΞϯτʹ͢ͷʁ • ઐ༻ͷػցΛങΘͳ࣮ͯ͘ݱͰ͖Δʁ •
ෳͷϩʔυόϥϯαΛཱͯͨͱ͖ɺ ͦΕͷଓཧͲ͕͓͜͜ͳ͏ͷʁ ͕͜͜Θ͔Βͳ͍
• load ͱ͍͏ͱʮσʔλΛಡΈࠐΉʢಈࢺʣʯ ͷΠϝʔδ͕ڧ͍͚Ͳɺʮॏՙʢ໊ࢺʣʯͷ ҙຯ͕ݩʑɻͭ·Γʮෛՙʯ • ʮՙΛੵΉɾ٧ΊࠐΉʯˠʮర͢Δʯ ˠʮσʔλΛॻ͖ࠐΉɾಡΈࠐΉʯ ͱ͍͏ྲྀΕͰίϯϐϡʔλ༻ޠͱͯ͠Θ ΕΔΑ͏ʹͳͬͨͬΆ͍
1. ϩʔυͬͯͳʹʁ
• load balancing ʮෛՙࢄʯͱ͍͏ҙຯͰ ϩʔυόϥϯαͦΕΛͬͯ͘ΕΔͷ • ͳͷͰɺҙຯ߹͍ͱ͍͚ͯ͠Ͳɺ جຊతʹϩʔυόϥϯγϯά༻ʹ࡞ΒΕͨ ͷΛϩʔυόϥϯαͱͯ͠ޠ͍͖ͬͯ·͢ ϩʔυόϥϯα
• ϩʔυόϥϯα͕ͲͷαʔόʔΛબ͢Δ͔ ͷख๏͍͘Β͔͋Δɻ͓ͳྫˣ • ϥϯυϩϏϯํࣜɿ୯७ʹॱ൪ʹબ • ॏΈ͚ͮɿൺΛఆٛ • ࠷খଓɿݱࡏͷίωΫγϣϯ͕࠷খ͞ ͍αʔόʹసૹ
2. ͲΜͳΈͳͷʁ ࢀߟ : http://www.infraexpert.com/study/loadbalancer4.html
• DNSͷAϨίʔυͰɺಉυϝΠϯʹ ෳͷIPΞυϨεΛׂΓͯΔ͜ͱͰ ϥϯυϩϏϯํࣜΛ࣮ݱ͢Δͷ ʢϩʔυόϥϯα͍Βͣʂ खܰʂʣ • RFC3484ʹͯʮෳׂΓ͕ͯ͋Δ߹ ͬͱ͍ۙαʔόΛબʯͱͳͬͨͷͰݱ ࡏϥϯυϩϏϯʹͳΒͳ͍͜ͱ
DNSϥϯυϩϏϯ
• ϥϯυϩϏϯͰͳ͍Ͱ͕͢ɺ AWS Route53ͰWeightͷࢦఆ͕͓͜ͳ ͑ɺDNSʹΑΔʮॏΈ͚ͮʯͷෛՙࢄ͕Մ ೳͰ͢ DNSʹΑΔෛՙࢄ ࢀߟ : http://qiita.com/nagizero/items/385ed12c60f229a4df9c
• AWSͷυΩϡϝϯτతʹɺELB CLBʢClassic Load Balancerʣ ALBʢApplication Load Balancerʣ ʹ͔Ε·͕͢ɺELBʹCLBͱ͠·͢ •
ͳ͓ɺALBEC2Πϯελϯεͷ Ͳͷίϯςφʹͭͳ͙͔·ͰΛ੍ޚ͢Δɻ ϥϯυϩϏϯϧʔςΟϯάΞϧΰϦζϜisԿ ELBͲͷํࣜʁ
• ʰσϑΥϧτͰɺϩʔυόϥϯαʔɺ ϩʔυόϥϯαʔʹରͯ͠༗ޮʹ͢ΔΞϕΠ ϥϏϦςΟʔκʔϯؒͰۉʹτϥϑΟοΫ Λࢄ͠·͢ʱ ( http://docs.aws.amazon.com/ja_jp/elasticloadbalancing/latest/classic/ introduction.html ) •
ॏΈ͚ͮ 1:1:1:1:1:1:ʢུ ͷࢄํࣜΛऔ͍ͬͯΔΑ͏Ͱ͢Ͷ CLBͲͷํࣜʁ
• αʔόʔ͔ΒͷϨεϙϯε͕ϩʔυόϥϯ αʔΛܦ༝͍ͯͯ͠ɺϩʔυόϥϯαʔͷ ෛՙେ͖͍ΑͶʁ ͱࢥ͍ͬͯͨͷͰɺΫϥΠΞϯτૹΔ ͷͩͱࢲࢥ͍ͬͯͨɻ • ্هํࣜΛDSRʢDirect Server Returnʣߏ
ͱݴ͏ 3. ΫϥΠΞϯτͲ͏ͬͯʁ
• αʔόʔ͔Βฦ͢ใ͕ϩʔυόϥϯαʔ Λ௨Βͳ͍ͷͰɺΞϓϦέʔγϣϯͷใ ಘΒΕͳ͍ • ΞϓϦέʔγϣϯతͳใʹΑΔෛՙࢄ͕ ͓͜ͳ͑ͳ͍ʢ͖ͬ͞ͷ࠷খଓͳͲʣ • CookieΛ༻͍ͨεςΟοΩʔηογϣϯ ʢύʔγεςϯεʣ͓͜ͳ͑ͳ͍
DSRͷσϝϦοτ ࢀߟ : http://knowledge.sakura.ad.jp/tech/527
• HTTPS௨৴Λ͓͜ͳ͏߹ɺ҉߸Խɾ෮߸ʹ ͦΕͳΓͷෛՙ • ϩʔυόϥϯαʔʹ͍ͬͨΜฦ͢͜ͱͰ SSLΞΫηϥϨʔλʢ҉߸Խɾ෮߸͢Δ ͷʣ͖ϩʔυόϥϯαʔͰ͋Εɺ ͦ͜ʹෛՙΛҰͰ͖Δ͠ɺSSLূ໌ॻͦ ͜ʹ͚ͩஔ͍ͯɺαʔόͱHTTP௨৴Մೳ DSRΛΘͳ͍ϝϦοτ
• ಈըετϦʔϛϯά࠶ੜͷΑ͏ʹɺ େྔͷϨεϙϯεΛαʔόʔ͕ฦ͢γεςϜ ͷ߹ɺϩʔυόϥϯαʔͷεϧʔϓοτ ʢσʔλసૹʣੑೳ͕͍͔ͭͳ͍͔Β DSRΛ͏΄͏͕͍͍ɺͱ͍͏߹͋Δ • ͨͩɺௐͯΈͨײ͡DSRΛקΊͳ͍ௐ ͕ଟ͘ײͨ͡ DSRΛ͏΄͏͕͍͍߹
ࢀߟ : http://www.infraexpert.com/study/loadbalancer12.html
• ϩʔυόϥϯαʔΛௐΔͱ F5 Networks.Inc ͷʰBIG-IPʱͷ͕ଟ͍… • ͰɺࣗαʔόͰݐͯΒΕͳ͍͔ʁ • ʰLinux Virtual
Server (LVS)ʱͱ ʰKeepalivedʱΛ༻͍Δ͜ͱͰɺ αʔόʔΛϩʔυόϥϯαʔԽͰ͖Δ 4. ઐ༻ͷػց͕ඞཁʁ
• LVSॏΈ͚ͮʹΑΔࢄΛ͓͜ͳ͑·͢ ʢઃఆํ๏ : http://dsas.blog.klab.org/archives/50664843.html ʣ • Keepalived֤αʔόʔͷࢮ׆ঢ়گΛɺ TCPίωΫγϣϯ͕ுΕΔ͔(TCP_CHECK) HTTPΞΫηεͰ͖Δ͔(HTTP_GET)
ͱ͍ͬͨํ๏Ͱࢹ͠·͢ ʢઃఆํ๏ : http://blog.idcf.jp/entry/cloud/keepalived ʣ LVS + Keepalived
• AWSͷElastic Load Balancingʹ͓͚Δ ϩʔυόϥϯαʔউखʹ૿ݮ͢ΔΒ͍͠ɻ • ͡Ό͋ͲͷϩʔυόϥϯαʔʹৼΔ͔ Ͳ͏͍͏Έʁ • ͜ͷࢿྉ7ϖʔδʹ͋ͬͨDNSϥϯυϩϏϯ
ͱಉ༷ͷํ๏Ͱղܾ͍ͯ͠Δ 5. ϩʔυόϥϯαʔͷόϥϯαʔʁ
ΫϥΠΞϯτ͕ϦΫΤετΛϩʔυόϥϯαʔʹૹ৴͢ΔલʹɺυϝΠϯωʔϜγεςϜ (DNS) αʔόʔΛ༻ͯ͠ϩʔυόϥϯαʔͷυϝΠϯ໊Λղܾ͠·͢ɻ Πϯελϯε amazonaws.com υϝΠϯʹ͋ΔͨΊɺDNS ΤϯτϦ Amazon ʹ Α੍ͬͯޚ͞Ε·͢ɻAmazon
DNS αʔόʔɺ1 ͭҎ্ͷ IP ΞυϨε (ϩʔυόϥϯ αʔ༻ͷϩʔυόϥϯαʔϊʔυͷ IP ΞυϨε) ΛΫϥΠΞϯτʹฦ͠·͢ɻ ΞϓϦέʔγϣϯͷτϥϑΟοΫ͕࣌ؒͷܦաͱͱʹมԽ͢ΔͱɺElastic Load Balancing ϩʔυόϥϯαʔΛεέʔϦϯάͯ͠ DNS ΤϯτϦΛߋ৽͠·͢ɻDNS Τ ϯτϦͰɺ༗ޮظݶ (TTL) 60 ඵʹࢦఆ͞Ε͍ͯΔͨΊɺτϥϑΟοΫͷมԽʹԠ͡ ͯ IP ΞυϨε͕ਝʹ࠶Ϛοϓ͞ΕΔʹҙ͍ͯͩ͘͠͞ɻ AWSυΩϡϝϯτΑΓ Ҿ༻ݩ : http://docs.aws.amazon.com/ja_jp/elasticloadbalancing/latest/ userguide/how-elastic-load-balancing-works.html#request-routing
εοΩϦʂ
ΑΓਂ͘Γͨ͘ͳͬͨํ ͜ͷεϥΠυ͕ྑ͛͞Ͱ͢ ʰϩʔυόϥϯα࠶ೖʱ https://www.slideshare.net/ ryuichitakashima3/ ss-72343772