ダウンタイム、データベース同期の問題、またはデータの損失なしで Amazon RDS インスタンスを Elastic Beanstalk 環境からデカップリングするにはどうすればよいですか?

所要時間3分
0

AWS Elastic Beanstalk 環境にアタッチされた Amazon Relational Database Service (Amazon RDS) インスタンスがあります。ダウンタイム、データベースの同期の問題、データ損失が発生しないようにしながら、インスタンスと環境の間の依存関係を除去したいと考えています。

簡単な説明

環境の健全性に影響を及ぼすことなく、データベースを Elastic Beanstalk 環境から分離するには、以下の手順に従います。

  1. Amazon RDS DB スナップショットを作成します。
  2. RDS DB インスタンスを削除から保護します。
  3. 新しい Elastic Beanstalk 環境を作成します。
  4. ブルー/グリーンデプロイメントを実行します。
  5. 古い環境のデータベース削除ポリシーを更新します。
  6. RDS インスタンスを古い環境から分離します。
  7. 古い環境を終了します。

重要: RDS DB インスタンスを Elastic Beanstalk 環境にアタッチすることは、開発およびテスト環境に最適です。本番環境では、データベースインスタンスのライフサイクルはアプリケーション環境のライフサイクルに関連しています。したがって、本番環境ではRDS DB インスタンスを Elastic Beanstalk 環境にアタッチしないことがベストプラクティスです。環境を終了すると、DB インスタンスが環境によって削除されるため、データが失われます。詳細については、「Amazon RDS で Elastic Beanstalk を使用する」を参照してください。

解決策

インスタンスの DB スナップショットを作成する

インスタンスの DB スナップショットを作成するには、次の手順を実行します。

  1. Elastic Beanstalk コンソールを開きます。
  2. Elastic Beanstalk 環境を選択します
  3. 環境 ID をコピーします。
  4. Amazon RDS コンソールを開きます。
  5. ナビゲーションペインで [データベース] を選択します。
  6. 検索フィールドに環境 ID を入力し、データベースを選択します。
  7. DB スナップショットを作成します

DB インスタンスを削除から保護する

DB インスタンスを削除から保護するには、次の手順を実行します。

  1. Amazon RDS コンソールを開きます。
  2. ナビゲーションペインで [データベース] を選択します。
  3. データベースを選択し、[変更] をクリックします。
  4. [削除保護][削除保護を有効にする] を選択し、[続行] をクリックします。
  5. [スケジュールの変更] で、[すぐに適用する] を選択し、[クラスターを変更する] を選択します。
  6. Amazon RDS コンソールを更新してから、削除保護が有効になっていることを確認します。

新しい Elastic Beanstalk 環境を作成する

**注:**新しい Elastic Beanstalk 環境には DB インスタンスを含めることはできません。

新しい Elastic Beanstalk 環境を作成するには、以下の手順を実行します。

  1. 新しい Elastic Beanstalk 環境を作成します。
  2. 新しい Elastic Beanstalk 環境を古い Elastic Beanstalk 環境の既存の DB インスタンスに接続します。詳細については、「Launching and connecting to an external Amazon RDS instance in a default virtual private cloud (VPC)」を参照してください。
  3. 新しい環境が既存の DB インスタンスに接続し、アプリケーションが正常に動作することを確認します。

ブルー/グリーンデプロイを実行してダウンタイムを回避する

注: ブルー/グリーンデプロイまたは CNAME スワップを後で実行するには、両方の Elastic Beanstalk 環境が同じアプリケーションの一部である必要があります。

ブルー/グリーンデプロイを実行するには、次の手順を実行します。

  1. 新しい環境の Elastic Beanstalk コンソールを開きます。
  2. 古いElastic Beanstalk環境と新しいElastic Beanstalk環境の環境URLを交換します。詳細については、「Blue/green deployments with Elastic Beanstalk」を参照してください。
  3. 新しい環境の URL が応答し、アプリケーションが正しく動作することを確認します。

**重要:**DNS の変更が反映され、古い DNS レコードが期限切れになるまで、古い Elastic Beanstalk 環境を終了しないでください。DNS レコードが期限切れになるまでに最大 48 時間かかることがあります。DNS サーバーは、DNS レコードに設定した有効期間 (TTL) に基づいてキャッシュから古いレコードをクリアしません。

古い環境のデータベース削除ポリシーを更新する

古い環境のデータベース削除ポリシーを更新するには、次の手順を実行します。

  1. 古い環境の Elastic Beanstalk コンソールを開きます。
  2. ナビゲーションペインで、[設定] を選択します。
  3. [ネットワークとデータベース][編集] を選択します。
  4. [データベース設定] で、[データベース削除ポリシー][保持する] に設定します。
  5. [適用] を選択します。設定の変更を保存するまでに数分かかります。

重要: データベース削除ポリシーの変更が古い環境に適用されるまで、次のステップに進まないでください。

RDS インスタンスを古い環境から分離する

RDS インスタンスを古い環境から分離するには、次の手順を実行します。

  1. 古い環境の Elastic Beanstalk コンソールを開きます。
  2. ナビゲーションペインで、[設定] を選択します。
  3. [ネットワークとデータベース]の設定で、[編集] を選択します。
  4. [データベース設定] で、**[データベース削除ポリシー] ** が [保持する] に設定されていることを確認します。
  5. [データベース接続] セクションで、[データベースを分離] を選択します。
  6. [適用] を選択します。

注: データベースが分離されても、データベースは引き続き稼働します。通常 5 分もかからずにデータベースを分離できます。

古い環境を終了する

新しい環境の機能が検証されたら、古い Elastic Beanstalk 環境を終了します。

環境を終了すると、Elastic Beanstalk によって作成された DB インスタンスと RDS セキュリティグループを除くすべての Elastic Beanstalk リソースが削除されます。ロードバランスされた Elastic Beanstalk 環境の一部として RDS インスタンスを作成すると、Elastic Beanstalk は Elastic Load Balancing (ELB) セキュリティグループを作成します。また、Elastic Beanstalk は Amazon Elastic Compute Cloud (Amazon EC2) セキュリティグループも作成して、環境内の EC2 インスタンスにアタッチします。また、Elastic Beanstalk は RDS セキュリティグループを作成して、 RDS インスタンスにアタッチします。EC2 セキュリティグループからのポート 3306 でのインバウンドトラフィックを許可するために、Elastic Beanstalk は RDS セキュリティグループにセキュリティグループインバウンドルールを追加します。

データベースを分離しても、Elastic Beanstalk はセキュリティグループのインバウンドルールを削除しません。このセキュリティグループのインバウンドルールは、Elastic Beanstalk が作成した RDS セキュリティグループから EC2 セキュリティグループを参照します。環境を終了しても、分離された RDS セキュリティグループは EC2 セキュリティグループを参照し続けるため、Elastic Beanstalk は環境を終了できません。

Elastic Beanstalk 環境を終了するには、次の手順を実行します。

  1. 古い環境の Elastic Beanstalk コンソールを開きます。
  2. ナビゲーションペインで、[設定] を選択します。
  3. [インスタンストラフィックとスケーリング] で、EC2 セキュリティグループにある EC2 セキュリティグループ名をメモします。
  4. Amazon EC2 コンソールを開きます。
  5. ナビゲーションペインで [セキュリティグループ] を選択します。
  6. セキュリティグループページで、EC2 セキュリティグループ名を入力します。
  7. セキュリティグループ ID を書き留めておきます。フォーマットは「sg-xxxxxxxx」のようになります。
  8. Amazon RDS コンソールを開きます。
  9. ナビゲーションペインで、[データベース] を選択し、DB インスタンスの名前を選択します。
  10. [接続とセキュリティ] で、サブネット、セキュリティグループ、およびエンドポイントを書き留めておきます。次に、[セキュリティ] で、セキュリティグループ名を選択します。
  11. EC2 コンソールでセキュリティグループページが開いたら、セキュリティグループを選択します。
  12. [インバウンドルール] で、**[インバウンドルールの編集] ** を選択します。
  13. セキュリティグループのルールを特定します。
  14. [削除] を選択し、[ルールを保存] を選択します。
  15. 古い環境の Elastic Beanstalk コンソールを開きます。
  16. [アクション] を選択し、**[環境を終了する]**を選択します。データベースを分離しても、Elastic Beanstalk はセキュリティグループのインバウンドルールを削除しません。セキュリティグループのインバウンドルールは、Elastic Beanstalk が作成した RDS セキュリティグループから EC2 セキュリティグループを参照します。
AWS公式
AWS公式更新しました 4ヶ月前
コメントはありません

関連するコンテンツ