[AWS] RDS 생성 실패로 알아보는 AWS 리전과 가용영역 개념

Loopy·2023년 3월 22일
0

삽질기록

목록 보기
16/28
post-thumbnail
post-custom-banner

문제 상황

RDS 를 평소처럼 생성하려 했는데 처음 보는 에러가 발생했다.

☁️ 원인

각 DB 서브넷 그룹은 AWS 리전에서 두 개 이상의 가용 영역서브넷이 존재해야 한다. 이렇기 때문에 서브넷 그룹에 두 개 이상의 가용 영역에 서브넷이 포함되어 있지 않으면 위의 에러가 나타난다고 한다.

그렇다면 왜 다수의 가용 영역이 필요한 것일까?

1. 리전

AWS글로벌 클라우드 서비스이기 때문에, AWS 에서 제공되는 클라우드 컴퓨팅 리소스들은 전세계 각국에서 호스팅된다.

이때 이 호스팅되는 위치를 지리적 관점으로 영역을 구분하는데, 이를 리전이라고 한다.

2. 가용 영역이란?

AZ각 리전 내에 격리된 더 작은 단위의 위치로, 개별 데이터센터로 구성되어 있다. 그리고 각 데이터 센터에는 50,000 ~ 80,000 대의 물리적 서버가 존재한다.

동일 리전 내 존재하는 복수의 AZ는 서로 물리적으로 격리되어 있지만, 좋은 품질의 네트워크 연결을 통해 논리적으로 연결되어 있다.

따라서 고가용성을 위해 리전 내 복수의 가용 영역에 데이터와 어플리케이션을 배포하는 것이 좋다고 한다. 복수의 가용 영역에 걸쳐 인스턴스를 배포했을 때 하나의 인스턴스에 장애가 발생한다면, 다른 가용 영역의 인스턴스가 장애가 발생한 인스턴스 관련 요청을 처리할 수 있도록 설계할 수 있기 때문이다.

🔖 고가용성(HA)
시스템이 지속적으로 정상 운영이 가능한 성질을 의미하며, 고장이 나도 바로 복구해서 서비스를 지속할 수 있는 능력이다.(복구를 위한 약간의 장애 시간도 포함)

참고로 AWSElastic IP 를 사용한다면, 인스턴스 장애가 발생한 AZ로부터 다른 영역으로 인스턴스 주소를 신속히 변경할 수 있다.

☁️ 해결 방안

메시지에 나와있지만, 2개 이상의 가용 영역을 포함하도록 서브넷을 추가하면 문제가 해결이 된다.

IPv4 CIDR이란?

VPC 내의 인스턴스 및 리소스에 할당되는 IP 주소를 결정한다.
VPC 의 Ipv4 CIDR이 172.31.0.0/16 이므로, 이 안에서 나누어야 한다. 이미 172.31.32.0/20 대역을 가진 서브넷이 존재하므로, 피해서 설정해주었다.

172.31.0.0/20
172.31.16.0/20
172.31.32.0/20
172.31.64.0/20

문제의 원인은 다른 곳에🥹

사실 네 개의 서브넷을 다른 가용 영역에 추가해줘도 에러는 여전했다.
라우팅 테이블에 서브넷 연결이 안되어 있길래, 이것이 원인인가 싶어서 연결해주었지만 그래도 RDS 생성이 되지 않는다.

하지만 몇 시간 동안의 삽질 끝에 원인을 찾았다. 나 같은 경우는 새롭게 VPC 를 생성하지 않고, 기본 VPC에서 작업을 하고 있던 것이다. 심지어 아무 정보도 모른 채 이전에 세 개 정도의 기본 서브넷들을 삭제했었고, 다시 생성하려 하니 기본 서브넷으로 인식이 안되었던 것.

물론 기본 서브넷을 생성할 수는 있다. 하지만, AWS 공식 문서를 자세히 보면 콘솔에서는 작업이 되지 않고 커맨드를 사용해야만 기본 서브넷을 생성할 수 있다는 것을 깨달을 수 있다.(공식 문서의 중요성..)

따라서 그냥 VPC 자체를 기본이 아닌 새롭게 생성하고 서브넷을 생성해주었더니 정상적으로 RDS 가 생성되었다.

참고 자료
특정 VPC에서 Amazon RDS DB 인스턴스를 시작할 수 없는 이유는 무엇입니까?
리전 및 영역-AWS 공식

profile
개인용으로 공부하는 공간입니다. 잘못된 부분은 피드백 부탁드립니다!
post-custom-banner

0개의 댓글