퍼블릭 서브넷에 있는 RDS를 프라이빗 서브넷으로 변경해봤습니다(서브넷그룹 변경)

2022.10.31

안녕하세요, 임채정입니다.
AWS의 모범사례 에서의 RDS는 보안을 위한 프라이빗 서브넷에 작성하는 것을 추천하고 있습니다.
하지만 RDS를 퍼블릭 서브넷에서 작성하는 경우도 있습니다.
만약, 퍼블릭 서브넷에 RDS 를 작성해두고 나중에 프라이빗 서브넷으로 변경하고 싶은 경우 어떻게 해야될까요.
이번 블로그에서는 서브넷 그룹을 수정하는 방식으로 퍼블릭 서브넷에 있는 RDS 를 프라이빗 서브넷으로 이동시키는 방법을 정리해봤습니다.

아젠다

  1. 변경 방법
  2. 서브넷그룹 수정
  3. RDS의 레프리카 작성
  4. RDS의 다중 AZ 설정 해제
  5. 서브넷그룹 수정(2)

0. 변경 방법

이번 블로그에서는 퍼블릭 서브넷에 위치해있는 RDS 를 서브넷그룹을 변경하는 방법으로 프라이빗 서브넷으로 이동시켜보겠습니다.
-> 목표 : VPC A의 퍼블릭 서브넷에 있는 RDS를 VPC A의 프라이빗 서브넷으로 이동시킨다.

리드 레프리카를 사용한 변경방법은 다음과 같습니다.
1. 서브넷 그룹 수정(프라이빗 서브넷 추가)
2. RDS 의 레프리카 수정
3. RDS 의 마스터 변경
4. 퍼블릭 서브넷의 RDS 삭제
5. 서브넷 그룹 수정(퍼블릭 서브넷 삭제)

다음과 같이 조금 복잡하게 작업을 하는 이유는 서브넷그룹을 수정할 때는 사용중인 서브넷을 변경할 수 없기 때문입니다.

또한, 변경 방법에 관해서는 아래 페이지를 참고했습니다.

이 블로그에서 RDS의 작성은 생략하겠습니다.

1. 서브넷그룹 수정

먼저 RDS에 연결된 서브넷 그룹을 수정하겠습니다.

이번에 사용할 RDS에 연결된 서브넷을 확인해보면 다음과 같이 서브넷그룹에 포함된 서브넷을 확인할 수 있습니다.

다음 서브넷그룹에 포함되어 있는 서브넷은 전부 퍼블릭 서브넷입니다.


확인을 했으니 RDS의 리드 레프리카를 프라이빗 서브넷으로 작성하기 위해 서브넷 그룹을 수정하겠습니다.
RDS 에 설정된 서브넷그룹을 선택해서 [편집]을 클릭합니다.

[서브넷 추가]영역에서 가용영역을 선택해서 해당 가용영역의 서브넷을 삭제 선택합니다.

이 때, 서브넷 그룹에서 RDS에 연결되어 있는 서브넷을 제외한 퍼블릭 세브넷을 제거합니다.
RDS와 연결된 서브넷을 남겨두는 이유는 연결된 서브넷은 제거할 수 없기 때문입니다.
연결된 서브넷을 제거하려고 하면 다음와 같은 에러가 출력됩니다.

그렇기 때문에 RDS가 작성된 퍼블릭 서브넷 + 복수개의 프라이빗 서브넷을 추가합니다.

그러면 RDS가 작성된 서브넷을 제외하고는 프라이빗으로만 이루어진 서브넷으로 세브넷그룹이 구성됩니다.

2. RDS의 다중 AZ 설정 후 재부팅

이번에는 서브넷그룹에 추가된 프라이빗 서브넷에 RDS의 다중 AZ 설정을 하겠습니다.

다중 AZ 설정을 하게되면 자동으로 보조 서브넷인 프라이빗 서브넷에 새로운 DB 인스턴스를 생성합니다.
대상 RDS 를 선택하고 [수정]을 클릭합니다.

그리고 다중 AZ 설정을 해줍니다.

인스턴스의 수정 예약에서 [즉시 적용]을 선택해주고 [DB 인스턴스 수정]을 클릭합니다.

그러면 다중 AZ에 라고 표시됩니다.

장애 조치로 재부팅 하겠냐는 안내문에 표시를 하고 [확인]을 클릭합니다.

재부팅하면 ap-northeast-1c 였던 서브넷이 ap-northeast-1a 으로 변경되면서 프라이빗 세브넷으로 변경됩니다.

3. RDS의 다중 AZ 설정 해제

다음으로 이번에는 RDS의 다중 AZ 설정을 다시 해제합니다.

일단 프라이빗 서브넷에 위치한 RDS인스턴스를 선택해서 [수정]을 클릭합니다.

그리고 다중 AZ 설정을 해제합니다.

인스턴스의 수정 예약에서 [즉시 적용]을 선택해주고 [DB 인스턴스 수정]을 클릭합니다.

이러면 다중 AZ에 아니요라고 표시됩니다..

4. 서브넷그룹 수정(2)

마지막으로 다시한번 서브넷 그룹을 수정해서 남아있는 퍼블릭 서브넷을 제거하겠습니다.

대상 서브넷그룹을 선택해서 [편집]을 클릭합니다.

가용영역을 선택해서 퍼블릭 서브넷을 삭제합니다.

이렇게 되면 프라이빗 서브넷만 포함된 서브넷그룹이 됩니다.

즉, RDS를 퍼블릭 서브넷에서 프라이빗 서비넷을 이동시킨 것입니다.
여기까지가 퍼블릭 서브넷에 있는 RDS를 프라이빗서브넷으로 변경하는 방법이었습니다.