復元性に優れた環境を設定する

Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3

このページでは、復元性に優れた Cloud Composer 環境を設定する方法について説明します。

Cloud Composer のゾーン障害に対する復元性について

復元性に優れた Cloud Composer 環境は、組み込みの冗長性と、ゾーン障害や単一障害点の停止に対する環境の脆弱性を軽減するフェイルオーバー メカニズムを使用します。

たとえば、ゾーンの停止により、特定のゾーンで実行されている Airflow タスクが中断されます。その後、復元性に優れた環境は復旧し、影響を受けるコンポーネントを別のゾーンで再起動し、そのデータベースをセカンダリ ゾーンに切り替えます。そのため、DAG 実行の履歴やその他の設定を保持した状態で、Airflow により失敗した Airflow タスクを再スケジュール、再起動することができます。

復元性に優れた環境は、選択したリージョンの少なくとも 2 つのゾーンで実行されます。Cloud Composer は、環境のコンポーネントをゾーン間で自動的に分散します。

復元性に優れた Cloud Composer 環境は、重要なビジネス プロセスに使用できます。

環境の高可用性データベースについて

高可用性の Cloud Composer 環境では、環境のデータベースを保存する Cloud SQL インスタンスは高可用性モードで実行されます。高可用性のために構成された Cloud SQL インスタンスは「リージョン インスタンス」とも呼ばれ、構成されたリージョン内のプライマリ ゾーンとセカンダリ ゾーンに配置されます。リージョン インスタンスはプライマリ インスタンスとスタンバイ インスタンスで構成されます。

停止が発生した場合、環境の Cloud SQL インスタンスは、スタンバイ Cloud SQL インスタンスへのデータベースの自動フェイルオーバーを実行します。Cloud Composer 環境で追加の操作を行う必要はありません。プライマリ ゾーンが再び動作するようになると、環境は 2 つのゾーン(プライマリとセカンダリ)を使用する状態に戻ります。一部のケースでは、プライマリ ゾーンとセカンダリ ゾーンを互いに入れ替えることができます。高可用性モードの Cloud SQL インスタンスは、フェイルオーバー後に同じ IP アドレスを使用します。

高可用性 Airflow コンポーネントについて

高可用性の Cloud Composer 環境は、ゾーン間で分散される Airflow コンポーネントを実行します。

環境では、常に 2 つの Airflow スケジューラ、2 つのウェブサーバー、少なくとも 2 つの(ただし 10 個以下の)triggerer(triggerer が有効になっている場合)が実行されます。これらのコンポーネントのペアは、個別のゾーンで実行されます。ワーカーの最小数は 2 に設定され、環境のクラスタはワーカー インスタンスをゾーン間で分散します。ゾーンが停止した場合、影響を受けたワーカー インスタンスが別のゾーンで再スケジュールされます。

復元性に優れた環境のアーキテクチャの詳細については、復元性に優れた環境のアーキテクチャをご覧ください。

始める前に

  • 復元性に優れた環境は、プライベート IP 環境でのみ使用できます。

  • 復元性に優れた環境は、通常の環境と比べると増分課金にて提供されます。

  • 復元性に優れた環境は、Cloud Composer バージョン 2.2.0 以降で使用できます。

  • スタンダード環境を復元性に優れた環境に更新する場合は、次の構成要件を満たしていることを確認してください。環境がこれらの要件を満たしていない場合は、スケールとパフォーマンスのパラメータを更新できます。

    • Airflow ワーカーの最小数が 2 つ以上。
    • 2 つの Airflow スケジューラ。
    • DAG で遅延可能な演算子を使用する場合は、triggerer が 2 つ以上。

復元性に優れた環境を作成する

復元性に優れた環境を作成するには、環境の作成時に高復元性モードを有効にします

スタンダード環境を高復元性モードに更新する

コンソール

  1. Google Cloud Console で [環境] ページに移動します。

    [環境] に移動

  2. 環境のリストで、ご利用の環境の名前をクリックします。[環境の詳細] ページが開きます。

  3. [環境の設定] タブを選択します。

  4. [高復元性モード] セクションで、[編集] をクリックします。

  5. [高復元性] を選択し、[保存] をクリックします。

gcloud

  gcloud composer environments update ENVIRONMENT_NAME \
    --location LOCATION \
    --enable-high-resilience

以下を置き換えます。

  • ENVIRONMENT_NAME: 環境の名前。
  • LOCATION: 環境が配置されているリージョン。

API

  1. environments.patch API リクエストを作成します。

  2. このリクエストで次のように操作します。

    1. updateMask パラメータで、config.resilienceMode マスクを指定します。

    2. リクエストの本文で HIGH_RESILIENCE を指定して、高復元性モードに切り替えます。

例:

// PATCH https://composer.googleapis.com/v1/projects/example-project/
// locations/us-central1/environments/example-environment?updateMask=
// config.resilienceMode

{
 "config": {
   "resilience_mode": { "HIGH_RESILIENCE" }
   }
 }

Terraform

config ブロックの resilience_mode フィールドは、復元性モードを指定します。高復元性モードを使用するには、この値を HIGH_RESILIENCE に設定します。

resource "google_composer_environment" "example" {
  provider = google-beta
  name = "ENVIRONMENT_NAME"
  region = "LOCATION"

  config {

    resilience_mode = "HIGH_RESILIENCE"

  }
}

以下を置き換えます。

  • ENVIRONMENT_NAME: 環境の名前。
  • LOCATION: 環境が配置されているリージョン。

例:

resource "google_composer_environment" "example" {
  provider = google-beta
  name = "example-environment"
  region = "us-central1"

  config {

    resilience_mode = "HIGH_RESILIENCE"

}

復元性に優れた環境を標準復元性モードに変更する

環境はいつでも標準復元性モードに変更できます。この操作を実行すると、以下のようになります。

  • 環境内のウェブサーバーの数を 1 つに減らします。
  • 環境の Airflow データベースの高可用性モードをオフにします。
  • Airflow ワーカー、スケジューラ、triggerer の最小数の設定は変更しません。

コンソール

  1. Google Cloud Console で [環境] ページに移動します。

    [環境] に移動

  2. 環境のリストで、ご利用の環境の名前をクリックします。[環境の詳細] ページが開きます。

  3. [環境の設定] タブを選択します。

  4. [高復元性モード] セクションで、[編集] をクリックします。

  5. [標準復元性(デフォルト)] を選択し、[保存] をクリックします。

gcloud

  gcloud composer environments update ENVIRONMENT_NAME \
    --location LOCATION \
    --disable-high-resilience

以下を置き換えます。

  • ENVIRONMENT_NAME: Cloud Composer 環境の名前
  • LOCATION: 環境が配置されているリージョン。

API

  1. environments.patch API リクエストを作成します。

  2. このリクエストで次のように操作します。

    1. updateMask パラメータで、config.resilienceMode マスクを指定します。

    2. リクエストの本文で RESILIENCE_MODE_UNSPECIFIED を指定して、標準の復元性モードに切り替えます。

例:

// PATCH https://composer.googleapis.com/v1/projects/example-project/
// locations/us-central1/environments/example-environment?updateMask=
// config.resilienceMode

{
 "config": {
   "resilience_mode": { "RESILIENCE_MODE_UNSPECIFIED" }
   }
 }

Terraform

config ブロックの resilience_mode フィールドは、復元性モードを指定します。標準の復元性モードを使用するには、この値を STANDARD_RESILIENCE に設定します。

resource "google_composer_environment" "example" {
  provider = google-beta
  name = "ENVIRONMENT_NAME"
  region = "LOCATION"

  config {

    resilience_mode = "STANDARD_RESILIENCE"

  }
}

以下を置き換えます。

  • ENVIRONMENT_NAME: 環境の名前。
  • LOCATION: 環境が配置されているリージョン。

例:

resource "google_composer_environment" "example" {
  provider = google-beta
  name = "example-environment"
  region = "us-central1"

  config {

    resilience_mode = "STANDARD_RESILIENCE"

}

環境が高復元性モードで実行されているかどうかを確認します

コンソール

  1. Google Cloud Console で [環境] ページに移動します。

    [環境] に移動

  2. 環境のリストで、ご利用の環境の名前をクリックします。[環境の詳細] ページが開きます。

  3. [環境の設定] タブを選択します。

  4. [高復元性モード] セクションで、環境の高復元性モードを表示します。

gcloud

ご使用の環境で高復元性モードが有効になっているかどうかを確認するには、次の Google Cloud CLI コマンドを実行します。True の値は、環境で高復元性モードが有効になっていることを意味します。

gcloud composer environments describe ENVIRONMENT_NAME \
  --location LOCATION \
  --format="value(config.resilienceMode)"

以下を置き換えます。

  • ENVIRONMENT_NAME: Cloud Composer 環境の名前
  • LOCATION: 環境が配置されているリージョン。

次のステップ