AWS Network 기본 구성 구축 - 4 (ALB, ACM, Route53)
클라우드의 서버는 IP가 수시로 바뀔 수 있습니다. (오토스케일링을 적용하게 될 경우 특히나 그렇습니다.)
또한 오토스케일링을 적용하게 될 경우 하나의 서버에 트래픽을 분산 할 수 없으며,
이중화 및 삼중화 구성시 트래픽 분산 및 도메인 매핑을 위한 로드벨런서가 필요하게 됩니다.
따라서 로드벨런서를 구성하고, 도메인을 매핑시켜준 다음
도메인 -> ALB DNS를 통해 퍼블릭하게 접근하여
내부망 통신을 통해 Private서버의 서비스에 접근하게 되는 방식입니다.
AWS에서 위의 구성을 ALB를 통해 구성하고자 합니다.
(CLB는 이제 더 이상 업데이트가 없는 상태이며, 여러개를 사용할 경우 비용이 ALB가 더 저렴하기도 합니다.
ECS등의 서비스에는 더욱이 ALB만을 사용할 수 있기 때문에 ALB를 사용하시는게 좋습니다.)
1. Target Group 대상그룹을 통해 트래픽을 전달할 서비스 포트와 서버를 지정해줍니다.
2. ALB를 생성합니다.
3. 리스너에서 호스트 헤더 기반 or 패스 기반으로 타겟그룹으로 트래픽 전달을 해줍니다.
또한 Https 통신을 구현하고자 다음과 같은 절차를 먼저 거치도록 하겠습니다.
1. Route53에 도메인 등록
2. ALB DNS CNAME 레코드 생성
3. ACM 발급
4. Http -> Https Redirect 설정
5. Https 설정
가비아에서 550원에 shop도메인을 1년 동안 사용하실 수 있기 때문에 실습용으로 하나 구매하시는 것도 추천드립니다.
Route53에서 호스팅 영역 생성에서 자신의 도메인을 적어줍니다.
인터넷을 통해 서비스할 것이므로, 위와 같이 호스팅 영역을 만들어줍니다.
위와 같은 네임스페이스가 나올 텐데, 이를 가비아에 등록해주면 됩니다.
그렇게 도메인 소유권을 가져 오셨으면, 아마존 콘솔에서 ACM에 들어가 인증서 요청을 누릅니다.
자신의 도메인을 넣어주시고, DNS검증을 선택해 주신 다음 확인 및 요청을 해주시면 됩니다.
이제 인증서를 확장해서 레코드 생성 버튼을 눌러주시면 몇 분 후 발급 완료라고 되어있는 모습을 보실 수 있습니다.
이제 로드벨런싱을 하기 위해 타겟그룹을 만들도록 하겠습니다.
기본 아파치는 80포트로 통신을 하기 때문에 로드벨런싱 -> 대상 그룹 메뉴얼에서 생성을 눌러줍시다.
꼭 VPC를 체크하셔서 다른 VPC를 선택하지 않게 주의하시고,
상태 검사 설정은 로드벨런서가 핑을 날리면서 해당 포트의 서비스가 살아있는지 체크하는 경로입니다.
실제 웹이나 API서버를 구축하셨을 경우 Helath Check Page를 따로 만들거나 아니면
프레임워크에서 제공하는 부분을 사용하실 수 있기 때문에 그 부분을 통해 서비스를 체크할 수 있습니다.
이제 대상 탭에서 편집을 눌러 API 서버들을 연동시켜 주도록 하겠습니다.
클릭 후 등록된 항목에 추가를 눌러주시면 됩니다.
자 이제 로드벨런서를 만들어 보도록 하겠습니다.
로드벨런서 -> Application LoadBalancer를 선택해주시고
위와 같이 만들어 주시는데, 우리는 외부 인터넷 망에서 접속하게 할 것이므로
인터넷 게이트웨이와 라우팅이 되어 있는 퍼블릭 서브넷에 위치시켜 줍니다.
또한 체계를 인터넷 연결로 설정해주시면 됩니다.
발급 완료 상태인 인증서만 보이기 때문에 발급 완료가 되었는지 꼭 확인해주세요
해당 인증서를 넣어주시고, 보안 정책에 따라 선택해 주시면 됩니다.
서브 도메인을 하나만 사용해야하는 경우 등에는 TLSv1.2같은 보안 정책을 골라주셔야 합니다.
이제 보안 그룹을 80 및 443을 모든 IP 대역에 열어주는 보안그룹을 만들어줍니다.
아까 만든 타겟 그룹을 선택해주세요
모든 트래픽을 Https를 통해 통신하게 하기 위해
다음 다음을 눌러 생성한 다음 리스너 탭에서 HTTP:80 규칙 보기/편집을 눌러줍니다.
수정을 눌러서 기존 트래픽 전달을 지워주시고, Redirect 443으로 바꿔주시면 됩니다.
이제 도메인 -> ALB DNS를 볼 수 있게 상태 탭에서 ALB DNS를 카피해줍니다.
Route53에서 레코드 생성을 CNAME으로 다음과 같이 입력해줍니다.
1~2분 후 등록이 끝나고 도메인으로 접속하면 504 Error가 발생합니다.
왜냐하면 저희는 ALB -> API 서버로의 방화벽을 열어 준 적이 없기 때문입니다.
따라서 실제로 타겟그룹의 Health Check 상태도 unhealthy입니다.
그럼 이제 API서버의 보안그룹을 다음과 같이 수정해줍니다.
타겟 그룹의 헬스체크가 정상이며,
실제 도메인으로 접속할 시 API-A와 API-C가 번갈아가며 트래픽 분산이 잘 되는 것을 보실 수 있습니다.
이로써 AWS Private Network의 기본구성을 어떻게 하는지 왜 하는 것인지 파악하시는데 도움이 되셨기를 바랍니다.