2020. 9. 2. 18:50ㆍAWS/Practitioner
1. 로드 밸런싱 (Load Balancing)
1) 로드 밸런싱
네트워크 기술의 일종으로 네트워크 트래픽을 하나 이상의 서버나 장비로 분산하기 위해 사용되는 기술이다. 일반적인 웹 트래픽 증가에 대한 처리방식은 두가지가 존재한다.
처리 방식 | 설명 |
Scale-Up을 통해 CPU, 메모리, 디스크 등의 기능을 업그레이드 하는 방식 | 성능을 높이는 방법으로 비용이 증가한다는 단점과 하나의 서버에서 웹 서비스를 제공하기에 서버 중지 및 장애로 인한 웹 서비스 가용성에 문자가 발생한다. |
Scale-Out을 통해 저렴한 노드 여러 개를 하나의 Cluster로 구성하는 방식 | Cluster로 구성하는 경우 Cluster 내 하나의 노드에 문제가 발생하여도 웹 서비스가 중단되지 않기에 가용성이 높은 웹 서비스를 구성할 수 있다. 로드 밸런싱은 Scale-Out 방식의 웹 서비스 구성에 주로 사용되고 트래픽을 서비스의 포트 단위로 제어하고 분산처리한다. |
2) 분산 처리 방식
처리 방식 | 설명 |
Round Robin | Real 서버로의 Session 연결을 순차적으로 맺어주는 방식이다. 연결되어 있는 Session 수에 상관없이 순차적으로 연결시키는 방식이기에 Session에 대한 보장을 제공하지 않는다. |
Hash | Hash 알고리즘을 이용한 로드 밸런싱 방식이다. 클라이언트와 서버간에 연결된 Session을 계속 유지해주는 방식으로 클라이언트가 특정 서버로 연결된 이후 동일 서버로만 연결되는 구조로 Session에 대한 보장을 제공한다. |
Least Connection | Session 수를 고려하여 가장 작은 Session을 보유하는 서버로 Session을 맺어주는 연결 방식이다. Session에 대한 보장을 제공하지 않는다. |
Response Time | 서버 간의 Resouce와 Connection의 차이가 있는 환경에서 사용되는 방식으로 응답시간을 고려하여 빠른 응답시간을 제공하는 서버로 Session을 맺어주는 방식이다. Session에 대한 보장을 제공하지 않는다. |
2. Amazon Elastic Load Balancing
1) ELB
단일 가용 영역 또는 여러 가용 영역에서 EC2 인스턴스 및 컨테이너, IP 주소 같은 동일한 서비스를 제공하기 위해 준비된 여러 대상으로 애플리케이션 및 네트워크 트래픽을 자동으로 분산시킨다. ELB는 서비스 목적에 따라 3가지 로드 밸런서 중 하나의 서비스를 선택하여 사용할 수 있고, 이를 통해 애플리케이션의 내결함성 보장을 위해 필요한 고가용성, 부하분산, 자동 확대/축소, 강력한 보안 기능을 제공한다.
수신되는 트래픽을 여러 EC2에 자동으로 배포하고 애플리케이션의 내결함성을 확보하면서 네트워크 트래픽을 원활하게 대상으로 자동 분산 처리하는 기능을 제공한다. Application Load Balancer, Network Load Balancer, Classic Load Balancer 등 세가지 유형의 로드 밸런서를 제공한다.
1년간 무료로 이용가능한 프리티어로는 클래식 및 애플리케이션 로드 밸런서 간에 공유되는 탄력적 로드 밸런서 750시간을 제공하고 클래식 로드 밸런서 15GB, 애플리케이션 로드 밸런서 15GB를 제공한다.
구분 | 내용 | 적합 서비스 |
Application Load Balancer |
- OSI 7계층에서 작동하며 HTTP, HTTPS 고급 로드 밸런싱 서비스에 적합하다. - 마이크로 서비스 및 컨테이너 기반 애플리케이션, 최신 애플리케이션 서비스에 최적화된 로드 밸런싱을 제공하고 SSL/TLS 암호화 및 프로토콜 사용하여 보안성을 보장한다. |
HTTP/HTTPS 서비스 |
Network Load Balancer |
- OSI 4계층에서 작동하며, TCP 트래픽의 로드 밸런싱 서비스에 적합하다. - 짧은 지연 시간과 초당 수백만 개의 요청 처리가 가능하며, 가용 영역당 1개의 정적 주소를 사용하면서 트래픽의 변동이 심한 서비스에 최적화한다. |
TCP 트래픽 로드 밸런싱 및 짧은 지연 시간 |
Classic Load Balancer |
- OSI 4계층, 3계층에서 작동한다. - EC2-Classic 네트워크 내에 구축된 애플리케이션을 대상으로 제공한다. |
EC2-Classic 네트워크 구축된 애플리케이션 |
ELB 생성이 로드 밸런싱 서비스를 인터넷에 연결할 것인지 아닌지에 따라 Internet Facing 여부를 선택하게 된다.
항목 | External ELB |
Internal ELB |
인터넷 연결 | 연결 가능 | 연결 불가 |
사용 가능 IP | Public, Private IP | Private IP |
접속 가능 영역 | 인터넷, VPC 내부 | VPC 내부 |
2) 상태 확인 서비스 (Health Check)
ELB와 연결된 인스턴스의 연결 상태를 수시로 체크하여 인스턴스의 OS나 애플리케이션의 문제로 인해 연결 장애나 서비스 가능 여부에 대한 Health Check을 지속적으로 수행한다. 상태가 비정상일 경우 트래픽을 전달하지 않는다. HTTP/HTTPS 상태 확인 빈도, 실패 임계치, 성공 시 응답 코드를 임의 설정 가능하며, 자세한 상태 확인과 실패 원인은 API를 통해 확인은 물론 AWS 콘솔에도 표시된다. TCP 방식으로 Health Check할 경우 포트의 오픈 여부 및 연결 가능 여부를 확인하고 HTTP/HTTPS 방식은 특정 웹 페이지의 접속 시도에 따른 응답코드(200)가 정상 반환 여부를 확인하여 Health Check 성공/실패 여부를 판단한다.
3) Sticky Session
기본적으로 ELB는 Round Robin 방식으로 트래픽을 분산한다. 그렇기 때문에 한번 연결된 Session은 다음 연결 시 그대로 연결이 되지 않고 다음 번 연결 시 다른 인스턴스로 연결될 수 있기에 애플리케이션의 Session을 유지할 수 없다. 따라서 Stick Session을 사용하면 처음 연결된 클라이언트에 별도로 HTTP 기반의 쿠키 값을 생성하여 다음번 연결 요청에 처음 접속했던 서버로 계속 연결하도록 트래픽을 처리한다.
4) 고가용성 구성
ELB는 단일 가용 영역에 있는 여러 대상(EC2 인스턴스, 컨테이너, IP)에 걸쳐 트래픽을 자동 분산한다. 특히 Route 53의 다른 서비스와의 연계를 통해 가용성 서비스를 제공할 수 있다.
5) SSL Termination 및 보안 기능
SSL 인증서를 적용하여 HTTPS 방식으로 암호화 통신을 하기 위해서 개별 웹 서버에 별도의 공인인증서를 구매 후 적용해야한다. 직접 인스턴스에 적용할 경우, 인증서 만료에 따른 갱신과 같은 관리가 필요하다. 또한 암호화 및 복호화 처리를 위한 추가 부하가 발생된다. 하지만 ELB의 SSL Termination 기능을 사용하면 SSL 인증서를 직접 인스턴스에 설치할 필요가 없고 공인인증서 또는 ACM에서 무료로 발급받을 수 있는 사설 인증서를 등록함으로 SSL 인증서를 이용한 HTTPS 활용 트래픽 암호화 및 복호화 서비스를 제공할 수 있다.
ACM(Amazon Certificate Manager)을 사용하는 경우 추가적인 인증서 발급 비용은 무료이고 별도의 인증서 관리가 필요없다. 그리고 인스턴스의 암호화 및 복호화 부하를 줄일 수 있다.
[참고] 아마존 웹 서비스 AWS Discovery Book
[참고] AWS - Practice - Practitioner ELB
'AWS > Practitioner' 카테고리의 다른 글
[Practitioner] CDN 서비스 (0) | 2020.09.03 |
---|---|
[Practitioner] 가용성 확장 인프라 (0) | 2020.09.03 |
[Practitioner] DNS 연결 및 관리 (0) | 2020.09.02 |
[Practitioner] 확장형 데이터베이스 서버 생성 (0) | 2020.09.02 |