728x90
반응형
왜 Load Balancer가 필요할까?
- Server는 여유롭게 사용자가 원하는 결과를 응답 해줄 수 있다.
But Client가 한 두명이 아닌 수천만명이라면?
- Server는 모든 사람들의 응답을 해주려고 노력하지만 결국엔 지치게 되어 멈추게 되어있다.
문제를 해결하기 위해선?
- Scale-up : Server가 더 빠르게 동작하기 위해 하드웨어 성능을 올리는 방법.
- Scale-out : 하나의 Server보다는 여러 대의 Server가 나눠서 일을 하는 방법.
Scale-out의 장점은?
-
하드웨어 향상하는 비용보다 서버 한대 추가 비용이 더 적다.
-
여러 대의 Server 덕분에 무중단 서비스를 제공할 수 있다.
여러 대의 Server에게 균등하게 Traffic을 분산시켜주는 역할을 하는것을 LoadBalancer입니다.
Load Balancing이란?
- 하나의 인터넷 서비스가 발생하는 트래픽이 많을 때 여러 대의 서버가 분산처리하여 서버의 로드율 증가, 부하량, 속도 저하 등을 고려하여 적절히 분산처리하여 해결해주는 서비스
주요 기능은 어떤게 있을까?
- NAT(Network Address Translation)
- 사설 IP 주소를 공인 IP주소로 바꾸는 데 사용하는 통신망의 주소 변조기 - Tunneling
- 인터넷상에서 눈에 보이지 않는 통로를 만들어 통신할 수 있게 하는 개념
- 데이터를 캡슐화해서 연결된 상호 간에만 캡슐화된 패킷을 구별해 캡슐화를 해제할 수 있다. - DSR(Dynamic Source Routing protocol)
- 로드밸런서 사용 시 서버에서 클라이언트로 되돌아가는 경우, 목적지 주소를 스위치의 IP 주소가 아닌 클라이언트의 IP주소로 전달해서 네트워크 스위치를 거치지 않고 바로 클라이언트를 찾아가는 개념
Architecture
종류는 어떤 것이 있나?
L2
- Mac주소를 바탕으로 Load Balancing한다.
L3
- IP주소를 바탕으로 Load Balancing한다.
L4
- Transport Layer(IP와 Port) Level에서 Load Balancing을 한다.
- TCP, UDP
L7
- Application Layer(사용자의 Request)Level에서 Load Balancing을 한다.
- HTTP, HTTPS, FTP
HTTP
- X-Forwarded-For
- HTTP 또는 HTTPS로드 밸런서를 사용할 때 클라이언트의 IP 주소를 식별하는 데 도움을 준다. - X-Forwarded-Proto
- 클라이언트가 로드 밸런서 연결에 사용한 프로토콜(HTTP 또는 HTTPS)을 식별하는 데 도움을 준다. - X-Forwarded-Port
- 클라이언트가 로드 밸런서 연결에 사용한 포트를 식별하는 데 도움을 준다.
Load Balancer는 어떤 기준으로 Server를 선택할까?
- Round Robin
-단순힌 Round Robin으로 분산하는 방식 - Least Connections
- 연결 개수가 가장 적은 서버를 선택하는 방식
- 트래픽으로 인해 세션이 길어지는 경우 권장하는 방식 - Source
- 사용자의 IP를 Hashing하여 분배하는 방식
- 사용자는 항상 같은 서버로 연결되는 것을 보장
Load Balancer 장애 대비는 어떻게 하느냐?
- Load Balancer를 이중화하여 장애를 대비
장애가 났을 경우 시나리오
- 이중화된 Load Balancer들은 서로 Health Check를 한다.
- Main Load Balancer가 동작하지 않으면 가상 IP(VIP, Virtual IP)는 여분의 Load Balancer로 변경된다.
- 여분의 Load Balancer로 운영하게 된다.
Reference
- https://www.digitalocean.com/community/tutorials/what-is-load-balancing#how-does-the-load-balancer-choose-the-backend-server
- http://oxpedia.org/wiki/index.php?title=AppSuite:Grizzly
- https://docs.aws.amazon.com/ko_kr/elasticloadbalancing/latest/classic/x-forwarded-headers.html
- http://tech.kakao.com/2014/05/30/l4/
- https://d2.naver.com/helloworld/284659
- https://seokjun.kim/haproxy-and-nginx-load-balancing/
728x90
반응형
'Study > Server' 카테고리의 다른 글
[ AWS ][ 서버 구축하기 ] 맥 터미널에서 EC2 인스턴스 접속하기 (feat. pem 파일) 🖥 (0) | 2024.10.18 |
---|---|
[Server] JWT(Json Web Token)란 (0) | 2022.04.05 |
댓글