Azure Traffic Manager を使用してブルー グリーン デプロイメントを実施

執筆者: Dilip Lukose (Principal Program Manager, Azure Networking)

このポストは、2018 年 5 月 22 日に投稿された Blue-Green deployments using Azure Traffic Manager の翻訳です。

 

Azure Traffic Manager は、DNS に基づいて負荷分散を実行する Azure ソリューションです。世界中のユーザー トラフィックをきわめて高速かつ低レイテンシの Azure エンドポイントにルーティングするなど、さまざまな用途で使用されており、ミッション クリティカルなワークロードのシームレスな自動フェールオーバーや、オンプレミスからクラウドへの移行を可能にします。Traffic Manager の主な使用方法の 1 つに、Traffic Manager の重み付けラウンドロビン ルーティング方法を利用してブルー グリーン デプロイメント プロセスを実装し、ユーザーへの影響を最小限に抑えながらスムーズにソフトウェアをデプロイするというものがあります。今回の記事では、Traffic Manager を使用してブルー グリーン デプロイメントを実装する方法をご紹介します。その前に、まずはブルー グリーン デプロイメントの概要についてご説明します。

ブルー グリーン デプロイメントとは、ソフトウェアをロールアウトする手法の 1 つで、新しいバージョンのソフトウェアをデプロイして問題が発生した場合に、サービス中断の影響を軽減できます。この手法では、新しいバージョンのソフトウェアを一部のユーザーのみに提供し、ユーザー ベースを段階的に拡大して、最終的にはすべてのユーザーが新しいバージョンを使用します。新しいバージョンの Web アプリケーションの認証ワークフローが機能しないなど、新しいバージョンに問題が発生した場合は、すべてのユーザーを即座に* 以前のバージョンにリダイレクトできます。

そのためには、対となる 2 つの仮想環境を実行します。それぞれの環境は、ブルーとグリーンと呼ばれます。通常は片方の環境 (ブルー) ですべてのユーザー トラフィックを処理し、もう片方の環境 (グリーン) は利用不可またはアイドル状態です。運用環境では、Traffic Manager を使用して、ブルー環境からグリーン環境にユーザーを段階的に移行できます。その間、実際のトラフィックを利用してグリーン環境のテストを継続的に実行します。

Azure で実行されているワークロードの場合、以前のバージョンのコードを実行するブルー環境と新しいバージョンのコードを実行するグリーン環境は、それぞれ別の Azure Resource Manager グループに構成することをお勧めします。外部エンドポイントを利用する場合は、任意の CI/CD ツールを使用して、2 つの環境を管理、デプロイできます。環境の準備が完了したら、Azure ポータル、PowerShell、CLI のいずれかで Traffic Manager プロファイルを作成し、ルーティング方法として重み付けラウンドロビンを指定して、それぞれの環境に対応するエンドポイントを追加します。

この例では、1 つ目のエンドポイントとして Blue.contoso.com を選択して重みを 1,000 に設定し、2 つ目のエンドポイントとして Green.contoso.com を選択して重みを 1 に設定します。この構成では、すべてのトラフィックがブルー環境に送信され、グリーン環境には送信されません。これがブルー グリーン デプロイメントの初期状態です。

Resource group

Blue environment

すべてのトラフィックをブルー環境に送信

この時点では、クライアント アプリケーションからエンドポイントに直接接続するのではなく、Traffic Manager 経由で接続するように構成します。これには、作成したプロファイルの DNS 名 (末尾が trafficmanager.net) を使用します。

上級者向けのヒント: Azure DNS を使用してカスタム ドメイン名をホストしてから、Traffic Manager の DNS 名を指定します。こうすることで、クライアント アプリケーションから Traffic Manager 経由でサービスにアクセスする場合に、ユーザーが覚えやすい名前を使用できます。詳細については、Azure DNS のドキュメントをご覧ください。

最新バージョンをグリーン環境にロールアウトしたら、一部のユーザー トラフィックがグリーン環境に送信されるように、グリーン環境の重みを段階的に増やします。その後、Azure MonitorAzure Network Watcher を使用してグリーン環境のユーザー エクスペリエンスを監視し、グリーン環境に送信するユーザー トラフィックをさらに増やすか、ユーザー トラフィックの送信を停止するかを判断します。

Blue-Green environment

一部のトラフィックをグリーン環境に送信

影響を測定して設定を変更するプロセスは条件分岐を使用したループ処理です。このプロセスは、Jenkins、Terraform、Azure Resource Manager テンプレートなどを使用した継続的デプロイメント パイプラインによって自動化できます。Azure Web Apps で実行される Web アプリケーションをデプロイする場合は、Visual Studio だけでブルー グリーン デプロイメントの大半を実行できます。

Process

ソフトウェアのデプロイが完了するまでグリーン環境の重みを増減し、最終的には新しいバージョンのソフトウェアを実行しているグリーン環境にすべてのトラフィックを送信します。

Green environment

すべてのトラフィックをグリーン環境に送信

Azure Traffic Manager を使用すると、安全なブルー グリーン デプロイメントの手法を詳細に制御しながらシームレスに短時間* で実施できます。最大の利点は、グリーン環境の重みを増やすスピードを自由に制御できることです。

 

*エンドポイントへのトラフィックの増減のスピードは、プロファイルで設定した DNS 応答の TTL 値によって左右されます。詳細については、 Azure Traffic Manager の FAQ をご覧ください。