서버가 단 하나만 존재할 때 수천만명의 사람들이 서버에 동시 접속하면 어떻게 될까요?
하나의 서버는 부하를 감당하지 못할 수도 있을 것입니다.
Scale-up
: Server가 더 빠르게 동작하기 위해 하드웨어 성능을 올리는 방법
Scale-out
: 하나의 Server 보다는 여러 대의 Server가 나눠서 일
을 하는 방법--> Scale-up : 장비를 업그레이드
--> scale-out : 장비를 여러개 사용
Scale-out 방식으로 여러 서버
를 둔다면 해당 서비스에 접근하기 위해서는 서버마다 존재하는 다른 IP가 필요
할 것입니다. 서버마다 다른 공인 IP를 부여한다면 사용자들마다 각각 다른 IP로 접속
할 것이고, 개발자가 원하는 방식대로 부하를 분산하기 어려워
집니다.
예를 들어 100명의 사용자가 존재하고 2대의 서버가 있다면 99명의 사용자가 서버 1에 접속하고 1명의 사용자가 서버 2에 접속할 수도 있는 것이니까요.
서버 한대 추가 비용이 더 적다.
여러 대의 Server
덕분에 무중단 서비스
를 제공할 수 있다.-> Scale-out에 추가적으로여러 대의 Server에게 균등하게 Traffic을 분산
시켜주는 역할을 하는 것이 Load Balancer
이를 방지하기 위해 서버를 분산
하고 가해지는 부하를 적절하게 분산
하는 작업이 필요합니다.
개발자가 의도한 대로 부하가 서버마다 골고루 분산되어야 각 서버가 적절하게 부하를 담당할 수 있을 것입니다.
두 개 이상의 컴퓨터 자원에 작업을 나누는 것
트래픽이 많을 때 여러 대의 서버가 분산처리
하여 서버의 로드율 증가, 부하량, 속도저하 등을 고려하여 적절히 분산처리하여 해결해주는 서비스부하(load)를 해결
하기 위해 둘 이상의 CPU or 저장장치와 같은 컴퓨터 자원들에게 작업을 나누는 것
분산식 웹 서비스
로, 여러 서버에 부하(Load)를 나누어주는 역할
을 한다. Load Balancer
를 클라이언트와 서버 사이
에 두고, 부하가 일어나지 않도록 여러 서버에 분산
시켜주는 방식이다. 웹 서버의 부하를 해결
할 수 있다.-작업을 담당하는 장비
로드밸런서는 OSI 7계층을 기준
으로 어떻게 부하를 분산하는지에 따라 종류
가 나뉩니다.
2 계층을 기준으로 부하를 분산한다면 L2,
3 계층을 기준으로 부하를 분산한다면 L3인 방식입니다.
상위 계층
으로 갈수록 섬세한 부하 분산이 가능
하지만 가격이 비싸
집니다.
하위 계층
으로 갈수록 간단한 부하 분산이 가능
하고 가격이 저렴
해집니다.
Mac주소
를 바탕으로 Load Balancing합니다.IP주소
를 바탕으로 Load Balancing합니다.Port
를 바탕으로 Load Balancing을 합니다.TCP, UDP
요청(URL)
을 바탕으로 Load Balancing을 합니다.HTTP, HTTPS, FTP
로드밸런서는 3가지의 주요 기능을 통해 로드밸런싱을 진행합니다.
사설 IP 주소를 공인 IP 주소로
바꾸는 데 사용하는 통신망의 주소 변조기입니다.Private IP -> Public IP
눈에 보이지 않는 통로
를 만들어 통신할 수 있게 하는 개념데이터를 캡슐화
해서 연결된 상호 간에만 캡슐화된 패킷을 구별해 캡슐화를 해제
할 수 있습니다.클라이언트의 IP로 응답
목적지 주소
를 스위치의 IP 주소가 아닌 클라이언트의 IP 주소로 전달
해서 네트워크 스위치를 거치지 않고 바로 클라이언트를 찾아가는 개념
입니다.기초적인 방법인 Bridge/Transparent Mode
에서는 사용자가 서버에 서비스를 요청할 때 중간에서 로드밸런서가 NAT
를 통해 IP/MAC주소를 변조
합니다.
즉 요청과 응답이 모두 Load Balancer를 경유
합니다.
클라이언트의 IP 주소를 식별
하는 데 도움을 줍니다.프로토콜(HTTP 또는 HTTPS)을 식별
하는 데 도움을 줍니다.포트를 식별
하는 데 도움을 줍니다.Round Robin방식으로 분배
하지만 가중치
에 따라 요청을 더 분배하기도, 덜 분배하기도 합니다. 연결 개수가 가장 적은 서버 선택
Least Connection방식으로 분배
하지만 가중치
에 따라 요청을 더 분배하기도, 덜 분배하기도 합니다. 서버들의 사양이 일관적이지 않고 다양한 경우
이 방법이 효과적입니다.응답 시간이 가장 빠른 서버로 요청을 분배
하는 방식입니다.IP를 해싱
한 후 그 결과에 따라 서버로 요청을 분배
합니다. IP는 고정
되어 있기 때문에 항상 같은 서버로 연결된다는 보장
을 받을 수 있습니다.로드 밸런서를 Active/Passive로 이중화하여 대비
한다.이중화된 Load Balancer
들은 서로 Health Check
를 합니다.가상IP(VIP, Virtual IP)
는 여분의 Load Balancer로 변경
됩니다.여분의 Load Balancer로 운영
하게 됩니다.로드밸런서는 서버의 부하를 분산시켜주는 시스템입니다. 크게 L4로드밸런서와, L7로드밸런서가 있는데요, L4 로드밸런서는 4계층 이하의 정보를 가지고 로드를 분산해줍니다. 특히 MAC주소, IP주소, 포트정보를 가지고 트래픽을 분산해주고요, L7 로드 밸런서는 응용계층의 정보를 가지고 로드 분산을 해줘요. 패킷 내용을 확인하고 분산해서 DDOS같은 비정상적인 트래픽도 필터링할 수 있습니다.
[출처]