[Network] Load Balancing (λ‘λ λ°Έλ°μ±)μ κ°λ κ³Ό μ΄ν΄
μ²μ μλ²λ₯Ό κ°λ°νκ³ , μ΄λ₯Ό μ΄μνλ λ°κΉμ§ λ§μ νμ΅ μκ°μ΄ νμνμ΅λλ€. μλ² κ°λ°μ μν΄ Servlet, JSP, Springμ λ°°μ°κ² λμκ³ , λμκ°μλ λ λμ νλ μμν¬ λ° μ°¨μ΄λ₯Ό μμ보기 μν΄ Flask, Django, Nest.js λ± λ€μν νλ μμν¬λ₯Ό μ¬μ©νμμ£ . κ·Έλ¬λ μλ² κ³΅λΆλ μ΄κ²μ΄ λμ΄ μλμμ΅λλ€.
μ°λ¦¬λ μ΄λ¬ν μλ²λ₯Ό μΈν°λ·μ μλΉμ€νκΈ° μν΄ λ§μ κ²μ κ³ λ―Όν΄μΌ νμ΅λλ€. μλ²μμ 10, 100λͺ λ§ μ μν΄μ λλ μΌμ΄λΌλ©΄ κ·Έλ₯ μλ²λ₯Ό κ°λ°νκ³ , λ°°ν¬νλ κ²λ§μΌλ‘ λλ μΌμ΄μ§λ§, λ§μ½ μμλ§ λͺ μ μ¬μ©μλ€μ΄ λ΄ μλ²μ μ μν΄μΌ νλ€λ©΄ μ΄λ€ μΌμ΄ λ²μ΄μ§κΉμ?
λ§μ½, μλ²κ° λ©ν° μ€λ λλ₯Ό μ¬μ©νκ³ , κ° μ¬μ©μκ° μ μν λλ§λ€ μ€λ λλ₯Ό μμ±νλ ννλ₯Ό κ°μ§κ³ μλ€λ©΄, 1λ§ λͺ μλ κ·Έ μ΄νμ μ¬μ©μκ° μ μνλ μκ° μλ²μμ μ€λ₯λ₯Ό λ°μν κ²μ λλ€. μλꡬμ? λ³΄ν΅ μ΄μ체μ μμ μ€λ λλ₯Ό μμ±ν μ μλ κ°―μκ° μ νλμ΄ μκΈ° λλ¬Έμ΄μ£ .. λ§μ½ λ΄κ° 128 μ½μ΄ νλ‘μΈμμ 512GB λ©λͺ¨λ¦¬λ₯Ό μ§λ λ©μΉ ν° μλ²λ₯Ό κ°μ§κ³ μλ€κ³ νλλΌλ μλ²μ 리μμ€λ₯Ό λ€ μ°μ§λ λͺ»ν μ± μ¬μ©μκ° μ μνμ§ λͺ»νλ μ΄μ΄ μλ μν©μ λΆλ¬μ€κ² λ©λλ€.
κ°μΈν μλΉμ€(λΈλ‘κ·Έ, ννμ΄μ§, Git)λ₯Ό κ°λ°νκ³ , μ΄μνλ©΄μ μ΄λ¬ν λ¬Έμ κ° λ°μ νλ κ²½μ°λ κ±°μ μμμ΅λλ€. μλνλ©΄ μ ꡬμΆλμ΄ μλ ν΄λΌμ°λ(PaaS)λ₯Ό μ΄μ©νλ©΄ μ΄λ₯Ό μμμ μ²λ¦¬ν΄μ£ΌκΈ° λλ¬Έμ΄μ£ (μ¬μ€ κ°λ³μ μΌλ‘ λ‘λ λ°Έλ°μ±μ ν΄μΌν λ§νΌ μλΉμ€λ₯Ό νλ κ²λ μλμ§λ§μ γ )
What is Load Balancing ?
λ‘λ λ°Έλ°μ±μ΄λ, μΈν°λ· μλΉμ€μμ λ°μνλ λλμ νΈλν½μ λΆμ° μ²λ¦¬ν΄μ£Όλ κΈ°μ μ λλ€. μ€μ λ‘ μ²μμλ L7 μ€μμΉλΌλ νλμ¨μ΄ λ€νΈμν¬ μ₯λΉμμ μ§μν΄μ£Όλ λ 벨μ κΈ°μ μ΄μμ§λ§ μ΅κ·Όμλ μννΈμ¨μ΄μ μΈ λ°©μμΌλ‘λ λ‘λ λ°Έλ°μ±μ μ¬μ©ν μ μμ΄, λλΆλΆμ νμ¬μμ μ΄ κΈ°μ μ μ¬μ©νμ¬ μλΉμ€λ₯Ό μ΄μνκ³ μμ΅λλ€.
μ리λ μ΄λ μ΅λλ€. μ¬μ©μκ° μΈν°λ·μμ μ΄λ μλΉμ€μ μ μνκ² λλ©΄, μλ¨μ λ€νΈμν¬ μ₯λΉκ° μ΄ μ΄λ²€νΈλ₯Ό λ°κ³ , νΈλν½μ μν©μ λ°λΌ 1λ² μλ²μ μ μμ μν¬μ§, 2λ² μλ²μ μ μμ μν¬μ§λ₯Ό νλ¨νμ¬, κ·Έ μλΉμ€μκ² μμ²μ 보λ΄κ³ μλ΅μν€λλ‘ νλ κ²μ λλ€.
λ‘λ λ°Έλ°μ±μ μλμ 3κ°μ§ λ€νΈμν¬ κΈ°μ μ μ¬μ©ν©λλ€.
- NAT(Network Address Translation) : μ¬μ€ IP μ£Όμλ₯Ό κ³΅μΈ IP μ£Όμλ‘ λ³κ²½νλ λ° μ¬μ©νλ κΈ°μ
- DSR(Dynamic Source Routing Control) : λ‘λ λ°Έλ°μ μ¬μ©μ μλ²μμ ν΄λΌμ΄μΈνΈλ‘ λλμκ°λ κ²½μ° λͺ©μ μ§μ μ£Όμλ₯Ό μ€μμΉ IP μ£Όμκ° μλ ν΄λΌμ΄μΈνΈμ IP μ£Όμλ‘ μ λ¬ν΄ λ€νΈμν¬ μ€μμΉλ₯Ό κ±°μΉμ§ μκ³ λ°λ‘ ν΄λΌμ΄μΈνΈλ₯Ό μ°Ύμκ°λ κ°λ
- Tunneling : μΈν°λ·μμμ λμ 보μ΄μ§ μλ ν΅λ‘λ₯Ό λ§λ€μ΄ ν΅μ ν μ μλλ‘ νλ κ°λ , λ°μ΄ν°λ₯Ό μΊ‘μννμ¬ μ°κ²°λ μνΈ κ°μλ§ μΊ‘μνλ ν¨ν·μ ꡬλ³ν΄ μΊ‘μν ν΄μ κ°λ₯
Operating for Load Balancing
λ‘λ λ°Έλ°μ±μ λμμ κ°λ¨ν μ€λͺ νλ€λ©΄, λ€νΈμν¬μμ IP μ£Όμμ MAC μ£Όμλ₯Ό μ΄μ©ν΄ λͺ©μ μ§ IP μ£Όμλ₯Ό μ°Ύμκ°κ³ μΆλ°μ§(Source)λ‘ λλμμ€λ ꡬ쑰μ λλ€. μ΄λ€ λ°©μμλ μλμ 4κ°μ§ λ°©μμ΄ μμ΅λλ€.
- Bridge/Transparent Mode
μ¬μ©μκ° μλΉμ€λ₯Ό μμ²νλ©΄, L4λ‘ μ λ¬λ λͺ©μ μ§ IP μ£Όμλ₯Ό Real Server IP μ£Όμλ‘ λ³ννκ³ MAC μ£Όμ λν λ³νν΄ λͺ©μ μ§λ‘ μ°Ύμκ°λ λ°©μ
1. μμ² μ λ¬ μ λ³ν: μ¬μ©μ -> L4 -> NAT(IP/MAC λ³ν) -> Real Server =: μ¬μ©μκ° L4 νΈμΆμ μ€κ°μ NATμ μν΄ μ£Όμ λ³νλ¨
2. μλ΅ μ λ¬μ λ³ν: Real Server -> NAT -> L4 -> μ¬μ©μ =: Real Serverμμ L4λ₯Ό κ±°μΉλ©΄μ μΆλ°μ§(Source) IP μ£Όμλ₯Ό L4 μ¬μ€ IP μ£Όμλ‘ λ³νν λ, MAC μ£Όμλ λ³ννμ§ μμ (λμΌ λ€νΈμν¬ λμμ΄κΈ° λλ¬Έ) - Router Mode
Bridge/Transparent Modeμ λ°©μμ λΉμ·νμ§λ§ μΆλ°μ§(Source)μ MAC μ£Όμλ λ³νλλ λ°©μ - One Arm Mode
μ¬μ©μκ° Real Serverμ μ μν λ, λͺ©μ μ§(Destination) IPλ L4 μ€μμΉμ IPλ₯Ό λ°λΌλ³΄κ² λλλ°, L4μ λλ¬νλ©΄ L4λ ν΄λΌμ΄μΈνΈμκ² λ°μ λͺ©μ μ§ IP μ£Όμλ₯Ό L4 IP μ£Όμμμ Real Server IPμ MAC μ£Όμλ‘ λ³ννκ³ , λλμκ°λ IPλ L4μ IP Poolμ IP μ£Όμλ‘ λ³ν - DSR (Direct Server Return) Mode
μ¬μ©μκ° Real Serverμ μ μν λ, μΆλ°μ§(Source), λͺ©μ μ§(Destination) IP μ£Όμλ₯Ό λ³ννμ§ μκ³ , L4μμ κ΄λ¦¬νλ MAC μ£Όμ ν μ΄λΈμ νμΈν΄ MAC μ£Όμλ§μ λ³ννλ λ°©μ (μ¬κΈ°μ ARP νλ‘ν μ½μ μ¬μ©)
Scheduling Algorithm
λ‘λ λ°Έλ°μ±μλ νΈλν½μ λΆμ°νλ μκ³ λ¦¬μ¦μ΄ μμ΅λλ€. 무μμ μ¬μ©μκ° λ€μ΄μ΄μ λ°λΌ κ· λ±νκ² λΆμ°μ²λ¦¬νλ©΄ λ² μ€νΈλΌκ³ λ³΄μ€ μλ μκ² μ§λ§, λ§μ½ λ μλ²κ° λ€λ₯Έ μ€νμ κ°μ§κ³ μλ€κ±°λ, νκ²½μ΄ λ€λ₯Έ κ²½μ°μλ μ΄λ¬ν μκ³ λ¦¬μ¦μ΄ μ€νλ € μ ν¨κ³Όλ₯Ό λΆλ₯Ό μλ μμ΅λλ€. λ°λΌμ λ‘λ λ°Έλ°μ±μλ μ¬λ¬ μκ³ λ¦¬μ¦μ΄ μ‘΄μ¬ν©λλ€.
- RR(Round-Robin) : λ€νΈμν¬μ μ°κ²°λμ΄ μλ μλ²λ₯Ό μ²μλΆν° μ°¨λ‘λλ‘ μ ννλ λ°©μμ μκ³ λ¦¬μ¦
- WRR(Weighted Round-Robin) : RRμ κ°μ€μΉ(Weight)λ₯Ό μΆκ°ν μκ³ λ¦¬μ¦μΌλ‘, κ°μ€μΉλ₯Ό μ΄μ©ν΄ λΆμ°νλ μκ³ λ¦¬μ¦ κ°μ€μΉλ μ΄μμκ° μ νν μ μμΌλ©°, κ°μ€μΉκ° ν΄ μλ‘ λΉλ²νκ² μ νλλ€.
- LC(Least-Connection) : μ μ μκ° κ°μ₯ μ μ μλ²λ₯Ό μ ννλ μκ³ λ¦¬μ¦
- WLC(Weighted Least-Connection) : LCμ κ°μ€μΉ(Weight)λ₯Ό μΆκ°ν μκ³ λ¦¬μ¦μΌλ‘, (Connection + 1) / Weightκ° μ΅μκ° λλ μλ²λ₯Ό μ°μ μΌλ‘ μ μμν¨λ€.
- SED(Shortest Expected Delay) : κ°μ₯ μλ΅ μλκ° λΉ λ₯Έ μλ²λ₯Ό μ ννλ μκ³ λ¦¬μ¦μΌλ‘, μλ²μ ESTABLISHED Connectionμ΄ κ°μ₯ μ μ μλ²λ₯Ό μ ννλ€.
μ¬μ€ μ½κ³ , νΈνκ² μΈ μ μλ μκ³ λ¦¬μ¦μ LC μκ³ λ¦¬μ¦μ λλ€. μ μ μκ° κ°μ₯ μ μ μλ²λ₯Ό μ ννκ² λλ©΄, μ¬μ©μκ° κ°λ₯ν κΉ¨λν νκ²½μ μ¬μ©ν μ μκΈ° λλ¬Έμ΄μ£ . κ·Έλ¬λ νμ Bestκ° λ μλ μμ΅λλ€.
λ§μΉλ©°...
λ‘λ λ°Έλ°μ±μ λν κ°λ¨ν μ΄μΌκΈ°λ₯Ό ν΄λ΄€μ΅λλ€. λ§μ§λ§ ν¬μ€νΈκ° IP Masqueradeμλλ°, λ‘λ λ°Έλ°μ± μ΄μ μ λ©ν° νλ‘μΈμ€, λ©ν° μ€λ λ λ°©μμ μλ² κ°λ° μ΄μΌκΈ°λ₯Ό ν΄λ³΄λ €λ€ λ¨Όμ λ‘λ λ°Έλ°μ± ν¬μ€νΈλ₯Ό νκ² λμμ΅λλ€.
μ°¨ν λ€λ₯Έ μΉ΄ν κ³ λ¦¬μμ μ΄ λ‘λ λ°Έλ°μ±μ μ΄λ»κ² μ¬μ©ν μ μλμ§μ λν΄ μ μ΄λ³΄κ³ μ ν©λλ€.
'Infrastructure > Network' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Network] Rate Limitκ³Ό Throttling μ΄ν΄ (0) | 2023.07.17 |
---|---|
MQTT νλ‘ν μ½ κ°λ κ³Ό μ΄ν΄ (0) | 2017.08.26 |
λ€νΈμν¬ νλ‘κ·Έλλ°μ κΈ°μ΄ - Socket (0) | 2017.04.09 |
IP MASQUERADE (0) | 2016.07.02 |
NAT (Network Address Translation) (0) | 2016.06.24 |