서버 증설
현재 쓰고 있는 서버가 모든 트래픽을 감당하지 못할 경우 서버를 증설해야 한다.
Scale Up
서버의 성능을 올리는 것
특징
- CPU, RAM 추가, Disk 증설 등 고사양의 부품으로 교체하거나 서버 자체를 고사양으로 변경한다.
장점
- 집중 방식으로 구성해야하거나 분할 처리가 어려운 경우
- 데이터베이스 서버에 적용
단점
- Scale Out에 비해 비용이 많이 들고 확장에 한계가 있다.
- 장애 발생 시에 영향이 크다.
- 확장을 위한 다운타임이 발생한다.
Scale Out
새로운 서버를 추가하는 것
특징
- 분산처리, 병렬처리 방식
- 기존 서버와 동일하거나 낮은 성능의 서버를 증설해서 운영한다.
- 여러 대의 서버로 트래픽을 균등하게 분산해주는 로드밸런싱이 반드시 필요하다.
장점
- Scale Up 방식에 비해 저렴하고 지속적인 확장이 가능하다.
- 일부 서버가 고장났을 때 다른 서버로 요청을 돌려서 안정적으로 사용할 수 있다.
- 무중단 서비스 제공 가능
단점
- 비용이 서버 대수마다 부과되면 비용이 더 비싸질 수도 있다.
Load Balancer
서버 여러 대를 사용할 때 서버의 로드율, 부하량, 속도저하 등을 고려하여 트래픽을 분산 처리 해주는 장치
특징
- 클라이언트와 서버 그룹 사이에 위치한다.
- 한 대의 서버로 부하가 집중되지 않도록 트래픽을 관리해서 각 서버가 최적의 퍼포먼스를 낼 수 있도록 한다.
- 장애 대비
- Load Balancer를 이중화해서 서로 Health Check를 한다.
- Main Load Balancer가 동작하지 않으면 가상 IP는 여분의 Load Balancer로 변경하고 이 로드 밸런서를 운영한다.
주요 기능
- NAT(Network Address Translation)
- 통신망의 주소 변조기
- public IP ↔ private IP
- Tunneling
- 인터넷상에서 눈에 보이지 않는 통로를 만들어서 통신할 수 있게 해준다.
- 데이터를 캡슐화해서 연결된 상호 간에만 캡슐화된 패킷을 구별해 캡슐화를 해제할 수 있다.
- DSR(Dynamic Source Routing protocol)
- 서버에서 클라이언트로 되돌아갈 때 목적지 주소를 네트워크 스위치의 IP 주소가 아닌 클라이언트의 IP 주소로 변경해서 스위치를 거치지 않고 바로 클라이언트를 찾아갈 수 있게 해준다.
서버 선택 알고리즘
- Round Robin
- 요청을 순서대로 돌아가며 배정한다.
- 여러 대의 서버가 동일한 스펙을 가지고, 서버와의 연결(세션)이 오래 지속되지 않는 경우
- 가중 Round Robin
- 각 서버마다 가중치를 매기고 높은 가중치의 서버에 요청을 우선적으로 배분한다.
- 서버의 트래픽 능력이 상이한 경우
- IP Hashing
- 클라이언트(Source)의 IP 주소를 특정 서버로 매핑한다.
- 사용자가 항상 같은 서버로 연결되는 것을 보장한다.
- Least Connection
- 요청이 들어온 시점에 연결 개수가 가장 적은 서버에 우선 트래픽을 배분한다.
- 트래픽으로 인해 세션이 길어지거나 서버에 분배된 트래픽이 일정하지 않은 경우 권장한다.
- Least Response Time
- 서버의 현재 연결 상태와 응답 시간(요청 보내고 최초 응답을 받을 때까지 소요되는 시간)을 모두 고려하여 트래픽을 분배한다.
- 가장 적은 연결 상태와 가장 짧은 응답시간을 보이는 서버에 우선 배분한다.
종류
- OSI 7 layer 계층 중에서 어느 계층에서 분산 처리를 하느냐에 따라 종류가 나뉜다.
- 한 대의 서버에 각각 다른 포트 번호를 부여해서 운영하는 경우 최소 L4 로드밸런서 이상을 사용해야 한다.
- 상위 계층에서 사용되는 장비는 하위 계층의 장비가 갖고 있는 기능을 모두 가지고 있다.
- 상위 계층으로 갈수록 더욱 정교한 로드 밸런싱이 가능하다.
L4 Load Balancer
특징
- 4계층인 transport layer에서 로드밸런싱을 한다.
- Transport layer(TCP, UDP, port 번호), Network layer(IP, IPX), Link layer(MAC address)에 따라 트래픽을 분산한다.
장점
- 속도 빠르고 효율이 좋음
- 데이터를 들여다보지 않고도 패킷 레벨에서만 분산한다.
- 안전성
- 저렴한 가격
단점
- 패킷의 내용을 보지 못하기 때문에 섬세한 라우팅이 불가능하다.
- 사용자의 IP가 수시로 바뀐다면 연속적인 서비스를 제공하기 어렵다.
L7 Load Balancer
특징
- 7계층인 application layer에서 로드밸런싱을 한다.
- TCP/UDP 정보는 물론 Application layer(HTTP, FTP, SMTP)에서 HTTP 헤더, HTTP URI, 쿠키 정보, FTP의 파일명을 기준으로 로드를 분산한다.
장점
- 상위 계층에서 로드를 분산하기 때문에 훨씬 더 섬세한 라우팅이 가능하다.
- 패킷의 내용을 확인하고 내용에 따라 특정 서버에 분배 가능
- 클라이언트의 요청을 보다 세분화해서 서버에 전달할 수 있다.
- 캐싱 기능 제공
- 보안
- 특정 패턴을 지닌 바이러스를 감지해서 네트워크를 보호할 수 있다.
- DoS/DDoS와 같은 비정상적인 트래픽을 필터링할 수 있다.
단점
- 더 높은 비용
- 클라이언트가 로드밸런서와 인증서를 공유해야 한다.
- 공격자가 로드밸런서를 통해서 클라이언트 데이터에 접근할 수 있다.
출처