ダウンタイム、データベース同期の問題、またはデータの損失なしで Amazon RDS インスタンスを Elastic Beanstalk 環境からデカップリングするにはどうすればよいですか?
AWS Elastic Beanstalk 環境にアタッチされた Amazon Relational Database Service (Amazon RDS) インスタンスがあります。ダウンタイム、データベースの同期の問題、データ損失が発生しないようにしながら、インスタンスと環境の間の依存関係を除去したいと考えています。
簡単な説明
環境の健全性に影響を及ぼすことなく、データベースを Elastic Beanstalk 環境から分離するには、以下の手順に従います。
- Amazon RDS DB スナップショットを作成します。
- RDS DB インスタンスを削除から保護します。
- 新しい Elastic Beanstalk 環境を作成します。
- ブルー/グリーンデプロイメントを実行します。
- 古い環境のデータベース削除ポリシーを更新します。
- RDS インスタンスを古い環境から分離します。
- 古い環境を終了します。
重要: RDS DB インスタンスを Elastic Beanstalk 環境にアタッチすることは、開発およびテスト環境に最適です。本番環境では、データベースインスタンスのライフサイクルはアプリケーション環境のライフサイクルに関連しています。したがって、本番環境ではRDS DB インスタンスを Elastic Beanstalk 環境にアタッチしないことがベストプラクティスです。環境を終了すると、DB インスタンスが環境によって削除されるため、データが失われます。詳細については、「Amazon RDS で Elastic Beanstalk を使用する」を参照してください。
解決策
インスタンスの DB スナップショットを作成する
インスタンスの DB スナップショットを作成するには、次の手順を実行します。
- Elastic Beanstalk コンソールを開きます。
- Elastic Beanstalk 環境を選択します
- 環境 ID をコピーします。
- Amazon RDS コンソールを開きます。
- ナビゲーションペインで [データベース] を選択します。
- 検索フィールドに環境 ID を入力し、データベースを選択します。
- DB スナップショットを作成します。
DB インスタンスを削除から保護する
DB インスタンスを削除から保護するには、次の手順を実行します。
- Amazon RDS コンソールを開きます。
- ナビゲーションペインで [データベース] を選択します。
- データベースを選択し、[変更] をクリックします。
- [削除保護] で [削除保護を有効にする] を選択し、[続行] をクリックします。
- [スケジュールの変更] で、[すぐに適用する] を選択し、[クラスターを変更する] を選択します。
- Amazon RDS コンソールを更新してから、削除保護が有効になっていることを確認します。
新しい Elastic Beanstalk 環境を作成する
**注:**新しい Elastic Beanstalk 環境には DB インスタンスを含めることはできません。
新しい Elastic Beanstalk 環境を作成するには、以下の手順を実行します。
- 新しい Elastic Beanstalk 環境を作成します。
- 新しい Elastic Beanstalk 環境を古い Elastic Beanstalk 環境の既存の DB インスタンスに接続します。詳細については、「Launching and connecting to an external Amazon RDS instance in a default virtual private cloud (VPC)」を参照してください。
- 新しい環境が既存の DB インスタンスに接続し、アプリケーションが正常に動作することを確認します。
ブルー/グリーンデプロイを実行してダウンタイムを回避する
注: ブルー/グリーンデプロイまたは CNAME スワップを後で実行するには、両方の Elastic Beanstalk 環境が同じアプリケーションの一部である必要があります。
ブルー/グリーンデプロイを実行するには、次の手順を実行します。
- 新しい環境の Elastic Beanstalk コンソールを開きます。
- 古いElastic Beanstalk環境と新しいElastic Beanstalk環境の環境URLを交換します。詳細については、「Blue/green deployments with Elastic Beanstalk」を参照してください。
- 新しい環境の URL が応答し、アプリケーションが正しく動作することを確認します。
**重要:**DNS の変更が反映され、古い DNS レコードが期限切れになるまで、古い Elastic Beanstalk 環境を終了しないでください。DNS レコードが期限切れになるまでに最大 48 時間かかることがあります。DNS サーバーは、DNS レコードに設定した有効期間 (TTL) に基づいてキャッシュから古いレコードをクリアしません。
古い環境のデータベース削除ポリシーを更新する
古い環境のデータベース削除ポリシーを更新するには、次の手順を実行します。
- 古い環境の Elastic Beanstalk コンソールを開きます。
- ナビゲーションペインで、[設定] を選択します。
- [ネットワークとデータベース] で [編集] を選択します。
- [データベース設定] で、[データベース削除ポリシー] を [保持する] に設定します。
- [適用] を選択します。設定の変更を保存するまでに数分かかります。
重要: データベース削除ポリシーの変更が古い環境に適用されるまで、次のステップに進まないでください。
RDS インスタンスを古い環境から分離する
RDS インスタンスを古い環境から分離するには、次の手順を実行します。
- 古い環境の Elastic Beanstalk コンソールを開きます。
- ナビゲーションペインで、[設定] を選択します。
- [ネットワークとデータベース]の設定で、[編集] を選択します。
- [データベース設定] で、**[データベース削除ポリシー] ** が [保持する] に設定されていることを確認します。
- [データベース接続] セクションで、[データベースを分離] を選択します。
- [適用] を選択します。
注: データベースが分離されても、データベースは引き続き稼働します。通常 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 環境を終了するには、次の手順を実行します。
- 古い環境の Elastic Beanstalk コンソールを開きます。
- ナビゲーションペインで、[設定] を選択します。
- [インスタンストラフィックとスケーリング] で、EC2 セキュリティグループにある EC2 セキュリティグループ名をメモします。
- Amazon EC2 コンソールを開きます。
- ナビゲーションペインで [セキュリティグループ] を選択します。
- セキュリティグループページで、EC2 セキュリティグループ名を入力します。
- セキュリティグループ ID を書き留めておきます。フォーマットは「sg-xxxxxxxx」のようになります。
- Amazon RDS コンソールを開きます。
- ナビゲーションペインで、[データベース] を選択し、DB インスタンスの名前を選択します。
- [接続とセキュリティ] で、サブネット、セキュリティグループ、およびエンドポイントを書き留めておきます。次に、[セキュリティ] で、セキュリティグループ名を選択します。
- EC2 コンソールでセキュリティグループページが開いたら、セキュリティグループを選択します。
- [インバウンドルール] で、**[インバウンドルールの編集] ** を選択します。
- セキュリティグループのルールを特定します。
- [削除] を選択し、[ルールを保存] を選択します。
- 古い環境の Elastic Beanstalk コンソールを開きます。
- [アクション] を選択し、**[環境を終了する]**を選択します。データベースを分離しても、Elastic Beanstalk はセキュリティグループのインバウンドルールを削除しません。セキュリティグループのインバウンドルールは、Elastic Beanstalk が作成した RDS セキュリティグループから EC2 セキュリティグループを参照します。
関連するコンテンツ
- 承認された回答質問済み 10ヶ月前lg...
- 質問済み 1年前lg...
- 質問済み 4年前lg...
- 承認された回答質問済み 10ヶ月前lg...
- AWS公式更新しました 8ヶ月前
- AWS公式更新しました 1年前
- AWS公式更新しました 8ヶ月前