다운타임, 데이터베이스 동기화 문제 또는 데이터 손실 없이 Amazon RDS 인스턴스를 Elastic Beanstalk 환경에서 분리하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2020년 9월 23일

AWS Elastic Beanstalk 환경에 Amazon Relational Database Service(Amazon RDS) DB 인스턴스가 연결되어 있습니다. 인스턴스와 환경 간의 종속성을 제거하려고 합니다. 다운타임, 데이터베이스 동기화 문제 또는 데이터 손실을 방지하려면 어떻게 해야 합니까?

간략한 설명

해결 방법 단계를 따라 다음을 수행합니다.

  • Elastic Beanstalk 블루(환경 A)/그린(환경 B) 배포를 사용하여 RDS DB 인스턴스를 환경 A에서 분리합니다.
  • RDS DB 인스턴스에 연결하는 데 필요한 정보를 사용하여 새 Elastic Beanstalk 환경(환경 B)을 생성합니다.

중요: Elastic Beanstalk 환경에 RDS DB 인스턴스를 연결하는 것은 배포 및 테스팅 환경에 적합합니다. 그러나 데이터베이스 인스턴스의 수명주기는 애플리케이션 환경의 수명주기와 연관되기 때문에 프로덕션 환경에는 적합하지 않습니다. 환경을 종료하면 그에 따라 RDS DB 인스턴스가 환경에서 삭제되므로 데이터가 손실됩니다. 자세한 내용은 Amazon RDS에서 Elastic Beanstalk 사용을 참조하십시오.

​해결 방법

RDS DB 스냅샷 생성

  1. Elastic Beanstalk 콘솔을 엽니다.
  2. RDS DB 인스턴스에서 분리하려는 Elastic Beanstalk 환경을 선택합니다(환경 A).
  3. 탐색 창에서 [구성]을 선택합니다.
  4. 데이터베이스에서 수정을 선택합니다.
  5. [엔드포인트]를 선택합니다.
  6. RDS DB 인스턴스의 RDS DB 스냅샷을 생성합니다.

RDS DB 인스턴스가 삭제되지 않도록 방지

  1. Amazon RDS 콘솔을 엽니다.
  2. 데이터베이스를 선택한 다음 수정을 선택합니다.
  3. 삭제 방지 섹션에서 삭제 방지 활성화 옵션을 선택합니다.
  4. 계속을 선택합니다.
  5. 수정 사항 예약 섹션에서 즉시 적용을 선택합니다.
  6. [DB 인스턴스 수정]을 선택합니다.
  7. Amazon RDS 콘솔을 새로 고친 다음 삭제 방지 기능이 성공적으로 활성화되는지 확인합니다.

새 Elastic Beanstalk 환경 생성

새 Elastic Beanstalk 환경(환경 B)에는 동일한 Elastic Beanstalk 애플리케이션에 있는 RDS DB 인스턴스가 포함되지 않아야 합니다.

참고: 나중에 블루/그린 배포(또는 CNAME 스왑)를 수행하려면 환경 A환경 B가 동일한 애플리케이션 버전을 사용하고 있는지 확인하십시오.

  1. 환경 B를 생성합니다.
  2. 환경 B를 환경 A의 기존 RDS DB 인스턴스에 연결합니다.
    참고: 자세한 내용은 Launching and connecting to an external Amazon RDS instance in a default VPC를 참조하십시오.
  3. 환경 B가 기존 RDS DB 인스턴스에 연결될 수 있고 애플리케이션이 예상대로 작동하는지 확인합니다.

다운타임 방지를 위해 블루/그린 배포 수행

  1. 환경 BElastic Beanstalk 콘솔을 엽니다.
  2. 이전 Elastic Beanstalk 환경과 새로운 Elastic Beanstalk 환경의 URL을 바꿉니다.
    참고: 자세한 내용은 Elastic Beanstalk로 블루/그린 배포를 참조하십시오.
  3. 환경 B의 URL을 열 때 URL이 응답하고 예상대로 작동하는지 확인합니다.

중요: DNS 변경 사항이 전파되고 이전 DNS 레코드가 만료될 때까지 환경 A를 종료하지 마십시오. DNS 레코드가 만료될 때까지 최대 48시간이 걸릴 수 있습니다. DNS 서버가 DNS 레코드에 설정된 TTL(Time to Live)을 기반으로 해당 캐시에서 이전 레코드를 반드시 지우는 것은 아닙니다.

이전 Elastic Beanstalk 환경에 대한 보안 그룹 규칙 제거

  1. Amazon RDS 콘솔을 엽니다.
  2. 데이터베이스를 선택합니다.
  3. 연결 및 보안 보기를 선택합니다.
  4. 보안에서 수정해야 할 보안 그룹을 선택합니다.
  5. [작업]에서 [인바운드 규칙 편집]을 선택합니다.
  6. 환경 A의 보안 그룹을 소스로 포함하는 규칙을 제거합니다.
  7. Elastic Beanstalk 콘솔에서 환경 B 및 애플리케이션이 예상대로 작동하는지 확인합니다.

이전 Elastic Beanstalk 환경 종료

이전 Elastic Beanstalk 환경을(환경 A) 종료합니다.

환경을 종료하면 RDS DB 인스턴스와 이전 보안 그룹을 제외한 모든 Elastic Beanstalk 리소스가 삭제됩니다. 삭제 방지 기능은 RDS DB 인스턴스 및 이전 보안 그룹의 삭제를 방지합니다.

환경을 종료하면 Elastic Beanstalk 이벤트 로그에 다음과 같은 오류 메시지가 표시됩니다.

Deleting RDS database named: aaxxxxxxxxxx failed Reason: Cannot delete protected DB Instance aaxxxxxxxxxx, please disable deletion protection and try again
Stack deletion failed: The following resource(s) failed to delete: [AWSEBRDSDatabase].

스택 삭제

  1. AWS CloudFormation 콘솔을 엽니다.
  2. 환경 A의 환경 ID를 기반으로 스택을 선택합니다.
    참고: 스택의 상태는 [DELETE_FAILED]입니다.
  3. 삭제(Delete)를 선택합니다.
  4. 보존할 리소스를 나열하는 [스택 삭제] 팝업 창에서 DELETE_FAILED 상태로 멈춘 RDS 리소스를 선택한 다음 [스택 삭제]를 선택합니다.
  5. (선택 사항) 환경 A를 종료한 다음, 앞서 생성한 RDS 스냅샷을 제거합니다.

이 문서가 도움이 되었습니까?


결제 또는 기술 지원이 필요합니까?