ALBの加重ターゲットグループによってブルー/グリーンデプロイメント構成を作成してみた

ALBの加重ターゲットグループによってブルー/グリーンデプロイメント構成を作成してみた

ALBの加重ターゲットグループ(重み付け)によってブルー/グリーンデプロイメント構成を作成してみた
Clock Icon2025.03.21

はじめに

かつまたです。
ALBのリスナールールでは、条件とアクションを設定し、パスベースのルーティングやリダイレクトなどといった、トラフィックをどのように処理・ルーティングするかの制御が可能です。
今回はALBの加重ターゲットグループ機能を用いて2つのAZ間でのブルー/グリーンデプロイメント構成を作成してみたので手順をご紹介していきます。

やってみた

前提条件

以下GitHubのCDKから構成図のEC2、ALB、AutoScaling構成をデプロイします。
https://github.com/sebsto/cdk-load-balance-autoscaling-groups

BlueGreen.drawio

ターゲットグループ作成

Green、Blueそれぞれのターゲットグループを作成します。
1.Green用のターゲットグループから作成します。「EC2」→「ターゲットグループ」から「ターゲットグループの作成」を選択します。
スクリーンショット 2025-03-21 13.22.54

2.「ターゲットの登録」を押下します。ターゲットタイプを「インスタンス」とし、ターゲットグループ名と作成済みのVPCを選択します。
スクリーンショット 2025-03-19 17.01.13-1.png
スクリーンショット 2025-03-19 17.01.21.png

3.「ターゲットを登録」に進み、Green用インスタンスを選択します。「保留中として以下を含める」を押下し、選択したインスタンスが登録されていることを確認した上でターゲットグループを作成します。
スクリーンショット 2025-03-19 17.02.10.png
スクリーンショット 2025-03-19 17.02.22.png

4.Blue用のターゲットグループについても同様に作成します。
スクリーンショット 2025-03-19 17.03.04.png
スクリーンショット 2025-03-19 17.03.23.png

リスナールール設定

リスナールールを編集して、加重を設定するルールを追加します。
1.対象ALBの詳細画面の「リスナーとルール」から「ルールの編集」を選択します。
スクリーンショット 2025-03-19 17.07.09.png

2.「ルールを追加する」を選択します。
スクリーンショット 2025-03-19 17.07.20.png

3.ルールの条件式を指定します。「条件の追加」から「If パス = *」となるように設定します。
スクリーンショット 2025-03-19 17.07.37.png

4.ルールアクションを指定します。「ターゲットグループへ転送」を選択し、先ほど作成した2つのターゲットグループを追加します。それぞれの重みも設定します。
スクリーンショット 2025-03-19 17.07.55.png

動作確認

ALBのDNS名をWebブラウザで検索し、GreenとBlue用のページがそれぞれ表示されることを確認します。(体感)8:2で交互に表示されました。重み付けの設定を10:0等にすることでわかりやすく確認も可能です。
スクリーンショット 2025-03-19 17.09.13.png
スクリーンショット 2025-03-19 17.09.04.png

おわりに

ご覧いただきありがとうございました。
Route53を用いた加重ルーティングでのブルー/グリーンデプロイメントと比べ、同一VPC内に限定されますが、簡単なブルー/グリーンデプロイメント構成を構築できると感じました。
DNSキャッシュの有無やヘルスチェックの手法の違いを考慮して使い分けや同時利用が必要だと思いました。

参考資料

https://aws.amazon.com/jp/blogs/news/new-application-load-balancer-simplifies-deployment-with-weighted-target-groups/

https://docs.aws.amazon.com/ja_jp/elasticloadbalancing/latest/application/load-balancer-target-groups.html

https://dev.classmethod.jp/articles/alb-blue-green-deployment/

https://github.com/sebsto/cdk-load-balance-autoscaling-groups

アノテーション株式会社について

アノテーション株式会社はクラスメソッドグループのオペレーション専門特化企業です。サポート・運用・開発保守・情シス・バックオフィスの専門チームが、最新 IT テクノロジー、高い技術力、蓄積されたノウハウをフル活用し、お客様の課題解決を行っています。当社は様々な職種でメンバーを募集しています。「オペレーション・エクセレンス」と「らしく働く、らしく生きる」を共に実現するカルチャー・しくみ・働き方にご興味がある方は、アノテーション株式会社 採用サイトをぜひご覧ください。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.