RDSのBlue/Green Deploymentsをやってみた
こんにちは、しおです。
今回はAmazon RDSのBlue/Green Deployments(ブルー/グリーンデプロイ)を試してみた際の、全体の流れをまとめていこうと思います。
まずブルー/グリーンデプロイとは何かということについては、AWSのドキュメントを見ていただくとイメージが掴めると思います。
端的に説明をするとRDSの変更や更新がしたいときに、ブルー環境(本番環境)のものを複製してグリーン環境(ステージング環境)を作成してグリーン環境の準備ができたら切り替えるというものです。
参考:https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/blue-green-deployments-overview.html
それではここから実際の操作を追いながらまとめていきます。
ブルー/グリーンデプロイの作成
まずはブルー/グリーンデプロイの作成です。
今回は例としてRDSインスタンスを1つあらかじめ作成しています。
操作は簡単でコンソール上のアクションメニューから「ブルー/グリーンデプロイの作成」を選択すると作成ができます。
作成ページからグリーン環境の設定をしていくのですが、
ここでDBエンジンのバージョンの変更やパラメータグループの変更が可能です。
ブルー環境とは別のパラメータグループを選択する場合は、あらかじめパラメータグループを作成しておく必要があります。
また、ブルー環境でRDSプロキシを利用している場合はブルー/グリーンデプロイの作成ができません。
そのため作成前に一時的にプロキシのターゲットからデータベースを削除しておく必要があります。
ターゲットグループからデータベースを削除する操作はコンソールからはできないようですので、AWS CLIから操作が必要です。
// cli例
aws rds deregister-db-proxy-targets --db-proxy-name {proxy-name} --target-group-name default --db-instance-identifiers {sample-db}
問題がなければ作成を実施して、
ブルー/グリーンデプロイの作成が完了するとコンソールには下記のように表示がされます。
Blueのラベルがついているものが元のDBインスタンス、Greenのラベルがついているものが新しく作成されたグリーン環境のインスタンスになります。
注意点としてグリーン環境の作成後は、ブルー環境とグリーン環境の2つ分の料金が発生してしまいます。
RDSプロキシからターゲットを削除していた場合は戻しておきます。
// cli例
aws rds register-db-proxy-targets --db-proxy-name {proxy-name} --target-group-name default --db-instance-identifiers {sample-db}
グリーン環境の操作
グリーン環境の作成ができるとブルー環境のデータがグリーン環境の方にもレプリケーションされるので、データが同期された状態になります。
例えばブルーの方にデータを追加すると、グリーン側にも同様にデータが追加されるようになります。
この状態でグリーン環境側で設定変更などを試すことが可能です。
変更が必要な部分をグリーン環境で検証して準備を進めます。
ブルー/グリーンの切り替え
グリーン環境側の作業が完了したあとは切り替えを実施します。
切り替え作業もコンソール上からの操作で簡単に実施ができます。
ブルー/グリーンデプロイを選択して、アクションから「切り替え」を選択します。
切り替え画面上でタイムアウト時間も設定することができ、切り替えがこの時間を超える場合にはロールバックされて変更されないようにすることも可能です。
切り替え画面で変更の内容が確認できたら切り替えを実施します。
作成時と同様にRDSプロキシを利用している場合は切り替えができないため、一時的にターゲットから削除して切り替え後にプロキシに追加するということが必要です。
切り替え中は下記のような表示になり、順次変更が適用されていきます。
切り替えは数分で終わると思いますが、切り替え中はダウンタイムとなりますので注意してください。
切り替えが完了すると下記のような表示になります。
切り替え後はブルー環境のリソース名に-old1
の表記が追加されて、グリーン環境の方は切り替え前のブルー環境のリソース名に更新されます。
切り替えの所要時間としては今回の例だとおよそ2分ほどかかったようです。
詳細を確認したい場合は、ブルー/グリーンデプロイの「ログとイベント」タブからログの確認が可能です。
ここまでで切り替えの作業は完了です。
簡単ですね。
また、切り替え後の古いものについては適宜停止・削除しておきましょう。