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
170
ロードバランサーって何? / What is the load balancer?
「ロードバランサーってよく聞くけど何物?」から始まり、DSRのメリット・デメリットなど。
社内勉強会にて発表。
ハトネコエ
July 31, 2017
Tweet
Share
More Decks by ハトネコエ
See All by ハトネコエ
Godot 4.3 と学ぶインタラクティブミュージック / Interactive Music Basics with Godot 4.3
nekonenene
0
62
Developer Consoleを使い倒そう / Use Web Browser DevTools
nekonenene
0
10
まだまだマイナー?! 未踏事業について教えます / Introduction of Mitou Project
nekonenene
1
100
Docker for Windows/macOS
nekonenene
0
11
技術的負債を防ぐには / What is the Technical Debt
nekonenene
0
300
画像処理の基礎の基礎 / Ultra Basic of Image Processing
nekonenene
0
27
伝わる文章を書こう講座 / Write the Kind Japanese Message
nekonenene
2
140
Unity で Android 自動ビルドしたかった話 / I tried Android build of Unity using Docker, but...
nekonenene
0
2.1k
これでわかるB-treeアルゴリズム / B-tree algorithm
nekonenene
12
9.9k
Other Decks in Technology
See All in Technology
ドメイン駆動設計の実践により事業の成長スピードと保守性を両立するショッピングクーポン
lycorptech_jp
PRO
14
2.5k
新卒1年目、はじめてのアプリケーションサーバー【IBM WebSphere Liberty】
ktgrryt
0
150
re:Invent2024 KeynoteのAmazon Q Developer考察
yusukeshimizu
1
160
コロプラのオンボーディングを採用から語りたい
colopl
5
1.4k
【NGK2025S】動物園(PINTO_model_zoo)に遊びに行こう
kazuhitotakahashi
0
270
Evolving Architecture
rainerhahnekamp
3
260
「人物ごとのアルバム」の精度改善の軌跡/Improving accuracy of albums by person
mixi_engineers
PRO
1
140
2025年の挑戦 コーポレートエンジニアの技術広報/techpr5
nishiuma
0
150
Amazon Q Developerで.NET Frameworkプロジェクトをモダナイズしてみた
kenichirokimura
1
200
商品レコメンドでのexplicit negative feedbackの活用
alpicola
2
410
デザインシステムを始めるために取り組んだこと - TechTrain x ゆめみ ここを意識してほしい!リファクタリング勉強会
kajitack
2
180
20250116_JAWS_Osaka
takuyay0ne
2
210
Featured
See All Featured
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.2k
The Cost Of JavaScript in 2023
addyosmani
46
7.2k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.2k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
6
500
BBQ
matthewcrist
85
9.4k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.4k
Facilitating Awesome Meetings
lara
51
6.2k
Done Done
chrislema
182
16k
Fantastic passwords and where to find them - at NoRuKo
philnash
50
2.9k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
39
1.9k
A Tale of Four Properties
chriscoyier
157
23k
How STYLIGHT went responsive
nonsquared
96
5.3k
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