AWS의 근본은 EC2
오늘 생성할 로드밸런서, 리스너, 대상그룹은 모두 EC2에 있는 서비스입니다.
저번 글에서 Domain을 구입하여 서브 도메인 설정을 하고, 인증서를 구매하여 HTTPS 배포를 위한 준비를 마쳤습니다.
이번 글에서는 로드밸런서와 리스너, 대상그룹을 생성하여 대용량 트래픽에 맞게 분산시켜 배포해볼게요.
로드밸런서, 보안그룹, 대상그룹을 생성해야합니다.
가장 먼저 해야할 것은 대상그룹을 생성하는 일입니다.
대상그룹 생성 후 로드밸런서 연결, 로드밸런서와 서비스 연결 순입니다.
대상그룹 생성
태스크들 또한 private IP로 이루어져 있습니다. 이들과 대상그룹을 매핑해줘야하므로 HTTP로 설정하고, 프로토콜 버전은 가장 호환성이 좋은 HTTP1로 생성할게요.
상태검사 프로토콜. HTTP? HTTPS?
여기서 HTTP와 HTTPS 중에 선택해야합니다.
로드밸런서가 HTTP를 HTTPS로 리다이렉트하고, 로드밸런서가 타겟그룹을 보는 것이므로 HTTPS가 맞을까요? 아니면 HTTP가 맞을까요?
정답..
"정답은 HTTP로 요청하는 게 맞습니다."
Java 파일 내에서 HTTPS 설정을 하지 않았습니다.
우리는 security의 어떤 설정도 없었으며 우리는 저번 글에서 발급한 ACM에서 발급한 인증서를 사용할 거에요.
그러므로 불필요한 SSL/TLS를 또 할 필요가 없기 때문에, HTTP로 요청해야합니다.
여기서 상태검사란 HTTP로 요청을하여 태스크가 살아있는지 확인하는 것이에요.
그 후 대상에 대한 등록은 그대로 생성하면 됩니다.
이제 보안그룹이 생성되었습니다. 이제 로드밸런서를 생성하러갑시다.
로드밸런서와 대상그룹은 ECS Service 생성시에 선택사항에 존재해요.
이제 태스크를 트래픽에 맞게 분산시켜 배포시켜줄 로드밸런서가 필요한 로드밸런서를생성해보겠습니다.
ECS, 보안그룹 등 AWS의 모든 기원은 EC2로부터 시작됩니다.
로드밸런서를 생성해볼게요.
로드밸런서 생성
EC2 > 로드밸런싱 > 로드밸런서
3가지 로드밸런서가 존재합니다.
우리는 API 서버를 배포할 것이므로 Application Load Balancer를 선택합니다.
만약 금융이나 실시간 게임 등 매우 낮은 지연시간이 필요하다면 Network Load Balancer로 할 수 있다고 하네요.
우리는 외부에서 접속했을 때 태스크를 분산처리하기 위함이므로 체계는 인터넷 경계로 선택하면 됩니다.
현재 default VPC의 서브넷의 CIDR을 확인해야해요.
사진과 같이 IPv6의 CIDR이 할당되어 있지 않으므로 IPv4만 선택합니다.
이제 매핑 부분이 중요한데, 가용영역을 최소 2개~ 4개 중 고를 수 있습니다.
한국에는 4개의 가용영역이 있는데 2개만 선택해도 비용이 효율적이고 기본적인 고가용성을 제공하므로 충분합니다.
하지만 나중에 트래픽이 많아질때는 4개를 선택하는 것을 고려하면 될 것 같습니다.(개인적인 생각)
보안그룹의 성격
자 이제 보안에 중요한 보안그룹입니다.
모든 TCP 혹은 모든 리소스를 열어 개방하는 것은 보안에 매우 취약합니다.
보안 그룹의 성격은 다음과 같습니다.
1. 보안그룹은 좀 더 진보적인 성격을 갖고 있습니다.
2. 같은 보안그룹끼리는 접근할 수 있습니다.
진보적인 성격?
만약 모든 리소스를 개방하는 보안그룹과 모든 리소스를 차단하는 보안그룹 2가지를 동시에 적용한다면 어떻게 될까요?
모든 리소스를 개방하는 보안그룹을 따르게 됩니다.
이를 활용하면 보안을 더 쉽게 설정할 수 있습니다.
그러므로 아래와 같이 해봅시다.
1. ECS Cluster 안에 있는 모든 서비스를 default 보안그룹(모든 리소스 차단)을 선택하고 로드밸런서에도 default 보안그룹을 적용시킵니다.
2. 로드밸런서에 HTTPS, HTTP 포트를 받을 수 있는 인바운드 룰을 적용시킵니다.
이제 HTTPS, HTTP 요청은 로드밸런서를 통해 접근할 수 있습니다.
3. 로드밸런서의 리스너 규칙에서 HTTP로 접근시 HTTPS로 리다이렉트 되도록합니다.
위 과정을 지킨다면 우리가 원하는 요구사항을 지킬 수 있습니다.
보안그룹은 아래와 같이 적용했습니다.
로드밸런서의 보안그룹을 default, http, https 포트만 받는 방식을 적용했습니다.
이제 리스너를 추가해봅시다.
리스너 추가
여기서 리스너란 로드밸런서에 HTTP 혹은 HTTPS 요청이 들어왔을 때 특정 대상 그룹에 전달해주는 것을 뜻합니다.
아까 말한 HTTPS redirect는 ECS 생성 후에 최후에 수정하면됩니다.
우선 HTTP 포트로 요청이 들어오면 해당 대상그룹으로 전달하는 것까지 설정합니다.
로드밸런서까지 마쳤네요. 이제 ECS 설정을 위한 모든 준비가 끝났습니다!
다음 글에서 ECS Service를 만들어볼게요!
'Infra > AWS' 카테고리의 다른 글
AWS ECS 무중단 CI/CD Pipeline 5. GitHub Action CI/CD Pipeline 구축 (0) | 2024.02.05 |
---|---|
AWS ECS 무중단 CI/CD Pipeline 4. ECS Service 배포, HTTP Redirect (0) | 2024.02.05 |
AWS ECS 무중단 CI/CD Pipeline 2. Route 53 & ACM 🔥😡🔥 (0) | 2024.02.04 |
AWS ECS 무중단 CI/CD Pipeline 1. ECS 기본 개념, ECR, Task 정의, IAM, CLI (0) | 2024.02.03 |
AWS ECS 무중단 CI/CD Pipeline 0. ECS 배포하게 된 배경 (0) | 2024.02.03 |