Dev/etc
LoadBalancer
호나우지규
2021. 9. 24. 15:53
client 가 한두명인 경우 server는 여유롭게 사용자가 원하는 결과를 응답 해줌
client 가 수천만명인 경우 server는 응담을 해주려고 노력하다가 결국 지쳐서 멈춤
해결점
- Scale-up
Sever가 더 빠르게 동작하기 위해 하드웨어 성능을 향상 - Scale-out
하나의 서버 보다는 ㅇ여러 대의 서버가 나눠서 일을 하는 법
Scale-out 장점
- 하드웨어 향상하는 비용보다 서버 한대 추가 비용이 저렴
- 여러 대의 서버 덕분에 무중단 서비스를 제공 가능
여러대의 Server에 균등하게 Traffic을 분산시켜주는 역할을 하는 것이 Load Balancer
Load Balancing?
-> 하나의 인터넷 서비스가 발생하는 트래픽이 많을 때 여러대의 서버가 분산처리하여 서버이 로드율 증가, 부하량, 속도저하 드을 고려하여 적절히 분산처리하여 해결해주는 서비스
주요 기능
- NAT (Network Address Translation)
사설 IP 주소를 공인 IP 주소로 바꾸는 데 사용하는 통신망의 주소 변조기 - Tunneling
- 인터넷상에서 눈에 보이지 않는 통로를 만들어 통신할 수 있게 하는 개념
- 데이터를 캡슐화해서 연결된 상호 간에만 캡슐화된 패킷ㅇ을 구별해 캡슐화를 해제할 수 있음 - DSR (Dynamic Source Routing protocol)
로드 밸런서 사용 시 서버에서 클라이언트로 되돌아가는 경우 목적지 주소를 스위치의 IP 주소가 아닌 클라이언트의 IP주소를 전달해서 네트워크 스위치를 거치지 않고 바로 클라이언트를 찾아가는 개념
종류
- L2
Mac 주소를 바탕으로 로드밸런싱 - L3
IP주소를 바탕으로 로드밸런싱 - L4
Transport Layer(IP & Port) level에서 로드밸런싱
TCP, UDP - L7
Application Layer(사용자의 Requuest) level에서 로드밸런싱
HTTP, HTTPS, FTP
-> X-Forwarded-For
HTTP / HTTPS 로드 밸런서를 사용할 떄 클라이언트의 IP주소를 식별하는 데 도움을 줌.
-> X-Forwarded-Proto
클라이언트가 로드 밸런서 연결에 사용한 프로토콜(HTTP / HTTPS)을 식별하는데 도움을 줌.
-> X-Forwarded-Port
클라이언트가 로드 밸런서 연결에 사용한 포트를 식별하는데 도움을 줌
로드 밸런서가 서버를 선택하는 기준
- Round Robin
단순희 Round Robin으로 분산하는 방식 - Least Connections
연결 개수가 가장 적은 서버를 선택하는 방식
트래픽으로 인해 세션이 길어지는 경우 권장하는 방식 - Source
사용자의 IP를 Hashing하여 분배하는 방식
사용자는 항상 같은 서버로 연결되는 것을 보장함
로드 밸런서 장애 대비
- 로드 밸런서를 이중화하여 장애를 대비할 수 있음
이중화된 로드 밸런서들은 서로 health check을 함
메인 로드밸런서가 동작하지 않으면 가상 IP(VIP, Virtual IP)는 여분의 로드밸런서로 변경됨
여분의 로드 밸런서로 운영하게 됨
출처 :