AWS RDSのBlue/Green Deploymentsの手順について

2022年12月20日システムAWS

AWS RDSのBlue/Green Deploymentsの手順について
AWS RDSのBlue/Green Deploymentsの手順について

AWS RDSのBlue/Green Deploymentsを使ったので手順や注意点について紹介します。

ユート

今回RDSクラスターの更新が必要となり、Blue/Green Deploymentsではクラスター間のレプリケーションが簡単に構築できると聞いて検証を行った次第です。

Amazon RDS – Blue/Green デプロイメントの作成:https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/blue-green-deployments-creating.html

2022年12月時点では動作があやしい状態でした。今後のバージョンアップに期待です。

Blue/Green Deploymentsの手順

まずBlue/Green Deploymentsの手順をスクショを使ってくわしく紹介します。

1.パラメータグループを準備

まず事前準備です。

Amazon RDS Blue/Green Deployments を使用するには、パラメータグループの binlog_format を MIXED へ変更しておく必要があります。

Aurora MySQL DB クラスターでブルー/グリーンデプロイを使用するには、DB クラスターパラメータグループの binlog_format パラメータの値を OFF から MIXED に変更して、バイナリロギングを有効にする必要があります。

https://aws.amazon.com/jp/blogs/news/new-fully-managed-blue-green-deployments-in-amazon-aurora-and-amazon-rds/

なので、先にパラメータグループを準備します。

ユート

デフォルトのパラメータグループだと値を変更することができないので、新しくパラメータグループを作成する必要があります。

パラメータグループを作成

  1. RDSのコンソール画面を開く
  2. 左メニューの [パラメータグループ] をクリック
  3. 右上にある [パラメータグループの作成] をクリック
    • パラメータグループファミリ
      • DBクラスタおよびインスタンスのDBバージョンにあったDBファミリを選択
    • タイプ
      • DBクラスタかDBインスタンスか選択
    • グループ名
      • 任意の名前(***-cluster-paramater-mysql-5-7とか)
    • 説明
      • 任意(*** cluster paramater for auroa-mysql 5.7とか)
  4. [作成]ボタンをクリック

DBクラスタ パラメータグループの binlog_format を変更

  1. DBクラスタに紐づけしているパラメータグループを選択
  2. フィルタ パラメータへ binlog_format と入力
  3. 画面右上の [パラメータの編集] をクリック
  4. 値を [MIXED] に選択
  5. 画面右上の [変更の保存] をクリック
  6. そして [変更のプレビュー] をクリック
  7. 確認画面で [変更の保存] をクリック

パラメータグループの変更を反映させるにはDBクラスタを再起動する必要があります。

2.Blue/Green Deplymentsを作成

  1. RDSのコンソール画面を開く
  2. 対象のDBクラスターを選択
    • この例では hoge-cluster です
  3. [アクション] – [ブルー/グリーンデプロイの作成] をクリック
  1. 各入力項目に値を入力
    • Blue-Green 環境識別子
      1. 今回は hoge-staging とします
    • Blue-Green 環境設定
      • Bエンジンバージョンを選択
        1. 今回はDBエンジンのバージョンアップをするので 5.7.mysql_aurora.2.11.0 を選択します
      • DBクラスターのパラメータグループを選択
      • DBインスタンスのパラメータグループを選択します
  2. ステージング環境の作成ボタンを押す

パラメータグループで binlog_format を MIXED に設定していないとエラーとなります。

Green環境の作成開始

Statusを開くと「ソースのレプリカの作成」と「DBエンジンバージョンのアップグレード」のステータスを確認できます。

上の状態から1時間経過しても進まない場合は処理が止まっている可能性が高いのでやり直した方がよいです。(2022年12月現在では頻発している状況です…)

3.Bule環境とGreen環境を切り替え

  • 作成したBlue/Green Deploymentsを選択
  • 画面右上の [アクション] – [切り替え] をクリック

ステータスが [切り替え] になります。

切り替えが完了すると上のような状態となります。

切り替えが完了したら ブルー/グリーンデプロイ の hoge-staging は削除して作業終了となります。

Blue/Green Deploymentsの時間

Blue/Green Deploymentsの実行時間は約30分くらいで完了します。

処理時間
Green環境の作成18分
DBエンジンのアップデート7分
BlueとGreenの切り替え5分
Blue/Green Deploymentsの時間
ユート

インスタンスタイプやDBサイズによって変動すると思うので目安としてとらえてください。

Blue/Green Deploymentsのエラー

2022年12月時点では動作が不安定なのもあってエラーが多い状況です。

いつまで経っても終わらない / Green環境が作成されない / クルクル

あきらめてもう一度初めからトライしてみましょう。(自分も処理が終わらずに日を変えてやってみたら作成されました)

動作環境などいろいろと製薬事項があるようです…

切り替え中にRDSコンソールにアクセスできなくなった

切り替えが完了したらアクセスできるようになりましたが、怖い現象でした…

CreateBlueGreenDeployment is not supported

急にサポートされなくなった。

Blue Green Deployments requires writer instance to be in-sync with cluster parameter group

パラメータグループの binlog_format を MIXED にすると解消されます。

A deployment group associated with an application that uses the ECS compute platform must contain a valid pair of target groups that identify a load balancer. The target ECS service must be configured using one of those two target groups.

CodeDeploy ECSへBlue/Green DeploymentするときのELBターゲットグループ設定ミスでELBに関連付いたターゲットグループを選択していなかった
記事:https://dev.classmethod.jp/articles/codedeploy-blue-green-deployment-target-group-setting-mistakes/

Blue/Green Deploymentsについて

手順を紹介したBlue/Green Deploymentsについて紹介します。

くわしくは本家AWSの記事 新機能 – Amazon Aurora と Amazon RDS でのフルマネージド型 Blue/Green Deployments を参照してください。

Blue/Green Deploymentsとは

Amazon RDSの機能 Blue/Green Deployments は、本番環境(ブルー環境)とレプリケーションで同期されたステージング環境(グリーン環境)を数ステップで作成することができます。

またブルー環境とグリーン環境の切り替えも簡単に行うことができます。

Blue/Green Deploymentsを使用すると

DBエンジンのバージョンアップをステージング環境で行い、事前に検証を行うことができます。そして問題なければブルー環境とグリーン環境を切り替えて本番環境へ反映させることが容易に行えます。

Blue/Green Deploymentsの同期について

論理レプリケーションを使用して2つの環境を同期しています。

まとめ

今回はAWS RDSのBlue/Green Deploymentsについて紹介しました。

2022年12月時点では動作が不安定なので、自分は実戦で使うのはあきらめました。今後に期待です!

参照記事

プログラミングスクール受講メリット

・メンターにすぐ聞けるので分からないところでつまづかない
・受講生同士で学び合いモチベーション維持しやすい
・就学後に就職支援や進路サポートを受けることが出来る

ユート
ユート

Webプログラマ兼ブロガー | プログラミング基礎知識を発信|Webプログラマ歴は10年以上|JavaScript,PHP.HTML | 「人生の時間は有限。悪いことをしている時間はない」
プロフィール

2022年12月20日システムAWS

Posted by ユート