-SLB란?
Server Load Balancer(SLB)는 Application의 서비스 기능을 개선하기 위해, 여러 인스턴스 간에 트래픽을 분산하는 ‘트래픽 분산 및 제어 서비스’이다.
SLB를 사용하여 SPOF(Single Point of Failure)를 방지하고 Application의 가용성과 내결함성 기능을 향상시킬 수 있다.
Cf.
여기서 말하는 가용성이란, 시스템 관리자의 개입 없이 시스템의 가동 중지를 최소화시키는 것을 의미한다.
내결함성이란, 시스템에 장애가 발생하여도 시스템이 계속 작동할 수 있도록 하는 것을 의미한다.
SLB 동작 방식
SLB는 크게 Instance, Listener 그리고 Back-end Server로 구성되며, 알리바바 클라우드 SLB는 서비스 요구사항에 맞게 지정된 정책에 따라 back-end서버의 수를 늘리거나 줄일 수 있으며, 기존 H/W에 비해 보다 저렴한 요금으로 사용할 수 있다.
알리바바 클라우드 보안 서비스와 결합하여 사용할 경우, HTTP flood, ICMP flood, DDoS공격 방어 등 여러 외부의 공격으로부터 안전하게 서비스를 사용할 수 있다.
-Type of SLB
알리바바클라우드 SLB는 현재 Classic Load Balancer(CLB)와 Application Load Balancer(ALB), 2가지 타입의 Load Balancer를 제공하고 있다.
- Classic Load Balancer(CLB)
CLB는 Layer 4(TCP/UDP) 계층에서 부하 분산을 제공하는 서비스로, 애플리케이션 포트 및 프로토콜과 같은 네트워크 정보에 대한 가시성을 갖는다.
알리바바클라우드 VPC(Virtual Private Cloud)에 위치하며, 사용자의 요청을 VPC내의 리소스에 부하 분산한다.
CLB는 크게 Instance, Listeners 그리고 Back-end Servers로 구성된다.
CLB Instance의 경우, 알리바바클라우드 내부로 들어오는 트래픽을 Back-end서버에 분산시키는 역할을 하며, 최소 하나의 Listener와 두 개 이상의 ECS Instances와 함께 구성된다.
이렇게 CLB Instance에 연결된 Listener는 클라이언트로부터 들어오는 요청을 확인하고, 지정(구성)된 규칙에 따라 Back-end 서버로 요청을 전달하는 역할을 하게 되는데 ‘규칙’에 대해서는 뒤에 언급된다.
Instance와 Listener를 거쳐 최종적으로Back-end서버에 요청이 들어오게 되는데, 이 Back-end서버는 두 개 이상의ECS인스턴스이며, 서버 그룹을 생성하여 관리할 수도 있다.
CLB 동작 방식
이렇게 구성된 CLB는 SPOF를 방지하고 애플리케이션 로드에 따라 확장될 수 있으며, 트래픽 변동 시 지속적인 서비스를 제공하여 고가용성을 보장한다.
또한 Back-end서버의 수를 늘리거나 줄여 애플리케이션의 부하 분산 기능을 조정할 수 있어 확장성 또한 매우 뛰어나다고 할 수 있다.
- Application Load Balancer(ALB)
다음은 Layer 7 (Application) 에서 부하 분산 서비스를 제공하는 ALB서비스 이다.
ALB는 HTTP, HTTPS 및 QUIC(Quick UDP Internet Connection)프로토콜을 지원하며, 애플리케이션을 인식하고 정보를 사용하여 보다 정확한 로드밸런싱을 제공한다.
ALB도 CLB와 마찬가지로 Instance와 Listener 그리고 Back-end에 있는 Server Groups으로 구성이 되는데, 서버 그룹이라고 하는 논리적인 그룹에 하나 이상의 Back-end서버 또는 최대 1,000대의 서버를 지정하여 ALB의 Back-end서버로 지정할 수 있다.
이러한 서버 그룹은 ALB와 독립적이며, 서버 그룹을 다른 ALB인스턴스와 연결하는 것 또한 가능하다.
ALB 동작 방식
알리바바클라우드 ALB는 두 개의 가용 영역(Availability Zone)에 ALB인스턴스 배포가 가능한데, Dynamic IP Mode를 통하여 비즈니스가 확장될수록 더 많은 IP주소를 자동으로 할당하여 탄력성 및 고가용성을 확보할 수 있다.
–알리바바 클라우드 SLB 특징
- Forwarding Rules
알리바바클라우드 SLB는 다양한 라우팅 기능을 제공한다.
CLB의 경우 크게 3가지의 라우팅 기능을 제공하는데 Round-Robin(RR), Weighted Round-Robin(WRR) 그리고 Consistent Hash(CH)기반의 라우팅 기능을 제공한다.
Round-Robin 동작 방식
먼저 가장 보편적이며 기본적인 라우팅 방식인 Round-Robin의 경우, 클라이언트의 요청을 순차적으로 Back-end서버 그룹에 배포하는 라우팅 방식이다. Back-end서버의 가중치 또는 기타 사항을 배제한 체 들어오는 요청들을 차례대로 Back-end서버에 전달함으로써 하나의 서버에 트래픽이 집중되지 않고, 모든 서버에 트래픽이 고루 분산될 수 있다는 장점이 있다.
Weighted Round-Robin방식은 가중치 기반 분산 방식이다. 지정된 Back-end 서버 가중치 값에 따라 요청을 분산하며, 가중치 값이 높을수록 서버에 할당되는 요청 비율이 커지게 된다.
그 외에도 Back-end서버 수의 변경에 여부에 상관없이, hash값에 따라 Back-end서버에 트래픽을 균등하게 분산하는 Consistent Hash방식 또한 제공하고 있어, 다양한 워크로드에 따라 상황에 맞는 라우팅 기능을 통해 효과적으로 서버를 운영할 수 있다.
ALB는 기본 라우팅 기능 외에도 다양한 라우팅 방식을 지원한다.
도메인 또는 URL기반 그리고 header값을 기준으로 라우팅 할 수 있으며, Standard버전에서는 cookie, HTTP methods, 쿼리 문자열 기반 등 더 세분화된 라우팅 방법으로 트래픽을 전달할 수 있다.
- Health Check
알리바바클라우드 SLB에서는 서버의 서비스 가능 여부를 확인하기 위해 Health Check라는 기능을 제공하고 있다.
SLB의 Health Check기능을 활성화하면 SLB는 Back-end단의 ECS인스턴스의 상태를 지속적으로 확인한다.
Layer 7 Health Check 동작 방식
Layer 4(TCP/UDP) Health Check 동작 방식
서버는 Health Check 설정에 따라 HTTP head요청을 상태 확인 경로로 보내고, 요청을 받은 Back-end서버는 실행 상태에 따라 HTTP상태 코드를 반환하게 된다. 만약 서버가 지정된 시간 내에 Back-end서버로부터 응답을 받지 못한다면, SLB는 비정상으로 발견된 인스턴스에 배포를 중지하고 정상적으로 동작하는 인스턴스에 대한 요청만 전달하게 된다.
이렇게 SLB의 Health Check기능을 사용하여 Front-end서비스의 전반적인 가용성을 개선하고, Back-end단의 장애로 인한 서비스 영향을 최소화 할 수 있습니다.
- Session Persistence
알리바바클라우드 SLB는 Session Persistence라고 하는 고정 세션 옵션을 사용하여 쿠키 또는 세션을 활용해 Client로부터 들어오는 요청을 항상 같은 인스턴스로 라우팅 시킬 수 있다.
Session Persistence 적용 예시
즉, A서버에 접속한 이력이 있는 Bob이라는 사용자가 다시 접속을 시도할 경우, 기존에 접속된 A서버로 계속해서 접속될 수 있도록 트래픽을 처리하는 방식이다.
세션 관리 방법에는 Session Clustering이란 방법도 존재하지만, 간단한 인프라에선 굳이 Session Clustering을 사용하지 않고 손쉽게 클릭 한번으로 세션을 고정시킬 수 있다.
(Session Clustering방법에 관해서는 이후 포스팅에서 소개 예정)
이처럼 알리바바클라우드 SLB에서는 Session Persistence기능을 통해 간편하게 세션 유지가 가능하며, 이를 통하여 손쉽게 서비스의 품질을 향상시킬 수 있다.
–영역 재해 복구
알리바바클라우드 SLB를 통해 다중 영역(Multi-Zone) DR(disaster recovery)을 구성하여 보다 안정적으로 서비스를 제공할 수 있다.
(Multi)Zone Disaster Recovery 구성도
한 개의 가용 영역에 두 대의 SLB인스턴스를 배포하여, 기본 영역에 장애가 발생하거나 사용할 수 없게 되면, SLB인스턴스는 약 30초 내에 보조 영역으로 자동 fail-over된다.
또한 같은 리전 내의 다른 가용 영역에 인스턴스를 배포하여, 장애로부터 보다 안정적이게 서비스를 제공하는 것 역시 가능하다.
–지역 재해 복구
영역(Zone)이 아닌 지역(Region)간의 재해 복구 역시 가능하다.
서로 다른 리전에 SLB인스턴스를 배포한 뒤 DNS(Domain Name Service)를 사용한 글로벌 로드밸런싱을 통해, 한 개의 지역(Zone)에 장애가 생기더라도 사용자의 접속에 문제가 없도록 구성하여 더 높은 안정성으로 서비스를 제공할 수 있다.
Geo Disaster Recovery 구성도