すべてのプロダクト
Search
ドキュメントセンター

Auto Scaling:ローリング更新

最終更新日:Sep 11, 2024

ローリングアップデートタスクを使用して、複数のECS (Elastic Compute Service) インスタンスまたはelasticコンテナインスタンスの設定を同時に更新できます。 ローリングアップデート機能を有効にして、イメージの更新、スクリプトの実行、またはCloudOps Orchestration Service (OOS) パッケージのインストールを、[サービス中] 状態の複数のECSインスタンスまたはエラスティックコンテナインスタンスに同時に行うことができます。

前提条件

  • イメージは、スケーリンググループ内のECSインスタンスまたはエラスティックコンテナインスタンスのイメージを更新する前に作成されます。

  • スクリプトは、スケーリンググループ内のECSインスタンスまたはエラスティックコンテナインスタンスでスクリプトを実行する前に準備されます。

  • OOSパッケージは、スケーリンググループ内のECSインスタンスまたはエラスティックコンテナインスタンスにOOSパッケージをインストールする前に準備されます。 詳細については、次をご参照ください: 複数のECSインスタンスでカスタムソフトウェアを管理します。

ローリングアップデートタスク

データ型

説明

イメージの更新

イメージ更新タスクを作成して、[サービス中] 状態の複数のECSインスタンスまたはエラスティックコンテナインスタンスのOSを同時に更新できます。 ECSインスタンスまたはエラスティックコンテナインスタンスは、同じスケーリンググループに属している必要があります。

イメージ更新タスクを実行する前に、イメージ更新タスクがスケーリンググループのインスタンス設定ソースに次の影響を与える可能性があることに注意してください。

  • インスタンス設定ソースがスケーリング設定の場合、[有効] 状態のスケーリング設定のイメージが自動的に更新されます。 スケーリンググループで [無効] 状態にあるスケーリング設定のイメージは更新されません。

  • インスタンス設定ソースが起動テンプレートの場合、起動テンプレートのイメージは自動的に更新されません。 起動テンプレートのイメージを手動で更新する必要があります。

説明

ローリング更新タスクまたは自動更新タスクを作成して、ビジネス要件に基づいてスケーリング設定のイメージを更新できます。 詳細については、「ローリングアップデートと自動アップデートの比較」をご参照ください。

スクリプト実行

タスクを実行するスクリプトを作成して、1つ以上のO&M操作を同時に実行できます。 例:

  • ディスク容量などのシステム構成を表示および更新します。

  • Apacheなどの一般的なソフトウェアをインストールします。

  • サービスコードをデプロイします。

OSSパッケージのインストール

OSSパッケージインストールタスクを作成して、複数のECSインスタンスまたはエラスティックコンテナインスタンスに同時にソフトウェアをインストールまたはアンインストールできます。

ローリングアップデートと自動アップデートの比較

  • 自動更新: アプリケーションが頻繁に公開されるシナリオに適しています。 自動更新タスクは、ECSタイプのスケーリンググループでのみ作成できます。 Auto Scalingコンソールで自動更新タスクを作成すると、Auto Scalingはスケーリンググループ内の元のECSインスタンスのカスタムイメージを自動的に作成します。 これにより、スケーリンググループ内の新しいECSインスタンスがすべて最新のカスタムイメージに基づいて作成されます。 詳細については、「スケーリング設定でイメージを自動的に更新する」をご参照ください。

  • ローリングアップデート: 複数のECSインスタンスまたはエラスティックコンテナインスタンスの設定を同時に更新する必要があるシナリオに適しています。 OOSをサポートするすべてのリージョンでローリングアップデートタスクを作成および実行できます。 この機能を有効にして、スケーリンググループの [サービス中] 状態にあるすべての既存のECSインスタンスまたはエラスティックコンテナインスタンスのイメージを最新バージョンに徐々に更新できます。

ローリング更新タスクの作成と実行

ローリング更新タスクを作成して実行する前に、次の項目に注意してください。

  • ローリングアップデート機能は、OOSがサポートされているリージョンでのみ使用できます。

  • ローリング更新機能を有効にするスケーリンググループには、進行中のスケーリングアクティビティが必要ありません。

  • 一度に実行できるローリング更新タスクは1つだけです。

  1. Auto Scalingコンソールにログインします。

  2. 左側のナビゲーションウィンドウで、スケーリンググループをクリックします。

  3. 上部のナビゲーションバーで、リージョンを選択します。

  4. 目的のスケーリンググループを見つけ、次のいずれかの方法でスケーリンググループの詳細ページを開きます。

    • スケーリンググループ名 /ID列のスケーリンググループのIDをクリックします。

    • [操作] 列の [詳細] をクリックします。

  5. 詳細ページの上部で、ローリングアップデートタブをクリックします。

  6. 実行タスクの作成をクリックします。

  7. 実行タスクの作成ダイアログボックスで、ビジネス要件に基づいてパラメーターを設定し、タスクの作成をクリックします。

    下表に、各パラメーターを説明します。

    パラメーター

    説明

    タスクの説明

    ローリング更新タスクの説明。

    タスクタイプ

    • イメージの更新: このタイプのタスクを作成して、ECSインスタンスまたはエラスティックコンテナインスタンスの現在のイメージを置き換えることができます。 パブリックイメージ、カスタムイメージ、共有イメージ、またはAlibaba Cloud Marketplaceのイメージを選択できます。 ECSインスタンスまたはelasticコンテナインスタンスは、更新中に再起動されます。 次のパラメーターも設定する必要があります。

      • 更新用イメージ: 更新タスクで使用されるイメージ。

      • ロールバック用のイメージ: ロールバックタスクで使用されるイメージ。

        説明

        ロールバックタスクを作成すると、[ロールバック用イメージ] パラメーターに選択したイメージが使用されます。 ビジネス要件に基づいて他の画像を選択できます。

    • スクリプトの実行: このタイプのタスクを作成し、Cloud Assistantを使用して、ECSインスタンスまたはエラスティックコンテナインスタンスを停止することなくスクリプトを実行できます。 次のパラメーターも設定する必要があります。

      • [スクリプトタイプ] セクションで、次のいずれかのスクリプトタイプを選択します。

        • Linux Shell: このスクリプトタイプの例は、echo hellohostnameです。

        • Windows Bat: このスクリプトタイプの例はdir c:\ です。

        • Windows PowerShell: このスクリプトの種類の例は、Get-Servicesです。

      • 実行スクリプト: 更新タスクの実行に使用されるスクリプト。

      • ロールバック用スクリプト: ロールバックタスクの実行に使用されるスクリプト。

        説明

        ロールバックタスクを作成するときは、script for rollbackパラメーターに選択したスクリプトが使用されます。 ビジネス要件に基づいてスクリプトを変更できます。

    • OOSパッケージのインストール: このタイプのタスクを作成して、OOSパッケージをインストールできます。 インストールするパッケージの名前とバージョンを選択します。

    実行バッチ

    タスクの実行に必要なバッチの数。 タスクは複数のバッチで実行され、各ECSインスタンスまたはエラスティックコンテナインスタンスは特定のバッチの一部として更新されます。 各バッチには、少なくとも1つのECSインスタンスまたはelastic containerインスタンスが含まれます。 たとえば、スケーリンググループに [サービス中] 状態のECSインスタンスが10個あり、[バッチ実行] パラメーターが2に設定されている場合、タスクは2つのバッチで実行され、各バッチに5つのECSインスタンスがあります。

    一時停止ポリシー

    • Without Suspension: Auto Scalingは中断なしでタスクを実行します。

    • 最初のバッチを一時停止: 最初のバッチが完了すると、Auto Scalingはタスクを一時停止します。 タスクを続行する場合は、手動でタスクを再開する必要があります。 タスクを手動で再開した後、タスクは後続のバッチで中断されません。

    • 各バッチの一時停止: バッチが完了するたびに、自動スケーリングはタスクを一時停止します。 各バッチが完了したら、手動でタスクを続行する必要があります。

    詳細設定

    オプションです。 [タスクタイプ][イメージの更新] に設定した場合、ローリング更新タスクが停止するまでに許可されるエラーの最大数を指定できます。 Error Thresholdパラメーターを設定しない場合、デフォルト値は0です。これは、1つのエラーが発生した場合にローリング更新タスクが失敗することを示します。

  8. ローリングアップデートタスクの影響を読んで理解し、OKをクリックします。

    次に、ローリング更新タスクが自動的に実行されます。 ローリングアップデートタスクは、スケーリンググループ、およびスケーリンググループ内のECSインスタンスまたはエラスティックコンテナインスタンスに次の影響を及ぼします。

    • ローリング更新タスクの実行中にスケーリングアクティビティが進行中の場合、Auto scalingはスケーリングアクティビティを中断します。 ローリング更新タスクが完了すると、Auto Scalingはスケーリングアクティビティを再開します。 ローリング更新タスクの実行前にスケーリングアクティビティを手動で中断した場合、タスクが完了するまでスケーリングアクティビティは中断されたままになります。 これにより、タスクの実行前後でスケーリングアクティビティのステータスが変更されません。

    • Auto Scalingは、ECSインスタンスまたはエラスティックコンテナインスタンスのステータスを一括でスタンバイに変更し、ローリングアップデートタスクが完了するとインスタンスを [サービス中] 状態に復元します。

      重要

      スケーリンググループがServer Load Balancer (SLB) インスタンスに関連付けられている場合、スタンバイ状態にあるECSインスタンスまたはエラスティックコンテナインスタンスのSLB重みはゼロに設定され、ビジネストラフィックは受信されません。

  9. ローリング更新タスクのステータスに基づいて、次の表に示す操作を実行します。

    API 操作

    説明

    手順

    ローリング更新タスクを続行する

    ローリングアップデートタスクの一時停止ポリシーが [最初のバッチを一時停止] または [各バッチを一時停止] の場合、タスクは [保留中 (バッチ一時停止)] 状態になります。 更新されたECSインスタンスまたはエラスティックコンテナインスタンスがビジネス要件を満たしているかどうかを確認します。 関連情報を確認したら、ローリングアップデートタスクを続行します。

    1. [操作] 列の [続行] をクリックします。

    2. [実行タスクの続行] メッセージで、[OK] をクリックします。

    ローリング更新タスクを完了する

    ローリング更新タスクの実行に失敗した場合、タスクは [保留中 (障害停止)] 状態になります。 ローリング更新タスクを完了する場合は、適切な更新操作を選択します。

    1. [操作] 列の [詳細] をクリックします。

    2. 障害状態のECSインスタンスまたはエラスティックコンテナインスタンスを見つけ、[操作] 列の [再試行][スキップ] 、または [キャンセル] をクリックします。

      • [再試行] をクリックして、ECSインスタンスまたはelastic containerインスタンスのローリング更新を再試行します。

      • [スキップ] をクリックして、次のECSインスタンスまたはelasticコンテナインスタンスのローリング更新を実行します。 スキップされたECSインスタンスまたはエラスティックコンテナインスタンスのステータスがSuccessに変更されます。

        重要

        スタンバイ状態からスキップされたECSインスタンスまたはelasticコンテナインスタンスを手動で削除する必要があります。

      • [キャンセル] をクリックして、次のECSインスタンスまたはelasticコンテナインスタンスのローリング更新を実行します。 ローリングアップデートタスクがキャンセルされたECSインスタンスまたはエラスティックコンテナインスタンスのステータスが [失敗] に変更されます。

    ローリング更新タスクのキャンセル

    ローリングアップデートタスクがビジネス要件を満たしていない場合は、タスクをキャンセルできます。

    [操作] 列の Dingtalk_20231212165532.jpg > [キャンセル] を選択します。

    重要

    ローリングアップデートタスクをキャンセルした後、中断されたスケーリングアクティビティを手動で再開し、障害状態にある、または現在のバッチで更新中のECSインスタンスまたはエラスティックコンテナインスタンスをスタンバイ状態から削除する必要があります。

    ローリング更新タスクをロールバックする

    ローリングアップデートタスクが [保留中 (一括中断)] または [保留中 (失敗の中断)] の状態であるか、最近実行された場合は、ローリングアップデートタスクをロールバックできます。

    詳細については、「ローリング更新タスクのロールバック」をご参照ください。

ローリング更新タスクをロールバックする

エラーが発生したときにECSインスタンスまたはエラスティックコンテナインスタンスの設定を復元するには、[保留中] (バッチ停止) または [保留中] ([障害停止]) 状態のローリングアップデートタスクをロールバックします。 実行された最新のローリングアップデートタスクをロールバックすることもできます。 [保留中] 状態のローリングアップデートタスクをロールバックすると、ローリングアップデートタスクはキャンセルされ、更新されたインスタンスはロールバックされます。

重要

ロールバックできるのは、ローリングアップデートタスクのみです。 ロールバックタスクはロールバックできません。

  1. ローリングアップデートタブで、目的のタスクを見つけてアクション列のロールバックをクリックします。

  2. ロールバックタスクの作成ダイアログボックスで、ビジネス要件に基づいてパラメーターを設定します。

    下表に、各パラメーターを説明します。

    パラメーター

    説明

    タスクの説明

    ロールバックタスクの説明。

    タスクタイプ

    タスクタイプはローリング更新タスクと同じであり、編集できません。

    • タスクタイプが [イメージの更新] の場合、ロールアップデートタスクの作成時に [イメージ] パラメーターに選択したイメージが自動的に選択されます。 ビジネス要件に基づいて他の画像を選択できます。

    • タスクタイプが [スクリプト実行] の場合、ローリング更新タスクの作成時に [ロールバック用スクリプト] パラメーターに選択したスクリプトが自動的に使用されます。 ビジネス要件に基づいてスクリプトを変更できます。

    • タスクタイプが [OOSパッケージのインストール] の場合、ローリングアップデートタスクの作成時に指定したOOSパッケージのバージョンが自動的に選択されます。 ビジネス要件に基づいて他のバージョンを選択できます。 他のパッケージは選択できません。

    実行バッチ

    タスクの実行に必要なバッチの数。 タスクは複数のバッチで実行され、各ECSインスタンスまたはエラスティックコンテナインスタンスは特定のバッチの一部としてロールバックされます。 各バッチには、少なくとも1つのECSインスタンスまたはelastic containerインスタンスが含まれます。 たとえば、スケーリンググループにサービス中状態のECSインスタンスが10個あり、Execution Batchパラメーターが2に設定されている場合、タスクは2つのバッチで実行され、各バッチに5つのECSインスタンスがあります。

    一時停止ポリシー

    • Without Suspension: Auto Scalingは中断なしでタスクを実行します。

    • 最初のバッチを一時停止: 最初のバッチが完了すると、Auto Scalingはタスクを一時停止します。 タスクを続行する場合は、手動でタスクを再開する必要があります。

    • [Suspend Each Batch]: バッチが完了するたびにタスクが中断されます。 手動でタスクを続行する必要があります。

    詳細設定

    オプションです。 [タスクタイプ][イメージの更新] に設定した場合、ロールバックタスクが停止するまでに許可されるエラーの最大数を指定できます。

  3. タスクの作成をクリックします。

  4. ロールバックタスクの影響を読んで理解し、OKをクリックします。

    その後、ロールバックタスクが自動的に実行されます。

ローリング更新タスクの詳細を表示する

ローリングアップデートタスクの詳細を表示し、ECSインスタンスまたはエラスティックコンテナインスタンスのローリング更新を再試行、スキップ、またはキャンセルできます。

  1. ローリングアップデートタブで、目的のタスクを見つけてアクション列の詳細をクリックします。

  2. タスクの基本情報を表示します。

    基本タスク情報には、タスクのステータスとタスクの種類が含まれます。 タスクタイプが [スクリプト実行] の場合、[スクリプトの詳細] をクリックしてスクリプトの詳細を表示します。

  3. インスタンスリストを表示します。

    さまざまな状態にあるECSインスタンスまたはエラスティックコンテナインスタンスが表示されます。

    • ECSインスタンスまたはエラスティックコンテナインスタンスのローリング更新が完了していない場合、インスタンスのローリング更新をスキップまたはキャンセルできます。

    • ECSインスタンスまたはエラスティックコンテナインスタンスの更新に失敗した場合、[操作] 列のインスタンスのローリング更新を再試行、スキップ、またはキャンセルできます。

    • タスクの種類が [スクリプトの実行] の場合、[結果] 列の [表示] をクリックして、スクリプトの出力を表示します。

    次のセクションでは、ECSインスタンスまたはエラスティックコンテナインスタンスのローリング更新の再試行、スキップ、キャンセルの違いについて説明します。

    • [再試行] をクリックして、ECSインスタンスまたはelastic containerインスタンスのローリング更新を再試行します。

    • [スキップ] をクリックして、次のECSインスタンスまたはelasticコンテナインスタンスのローリング更新を実行します。 スキップされたECSインスタンスまたはエラスティックコンテナインスタンスのステータスがSuccessに変更されます。

      重要

      スタンバイ状態からスキップされたECSインスタンスまたはelasticコンテナインスタンスを手動で削除する必要があります。

    • [キャンセル] をクリックして、次のECSインスタンスまたはelasticコンテナインスタンスのローリング更新を実行します。 ローリングアップデートタスクがキャンセルされたECSインスタンスまたはエラスティックコンテナインスタンスのステータスが [失敗] に変更されます。

ローリングアップグレードタスクのモニタリングとアラートの有効化

ビジネス要件に基づいて、個別のローリングアップデートタスクのモニタリングとアラートを有効にできます。 これにより、アラートの詳細に基づいて、ローリングアップデートの問題を簡単にトラブルシューティングできます。

  1. CloudMonitorコンソールにログインします。

  2. 左側のナビゲーションウィンドウで、[イベントセンター] > [システムイベント] を選択します。

  3. [システムイベント] ページで、フィルター条件を指定し、[検索] をクリックして、指定したスケーリンググループのローリング更新失敗イベントを照会します。

    たとえば、フィルター条件として [重要] を選択した場合、次のキーワードを入力します。

    (ACS-ESS-RollingUpdateByConfigureOOSPackage or ACS-ESS-RollingUpdateByReplaceSystemDiskInScalingGroup or ACS-ESS-RollingUpdateByRunCommandInScalingGroup or ACS-ESS-RollingUpdateByUpdateContainerGroup) and ${your_scaling_group_id}
    説明

    {your_scaling_group_id} を、asg-bp180y8dj5eku2j4****などの実際のスケーリンググループIDに置き換えます。

    资源告警.png

  4. [アラートとして保存] をクリックします。

  5. [イベントトリガーアラートルールの作成 /変更] パネルで、ビジネス要件に基づいて次のパラメーターを設定し、[OK] をクリックします。

    gundong.png

  6. 左側のナビゲーションウィンドウで、[アラート] > [アラート履歴] を選択します。

    [アラート履歴] ページで、アラートの詳細を表示できます。 2023-12-12_18-34-22.png