2025.11.14 - [퍼블릭 클라우드(AWS)] - [AWS] CloudFormation - 인프라 구성 자동화
[AWS] CloudFormation - 인프라 구성 자동화
* CloudFormation이란 무엇인가CloudFormation은 IaC(Infrastructure as Code) 기반으로 AWS 인프라 리소스를 자동으로 생성하는 서비스이다. VPC, EC2 등 리소스를 수동으로 생성할 필요 없이 리소스들을 템플릿(코
djjin02.tistory.com
위 실습에서 구성한 기본 환경을 바탕으로 이어서 진행했다.
* Amazon ELB(Elastic Load Balancing)란 무엇인가
로드 밸런싱(부하분산)은 서버가 클라이언트 요청을 받아 처리하는 과정에서 발생하는 부하에 대해 동일한 목적을 수행하는 다수의 서버에 분산처리하는 기능이다.
로드밸런싱을 사용하면 고가용성 및 내결함성이 향상되어 장애가 발생할 때 유연하게 대처할 수 있고, 서비스를 안정적으로 유지할 수 있어 클라우드를 구성할 때 반드시 사용해야 하는 기술이다.
AWS에서 제공하는 로드밸런싱 기술인 ELB는 EC2 인스턴스에서 운영 중인 애플리케이션, 마이크로 서비스, 컨테이너 서비스로 유입되는 트래픽을 자동 분산 처리하는 기술이다.
ELB는 여러 가용 영역에서 작동하여 애플리케이션 가용성을 향상하고, HTTP, HTTPS, TCP, SSL 등 다양한 프로토콜을 지원하며, 사용자가 같은 인스턴스에서 세션을 유지할 수 있도록 지원한다.
또한 AWS 오토 스케일링 기능과 결합해서 트래픽이 증가할 때 자동으로 인스턴스를 추가하거나 제거하면서 애플리케이션 가용성을 유지한다.
ELB 구성 요소

- 로드 밸런서
- 여러 대의 EC2 인스턴스, IP 주소, 등을 사용하여 트래픽을 대상 그룹에 있는 인스턴스로 분산시켜 애플리케이션의 가용성을 유지하는 역할
- 대상그룹
- 로드 밸런서에서 분산할 대상의 집합을 정의
- 로드밸런서는 대상 그룹에 포함된 대상들의 상태를 정기적으로 확인하여 장애 발생 대상을 제외
- 정상적으로 동작하는 대상에만 요청을 전달한다.
- 리스너
- 로드 밸런서에서 사용할 포트와 프로토콜을 설정
- 로드밸런서에서 클라이언트 요청을 수신하고, 해당 요청을 처리할 대상 그룹을 선택하는 역할
ELB 동작 방식

- 클라이언트 요청 수신
- 로드밸런서에서 클라이언트 요청을 수신한다.
- 로드 밸런서는 클라이언트와 연결을 유지하며, 요청을 수신하려고 리스너를 등록한다.
- 대상 그룹 선택
- 수신한 클라이언트 요청을 처리할 대상 그룹을 선택한다
- 대상 그룹은 인스턴스, IP 주소, ALB 등 여러 유형의 대상으로 구성된다.
- 트래픽 분산
- 선택된 대상 그룹에서 요청을 처리할 대상을 선택하고, 해당 대상으로 요청을 분산한다.
- 이때 로드밸런서는 각 대상의 가용성 상태를 모니터링하고 가용하지 않은 대상을 제외한다.
- 응답 반환: 분산된 요청을 대상에서 처리하고 클라이언트에 응답을 반환한다.
ELB 종류

- ALB (Application Load Balancer)
- HTTP/HTTPS 트래픽을 처리하는 데 최적화된 로드 밸런서
- 애플리케이션 계층(Layer 7)에서 작동
- 경로 기반 라우팅 등 유연한 트래픽 분산이 가능
- NLB (Network Load Balancer)
- TCP/UDP 트래픽을 처리하는 데 사용
- 네트워크 계층(Layer 4)에서 작동
- 초고성능과 지연 시간이 매우 중요한 워크로드에 적합
- CLB (Classic Load Balancer)
- 레거시 EC2 인스턴스에 사용
- ALB와 NLB가 나오기 전 세대의 로드 밸런서, 현재는 권장되지 않습니다.
- GWLB (Gateway Load Balancer)
- 방화벽, 침입 탐지 시스템(IDS), 사이버 공격 방지 솔루션과 같은 가상 어플라이언스를 위한 로드 밸런서
- 트래픽을 여러 가상 어플라이언스에 분산시키는 데 특화
* ALB(Application Load Balancer)를 이용한 로드밸런싱
1. 대상 그룹 생성

[EC2] - [로드 밸런싱] - [대상 그룹] - [대상 그룹 생성]


대상 그룹 이름과 VPC를 선택하고 [다음]
사용할 모든 인스턴스를 체크하고 [아래에 보류 중인 것으로 포함]을 눌러서 대상으로 이동시킨다.

요약 확인하고 [대상 그룹 생성]

대상 그룹이 생성된 것을 확인할 수 있다.
대상 그룹이 생성되었으니 로드 밸런서를 생성해야 한다.
2. ALB 로드 밸런서 생성

[로드 밸런서 생성]


로드밸런서 유형 'Application Load Balancer'(ALB)를 선택하고,
로드밸런서 이름과 VPC를 지정한다.


선택한 VPC에서 사용할 가용 영역을 모두 체크하고,
보안 그룹은 기존 디폴트를 제거한 후 elb를 선택한다.
리스너는 HTTP:80 기본값으로 두고,
라우팅 액션에서 대상그룹은 위에서 생성한 대상 그룹을 선택하고 [로드 밸런서 생성]

ALB 로드밸런서가 생성된 것을 확인할 수 있다.
3. 로드 밸런싱 동작 확인
HTTP 클라이언트 입장인 EC2 인스턴스에서 HTTP 서버 입장인 SERVER 1, 2, 3 인스턴스로 접근할 때,
각각의 인스턴스로 직접 HTTP 접근을 하지 않고 ALB 도메인 주소로 접근한다.
이때 위에서 정의한 로드밸런서의 리스너 정책(HTTP에 대해 대상 그룹으로 전달하는 규칙)에 따라 생성된 ALB를 이용하여 각 서버로 로드 밸런싱 된다.

ALB 로드밸런서의 DNS를 확인한다.

클라이언트 서버에 접속하여 ALB 변수에 각각의 ALB DNS 이름을 입력한다.
dig 명령어로 ALB DNS 도메인 주소에 대한 질의를 할 때는 2개의 유동 공인 IP가 출력된다.
이 2개의 공인 IP는 가용 영역당 각각 생성된 ALB의 유동 IP이다.
즉, 사용자가 ALB 도메인 주소로 접속을 시도하면 DNS 질의 결과인 유동 공인 IP로 번갈아가며 접속하게 된다.

반복문으로 curl 접속 테스트를 진행한다.
ALB 도메인 주소로 접속을 시도하면 3대의 웹서버가 대상 그룹으로 거의 33% 비중으로 균등하게 로드밸런싱 되는 것을 확인할 수 있다.
로드밸런싱은 기본적으로 라운드로빈 방식으로 동작하여 각 ALB당 동일한 트래픽을 전달한다.
교차 영역 로드밸런싱 기능 때문에 가용영역을 교차하여 대상 자원에 균등한 로드밸런싱을 제공한다.
ELB 중 ALB는 교차 영역 로드밸런싱이 기본적으로 활성화된 상태로 동작한다.
4. ALB 경로 기반 라우팅 기능 구성


웹에 접근할 때 사용되는 경로가 다를 경우에는 해당 경로를 갖지 않는 서버는 로드밸런싱이 요청한 응답을 오류 메시지로 전달하는 것을 확인할 수 있다.
로드밸런싱은 기본적으로 라운드로빈으로 동작하여 ALB를 생성할 때 동일한 대상 그룹에 묶여 있는 서버에 순차적으로 응답을 요청하기 때문이다.
이 문제를 해결하기 위해 동일한 경로 서비스를 하는 서버를 각 대상 그룹으로 묶고,
ALB의 경로 기반 라우팅 기능을 이용하여 웹에 접근할 때 HTML 경로에 해당하는 그룹으로 접근하는 규칙을 생성하면 된다.
1) 대상 그룹 생성

[대상 그룹 생성]


대상그룹 이름과 VPC를 지정하고,
사용할 인스턴스 SERVER1을 대상으로 등록한 후 [대상 그룹 생성]


마찬가지로 대상그룹 이름과 VPC를 지정하고,
SERVER2, SERVER3을 대상으로 등록한 후 [대상 그룹 생성]

서버 인스턴스가 2개의 대상그룹(SERVER 1 / SERVER 2, 3)으로 분리된 것을 확인한다.
2) 경로 기반 라우팅 설정을 위한 ALB 리스너 규칙 추가

ALB 로드밸런서에서 [리스너 및 규칙] - [규칙 관리] - [규칙 추가]

규칙 이름을 지정하고,
규칙 조건 유형에서 [경로]를 선택하고 값 영역에 /dev/*를 입력한다.(SERVER1 경로)


작업 유형에서 [대상 그룹으로 전달]을 선택하고 위에서 SERVER1로 설정한 대상 그룹을 지정한다.
규칙 우선순위는 임의로 설정하면 된다.

요약 확인하고 [규칙 추가]

/dev/ 경로 규칙을 생성한 방법으로 /mgt 경로 규칙(SERVER2, 3)도 생성하면 된다.
3) 동작 확인

이제 오류 메시지가 나오지 않고, 모든 접근이 규칙에 매칭되어 동작중인 것을 확인할 수 있다.
5. ALB의 User-Agent를 활용한 로드밸런싱 구성
이번에는 ALB 고급 라우팅 기능 중 HTTP 헤더 기반 라우팅을 구성하고 검증할 것이다.
HTTP 헤더 중 User-Agent 필드에는 HTTP 요청을 보내는 클라이언트 프로그램 정보가 포함되어 있다.
실제로 이 정보를 이용하여 서비스를 제공하는 서버는 클라이언트 프로그램에 맞는 최적의 데이터를 보낼 수 있게 된다.
이 정보를 활용하여 스마트폰의 웹 브라우저에서 ALB 도메인 주소로 접근할 때 User-Agent 정보를 확인해 특정 장치의 접근을 차단하는 실습을 진행하였다.
1) HTTP 헤더의 User-Agent를 통해 특정 스마트폰의 접근을 막는 규칙 생성

ALB 로드 밸런서에서 [리스너 및 규칙] - [규칙 관리] - [규칙 추가]

규칙 이름을 지정하고,
규칙 조건 유형에서 [HTTP 헤더]를 선택하고 헤더 이름에 'User-Agent'를 입력한다.
헤더 값으로 'iPhone'과 'Android'를 입력한다.


작업 유형에서 [고정 응답 반환]을 선택하고 응답 본문에 'iPhone or Android Access Deny'를 입력한다.
규칙 우선순위는 임의로 설정하면 된다.

ALB 리스너에 HTTP 헤더의 User-Agent가 'iPhone' 또는 'Android' 값이면 연결을 거부하는 규칙이 추가된 것을 확인할 수 있다.
2) 동작 확인

아이폰 웹 브라우저에서 IP 주소로 접근한 결과, 규칙이 정상적으로 동작하는 것을 확인할 수 있다.
ALB 로드밸런서 실습 끝...
* NLB(Network Load Balancer)를 이용한 로드밸런싱
1. 대상 그룹 생성

대상 그룹 이름, 프로토콜(UDP), 포트(161), VPC 지정

상태 검사 프로토콜(HTTP), 고급 상태 검사 설정에서 상태 검사 포트(재정의, 80) 지정

인스턴스를 대상으로 등록하고 [대상 그룹 생성]
2. NLB 로드밸런서 생성

Network Load Balancer(NLB) 유형 선택


이름, VPC, 가용 영역 지정

보안 그룹(ELB), 리스너 프로토콜(UDP, 161), 위에서 생성한 대상 그룹을 지정하고 [로드밸런서 생성]

NLB 로드밸런서가 생성된 것을 확인할 수 있다.

NLB 로드밸런서의 DNS 이름 확인
3. 로드 밸런싱 동작 확인

NLB DNS 이름을 변수로 지정하고,
dig 명령으로 확인한 공인 IP 주소를 NLB IP 변수에 지정해 준다.

NLB는 ALB와 달리, 교차 영역 로드밸런싱이 기본적으로 비활성화되어 있다.
4. NLB의 교차 영역 로드 밸런싱 활성화

NLB 로드밸런서에서 [속성] - [편집]

[교차 영역 로드 밸런싱 활성화] 체크하고 변경 내용을 저장한다.

앞서 확인한 결과와 다르게 가용 영역을 교차해서 응답하는 것을 확인할 수 있다.
끝...
'퍼블릭 클라우드(AWS)' 카테고리의 다른 글
| [AWS] EFS(Elastic File System) 스토리지 구성 (0) | 2025.11.17 |
|---|---|
| [AWS] EBS(Elastic Block Store) 스토리지 구성 (0) | 2025.11.17 |
| [AWS] CloudFormation - 인프라 구성 자동화 (0) | 2025.11.14 |
| [AWS] VPC(Virtual Private Cloud) - Private Subnet 구성 (0) | 2025.11.12 |
| [AWS] VPC(Virtual Private Cloud) - Public Subnet 구성 (0) | 2025.11.12 |