ALBの加重ターゲットグループによってブルー/グリーンデプロイメント構成を作成してみた
はじめに
かつまたです。
ALBのリスナールールでは、条件とアクションを設定し、パスベースのルーティングやリダイレクトなどといった、トラフィックをどのように処理・ルーティングするかの制御が可能です。
今回はALBの加重ターゲットグループ機能を用いて2つのAZ間でのブルー/グリーンデプロイメント構成を作成してみたので手順をご紹介していきます。
やってみた
前提条件
以下GitHubのCDKから構成図のEC2、ALB、AutoScaling構成をデプロイします。
ターゲットグループ作成
Green、Blueそれぞれのターゲットグループを作成します。
1.Green用のターゲットグループから作成します。「EC2」→「ターゲットグループ」から「ターゲットグループの作成」を選択します。
2.「ターゲットの登録」を押下します。ターゲットタイプを「インスタンス」とし、ターゲットグループ名と作成済みのVPCを選択します。
3.「ターゲットを登録」に進み、Green用インスタンスを選択します。「保留中として以下を含める」を押下し、選択したインスタンスが登録されていることを確認した上でターゲットグループを作成します。
4.Blue用のターゲットグループについても同様に作成します。
リスナールール設定
リスナールールを編集して、加重を設定するルールを追加します。
1.対象ALBの詳細画面の「リスナーとルール」から「ルールの編集」を選択します。
2.「ルールを追加する」を選択します。
3.ルールの条件式を指定します。「条件の追加」から「If パス = *」となるように設定します。
4.ルールアクションを指定します。「ターゲットグループへ転送」を選択し、先ほど作成した2つのターゲットグループを追加します。それぞれの重みも設定します。
動作確認
ALBのDNS名をWebブラウザで検索し、GreenとBlue用のページがそれぞれ表示されることを確認します。(体感)8:2で交互に表示されました。重み付けの設定を10:0等にすることでわかりやすく確認も可能です。
おわりに
ご覧いただきありがとうございました。
Route53を用いた加重ルーティングでのブルー/グリーンデプロイメントと比べ、同一VPC内に限定されますが、簡単なブルー/グリーンデプロイメント構成を構築できると感じました。
DNSキャッシュの有無やヘルスチェックの手法の違いを考慮して使い分けや同時利用が必要だと思いました。
参考資料
アノテーション株式会社について
アノテーション株式会社はクラスメソッドグループのオペレーション専門特化企業です。サポート・運用・開発保守・情シス・バックオフィスの専門チームが、最新 IT テクノロジー、高い技術力、蓄積されたノウハウをフル活用し、お客様の課題解決を行っています。当社は様々な職種でメンバーを募集しています。「オペレーション・エクセレンス」と「らしく働く、らしく生きる」を共に実現するカルチャー・しくみ・働き方にご興味がある方は、アノテーション株式会社 採用サイトをぜひご覧ください。