π₯ Load Balancingμ΄λ?
νλμ μΈν°λ· μλΉμ€κ° λ°μνλ νΈλν½μ΄ λ§μ λ μ¬λ¬ λμ μλ²κ° λΆμ°μ²λ¦¬νμ¬ μλ²μ λ‘λμ¨ μ¦κ°, λΆνλ, μλμ ν λ±μ κ³ λ €νμ¬ μ μ ν λΆμ°μ²λ¦¬νμ¬ ν΄κ²°ν΄μ£Όλ μλΉμ€!
νλμ¨μ΄ ν₯μνλ λΉμ©λ³΄λ€ μλ² νλ μΆκ° λΉμ©μ΄ λ μ μ! μ¬λ¬ λμ Server λλΆμ 무μ€λ¨ μλΉμ€λ₯Ό μ 곡ν μ μμ. μ¬λ¬ λμ Serverμκ² κ· λ±νκ² Trafficμ λΆμ°μμΌμ£Όλ μν μ νλ κ²μ΄ Load Balancer.
π₯ Clientκ° ν λλͺ
μΈ κ²½μ°μλ?
-> Serverλ μ¬μ λ‘κ² μ¬μ©μκ° μνλ κ²°κ³Όλ₯Ό μλ΅ ν΄μ€ μ μλ€!
π₯ νμ§λ§ Clientκ° ν λλͺ
μ΄ μλ μμ²λ§λͺ
μ΄λΌλ©΄???
-> Serverλ λͺ¨λ μ¬λλ€μ μλ΅μ ν΄μ£Όλ €κ³ λ
Έλ ₯νμ§λ§ κ²°κ΅μ μ§μ³μ λμμ λ©μΆκ² μ°..γ
γ
π₯ κ·ΈλΌ λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν΄μλ μ΄λ»κ² ν΄μΌν κΉ?
π₯ κ·ΈλΌ Scale-outμ μ₯μ μ΄ λκΉ?
π₯ ν΄λΌμ΄μΈνΈμ μμ²μ νΉμ μλ²μ λΆλ°°νλ λ‘λλ°Έλ°μ± κΈ°λ²μ μ¬λ¬ κ°μ§κ° μλ€! νμ©ν μ μλ λΆν λΆμ° λ°©μ(λ‘λλ°Έλ°μ± μκ³ λ¦¬μ¦)μ μ΄λ ν κ²λ€μ΄ μλμ§ μμ보μ!
β’ λΌμ΄λλ‘λΉ λ°©μ(Round Robin Method)
μλ²μ λ€μ΄μ¨ μμ²μ μμλλ‘ λμκ°λ©° λ°°μ νλ λ°©μ. ν΄λΌμ΄μΈνΈμ μμ²μ μμλλ‘ λΆλ°°νκΈ° λλ¬Έμ μ¬λ¬ λμ μλ²κ° λμΌν μ€νμ κ°κ³ μκ³ , μλ²μμ μ°κ²°(μΈμ
)μ΄ μ€λ μ§μλμ§ μλ κ²½μ°μ νμ©νκΈ° μ ν©.
β’ κ°μ€ λΌμ΄λλ‘λΉ λ°©μ(Weighted Round Robin Method)
κ°κ°μ μλ²λ§λ€ κ°μ€μΉλ₯Ό λ§€κΈ°κ³ κ°μ€μΉκ° λμ μλ²μ ν΄λΌμ΄μΈνΈ μμ²μ μ°μ μ μΌλ‘ λ°°λΆ. μ£Όλ‘ μλ²μ νΈλν½ μ²λ¦¬ λ₯λ ₯μ΄ μμ΄ν κ²½μ° μ¬μ©λλ λΆν λΆμ° λ°©μ. μλ₯Ό λ€μ΄ AλΌλ μλ²κ° 5λΌλ κ°μ€μΉλ₯Ό κ°κ³ BλΌλ μλ²κ° 2λΌλ κ°μ€μΉλ₯Ό κ°λλ€λ©΄, λ‘λλ°Έλ°μλ λΌμ΄λλ‘λΉ λ°©μμΌλ‘ A μλ²μ 5κ° B μλ²μ 2κ°μ μμ²μ μ λ¬.
β’ IP ν΄μ λ°©μ(IP Hash Method)
ν΄λΌμ΄μΈνΈμ IP μ£Όμλ₯Ό νΉμ μλ²λ‘ 맀ννμ¬ μμ²μ μ²λ¦¬νλ λ°©μμ
λλ€. μ¬μ©μμ IPλ₯Ό ν΄μ±ν΄(Hashing, μμμ κΈΈμ΄λ₯Ό μ§λ λ°μ΄ν°λ₯Ό κ³ μ λ κΈΈμ΄μ λ°μ΄ν°λ‘ 맀ννλ κ², λλ κ·Έλ¬ν ν¨μ) λ‘λλ₯Ό λΆλ°°νκΈ° λλ¬Έμ μ¬μ©μκ° νμ λμΌν μλ²λ‘ μ°κ²°λλ κ²μ 보μ₯.
β’ μ΅μ μ°κ²° λ°©μ(Least Connection Method)
μμ²μ΄ λ€μ΄μ¨ μμ μ κ°μ₯ μ μ μ°κ²°μνλ₯Ό 보μ΄λ μλ²μ μ°μ μ μΌλ‘ νΈλν½μ λ°°λΆ. μμ£Ό μΈμ
μ΄ κΈΈμ΄μ§κ±°λ, μλ²μ λΆλ°°λ νΈλν½λ€μ΄ μΌμ νμ§ μμ κ²½μ°μ μ ν©ν λ°©μ.
β’ μ΅μ 리μ€ν°νμ(Least Response Time Method)
μλ²μ νμ¬ μ°κ²° μνμ μλ΅μκ°(Response Time, μλ²μ μμ²μ 보λ΄κ³ μ΅μ΄ μλ΅μ λ°μ λκΉμ§ μμλλ μκ°)μ λͺ¨λ κ³ λ €νμ¬ νΈλν½μ λ°°λΆ. κ°μ₯ μ μ μ°κ²° μνμ κ°μ₯ 짧μ μλ΅μκ°μ 보μ΄λ μλ²μ μ°μ μ μΌλ‘ λ‘λλ₯Ό λ°°λΆνλ λ°©μ.
π₯ λ€νΈμν¬ ν΅μ μμ€ν μ ν¬κ² μΌκ³±κ°μ§μ κ³μΈ΅(OSI 7 layers! λ΄κ° μ§λ μκ° λΈλ‘κΉ ν λ 곡λΆν κ² λμλΉ...?π)μΌλ‘ λλ¨!! κ°κ°μ κ³μΈ΅(Layer)μ΄ L1/L2/L3β₯β₯L7μ ν΄λΉ. μμ κ³μΈ΅μμ μ¬μ©λλ μ₯λΉλ νμ κ³μΈ΅μ μ₯λΉκ° κ°κ³ μλ κΈ°λ₯μ λͺ¨λ κ°μ§κ³ μμΌλ©°, μμ κ³μΈ΅μΌλ‘ κ°μλ‘ λμ± μ κ΅ν λ‘λλ°Έλ°μ±μ΄ κ°λ₯.
λΆν λΆμ°μλ L4 λ‘λλ°Έλ°μμ L7 λ‘λλ°Έλ°μκ° κ°μ₯ λ§μ΄ νμ©λ¨. κ·Έ μ΄μ λ L4 λ‘λλ°Έλ°μλΆν° ν¬νΈ(Port)μ 보λ₯Ό λ°νμΌλ‘ λ‘λλ₯Ό λΆμ°νλ κ²μ΄ κ°λ₯νκΈ° λλ¬Έ. ν λμ μλ²μ κ°κΈ° λ€λ₯Έ ν¬νΈ λ²νΈλ₯Ό λΆμ¬νμ¬ λ€μμ μλ² νλ‘κ·Έλ¨μ μ΄μνλ κ²½μ°λΌλ©΄ μ΅μ L4 λ‘λλ°Έλ°μ μ΄μμ μ¬μ©ν΄μΌλ§ ν¨!
L4: Transport Layer(IPμ Port) Levelμμ Load Balancing.(TCP, UDP)
L7: Application Layer(μ¬μ©μμ Request) Levelμμ Load Balancing.(HTTP, HTTPS, FTP)
L4 λ‘λλ°Έλ°μλ λ€νΈμν¬ κ³μΈ΅(IP, IPX)μ΄λ νΈλμ€ν¬νΈ κ³μΈ΅(TCP, UDP)μ μ 보λ₯Ό λ°νμΌλ‘ λ‘λλ₯Ό λΆμ°ν¨. IPμ£Όμλ ν¬νΈλ²νΈ, MACμ£Όμ, μ μ‘ νλ‘ν μ½μ λ°λΌ νΈλν½μ λλλ κ²μ΄ κ°λ₯.
λ°λ©΄, L7 λ‘λλ°Έλ°μμ κ²½μ° μ ν리μΌμ΄μ κ³μΈ΅(HTTP, FTP, SMTP)μμ λ‘λλ₯Ό λΆμ°νκΈ° λλ¬Έμ HTTP ν€λ, μΏ ν€ λ±κ³Ό κ°μ μ¬μ©μμ μμ²μ κΈ°μ€μΌλ‘ νΉμ μλ²μ νΈλν½μ λΆμ°νλ κ²μ΄ κ°λ₯ν¨. μ½κ² λ§ν΄ ν¨ν·μ λ΄μ©μ νμΈνκ³ κ·Έ λ΄μ©μ λ°λΌ λ‘λλ₯Ό νΉμ μλ²μ λΆλ°°νλ κ²μ΄ κ°λ₯ν κ². μ κ·Έλ¦Όκ³Ό κ°μ΄ URLμ λ°λΌ λΆνλ₯Ό λΆμ°μν€κ±°λ, HTTP ν€λμ μΏ ν€κ°μ λ°λΌ λΆνλ₯Ό λΆμ°νλ λ± ν΄λΌμ΄μΈνΈμ μμ²μ λ³΄λ€ μΈλΆνν΄ μλ²μ μ λ¬ν μ μλ€! λν, L7 λ‘λλ°Έλ°μμ κ²½μ° νΉμ ν ν¨ν΄μ μ§λ λ°μ΄λ¬μ€λ₯Ό κ°μ§ν΄ λ€νΈμν¬λ₯Ό 보νΈν μ μμΌλ©°, DoS/DDoSμ κ°μ λΉμ μμ μΈ νΈλν½μ νν°λ§ν μ μμ΄ λ€νΈμν¬ λ³΄μ λΆμΌμμλ νμ©λκ³ μμ!
μΆμ²1: https://m.post.naver.com/viewer/postView.nhn?volumeNo=27046347&memberNo=2521903
μΆμ²2: https://nesoy.github.io/articles/2018-06/Load-Balancer