Dev/etc

LoadBalancer

호나우지규 2021. 9. 24. 15:53

 

client 가 한두명인 경우 server는 여유롭게 사용자가 원하는 결과를 응답 해줌

client 가 수천만명인 경우 server는 응담을 해주려고 노력하다가 결국 지쳐서 멈춤

 

 

해결점

  • Scale-up
    Sever가 더 빠르게 동작하기 위해 하드웨어 성능을 향상
  • Scale-out
    하나의 서버 보다는 ㅇ여러 대의 서버가 나눠서 일을 하는 법

 

Scale-out 장점

  1. 하드웨어 향상하는 비용보다 서버 한대 추가 비용이 저렴
  2. 여러 대의 서버 덕분에 무중단 서비스를 제공 가능

 

여러대의 Server에 균등하게 Traffic을 분산시켜주는 역할을 하는 것이 Load Balancer

 

Load Balancing?

-> 하나의 인터넷 서비스가 발생하는 트래픽이 많을 때 여러대의 서버가 분산처리하여 서버이 로드율 증가, 부하량, 속도저하 드을 고려하여 적절히 분산처리하여 해결해주는 서비스

 

주요 기능

  1. NAT (Network Address Translation)
    사설 IP 주소를 공인 IP 주소로 바꾸는 데 사용하는 통신망의 주소 변조기
  2. Tunneling
    - 인터넷상에서 눈에 보이지 않는 통로를 만들어 통신할 수 있게 하는 개념
    - 데이터를 캡슐화해서 연결된 상호 간에만 캡슐화된 패킷ㅇ을 구별해 캡슐화를 해제할 수 있음
  3. DSR (Dynamic Source Routing protocol)
    로드 밸런서 사용 시 서버에서 클라이언트로 되돌아가는 경우 목적지 주소를 스위치의 IP 주소가 아닌 클라이언트의 IP주소를 전달해서 네트워크 스위치를 거치지 않고 바로 클라이언트를 찾아가는 개념

 

종류

  1. L2
    Mac 주소를 바탕으로 로드밸런싱
  2. L3
    IP주소를 바탕으로 로드밸런싱
  3. L4
    Transport Layer(IP & Port) level에서 로드밸런싱
    TCP, UDP
  4. L7
    Application Layer(사용자의 Requuest) level에서 로드밸런싱
    HTTP, HTTPS, FTP
    -> X-Forwarded-For
         HTTP / HTTPS 로드 밸런서를 사용할 떄 클라이언트의 IP주소를 식별하는 데 도움을 줌.
    -> X-Forwarded-Proto
         클라이언트가 로드 밸런서 연결에 사용한 프로토콜(HTTP / HTTPS)을 식별하는데 도움을 줌.
    -> X-Forwarded-Port
         클라이언트가 로드 밸런서 연결에 사용한 포트를 식별하는데 도움을 줌

 

로드 밸런서가 서버를 선택하는 기준

  1. Round Robin
    단순희 Round Robin으로 분산하는 방식
  2. Least Connections
    연결 개수가 가장 적은 서버를 선택하는 방식
    트래픽으로 인해 세션이 길어지는 경우 권장하는 방식
  3. Source
    사용자의 IP를 Hashing하여 분배하는 방식
    사용자는 항상 같은 서버로 연결되는 것을 보장함

 

로드 밸런서 장애 대비

  • 로드 밸런서를 이중화하여 장애를 대비할 있음
    이중화된 로드 밸런서들은 서로 health check
    메인 로드밸런서가 동작하지 않으면 가상 IP(VIP, Virtual IP) 여분의 로드밸런서로 변경됨
    여분의 로드 밸런서로 운영하게

출처 :