翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
コンピューティング環境のブルー/グリーン更新を実行する
ブルー/グリーン更新は、既存のコンピューティング環境 (ブルー) とともに新しいコンピューティング環境 (グリーン) を作成することで、ダウンタイムとリスクを軽減する更新戦略です。このアプローチにより、既存の環境を運用したまま、ワークロードを新しい環境に徐々に移行できます。ブルー/グリーン更新は、最も安全な更新パスを提供し、任意のサービスロールタイプまたは割り当て戦略を操作します。
概要
ブルー/グリーン更新には、本番環境に最適ないくつかの利点があります。更新プロセス中にワークロードを継続的に実行することで、ダウンタイムをゼロにします。このアプローチにより、ロールバック機能が簡単になり、問題が発生した場合にすぐに元の環境に戻すことができます。本番ワークロードを完全に切り替える前に、新しい環境のパフォーマンスを検証して、段階的な移行戦略を実装できます。また、この方法では、元の環境は変更されず、削除するまで動作するため、リスクの軽減にも優れています。
ブルー/グリーン更新が必要な場合
ブルー/グリーン更新は、以下の状況で使用する必要があります。
-
コンピューティング環境がBEST_FIT配分戦略を使用する場合 (インフラストラクチャの更新をサポートしていない)
-
コンピューティング環境が AWSServiceRoleForBatch サービスにリンクされたロールを使用しない場合
-
異なるサービスロールタイプ間で移行する必要がある場合
ブルー/グリーン更新が推奨される場合
ブルー/グリーン更新は、ワークロードにとってダウンタイムゼロが重要な本番環境で特に推奨されます。このアプローチは、本番ワークロードを移行する前に新しい設定をテストし、変更がパフォーマンスと信頼性の要件を満たしていることを確認する必要がある場合に適しています。クイックロールバック機能がオペレーションにとって重要な場合、特に大幅な変更でカスタム AMIs を更新する場合は、ブルー/グリーン更新を選択します。この方法は、変更に完全にコミットする前にパフォーマンス特性と動作を検証し、更新プロセスの信頼性を提供する場合にも最適です。
前提条件
Blue/Green 更新を実行する前に、以下を確認してください。
-
コンピューティング環境を作成および管理するための適切な IAM アクセス許可
-
ジョブキュー設定を表示および変更するためのアクセス
-
移行中の潜在的な障害を処理するためにジョブ定義用に設定されたジョブ再試行戦略。詳細については、「ジョブの再試行の自動化」を参照してください。
-
新しいコンピューティング環境の AMI ID。これは次のいずれかになります。
-
Amazon ECS 最適化 AMI の最近の承認済みバージョン (デフォルトで使用)
-
Amazon ECS コンテナインスタンス AMI 仕様を満たすカスタム AMI。カスタム AMI を使用する場合は、次のいずれかの方法で指定できます。
カスタム AMIs「」を参照してくださいチュートリアル: コンピューティングリソース AMI を作成する。
新しい環境を作成する前に、既存のコンピューティング環境の設定を記録する必要があります。これを行うには、 AWS Management Console または を使用します AWS CLI。
以下の手順では、AMI のみを変更する Blue/Green 更新を実行する方法について詳しく説明します。新しい環境の他の設定を更新できます。
古い (青の) コンピューティング環境を削除すると、インスタンスが終了するため、それらのインスタンスで現在実行中のジョブはすべて失敗します。これらの障害を自動的に処理するように、ジョブ定義でジョブ再試行戦略を設定します。詳細については、「ジョブの再試行の自動化」を参照してください。
新しい環境に自信が持てたら、次の操作を行います。
-
ジョブキューを編集して、古いコンピューティング環境を削除します。
-
古い環境で実行中のジョブが完了するまで待ちます。
-
古いコンピューティング環境を削除します。
- Performing blue/green updates using the AWS Management Console
-
-
現在のコンピューティング環境のクローンを作成する
-
https://console.aws.amazon.com/batch/ で AWS Batch コンソールを開きます。
-
既存のコンピューティング環境を選択します。
-
アクションを選択し、クローンを作成します。
-
名前 に、新しいコンピューティング環境の一意の名前を入力します。
[次へ] を選択します。
-
インスタンス設定セクションで、AMI 設定を更新します。
-
追加設定] を展開します。
-
EC2 設定では、イメージタイプに新しい AMI タイプを指定し、イメージ ID オーバーライドフィールドに AMI ID を指定します。
[次へ] を選択します。
ネットワーク設定 で次へ を選択します。
-
既存の環境から自動的にコピーされる他の設定を確認します。
-
コンピューティング環境の作成 を選択します。
-
新しいコンピューティング環境のステータスが になるまで待ちますVALID。
-
ジョブキューの順序を変更する
-
ナビゲーションペインで キューを選択します。
-
既存のコンピューティング環境に関連付けられているジョブキューを選択します。
-
[編集] を選択します。
-
接続されたコンピューティング環境で、新しいコンピューティング環境を追加します。
-
ジョブキューの更新を選択します。
-
クリーンアップ
-
新しい環境でジョブの実行をモニタリングして、すべてが期待どおりに動作していることを確認します。
-
新しい環境に自信が持てたら、次の操作を行います。
-
ジョブキューを編集して、古いコンピューティング環境を削除します。
-
古い環境で実行中のジョブが完了するまで待ちます。
-
古いコンピューティング環境を削除します。
- Performing blue/green updates using the AWS CLI
-
を使用して設定を取得するには AWS CLI、次のコマンドを使用します。
aws batch describe-compute-environments \
--compute-environments your-compute-environment-name
新しい環境を作成するときに、参照用に出力を保存します。
既存の環境の設定を使用して新しいコンピューティング環境を作成しますが、新しい AMI を使用します。コマンド構造の例を次に示します。
サンプル値を前のステップの実際の設定に置き換えます。
cat <<EOF > ./blue-green-compute-environment.json
{
"computeEnvironmentName": "your-new-compute-environment-name",
"type": "MANAGED",
"state": "ENABLED",
"computeResources": {
"instanceRole": "arn:aws:iam::012345678901:instance-profile/ecsInstanceRole",
"type": "EC2",
"minvCpus": 2,
"desiredvCpus": 2,
"maxvCpus": 256,
"instanceTypes": [
"optimal"
],
"allocationStrategy": "BEST_FIT_PROGRESSIVE",
"ec2Configuration": [
{
"imageType": "ECS_AL2023",
"imageIdOverride": "ami-0abcdef1234567890"
}
],
"subnets": [,
"subnet-0abcdef1234567890"
],
"securityGroupIds": [
"sg-0abcdef1234567890"
]
}
}
EOF
$ aws batch create-compute-environment --cli-input-json file://./blue-green-compute-environment.json
新しい環境が利用可能になるまで待ちます。
aws batch describe-compute-environments \
--compute-environments your-new-compute-environment-name \
--query 'computeEnvironments[].status'
新しいコンピューティング環境をジョブキューに追加します。
aws batch update-job-queue \
--job-queue your-job-queue \
--compute-environment-order order=1,computeEnvironment=your-existing-environment \
order=2,computeEnvironment=your-new-compute-environment-name
検証したら、再度更新して新しい環境をプライマリにします。
aws batch update-job-queue \
--job-queue your-job-queue \
--compute-environment-order order=1,computeEnvironment=your-new-compute-environment-name
古い環境ですべてのジョブが完了したら、無効にしてから削除します。
aws batch update-compute-environment \
--compute-environment your-existing-environment \
--state DISABLED
aws batch delete-compute-environment \
--compute-environment your-existing-environment