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

Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1

このページでは、復元性の高い(高可用性)Cloud Composer 環境を設定する方法について説明します。

復元力の高い(高可用性)環境について

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

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

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

高可用性の Cloud Composer 環境では、環境のデータベースを保存する Cloud SQL コンポーネントは高可用性モードで実行されます。Cloud SQL のプライマリ インスタンスとスタンバイ インスタンスは、ゾーン間で分散されます。

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

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

復元性に優れた環境はマルチゾーンであり、選択したリージョンの少なくとも 2 つのゾーンで実行されます。次のコンポーネントは、個別のゾーンで実行されます。

ワーカーの最小数は 2 に設定され、環境のクラスタはワーカー インスタンスをゾーン間で分散します。ゾーンが停止した場合、影響を受けたワーカー インスタンスが別のゾーンで再スケジュールされます。

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

始める前に

  • Cloud Composer 2 では、高復元性はプライベート IP 環境でのみ使用できます。

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

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

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

    • Airflow ワーカーの最小数が 2 つ以上。
    • 2 つの Airflow スケジューラ。

    • DAG で遅延可能な演算子を使用する場合は、triggerer が 2 つ以上。

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

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

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

コンソール

  1. Google Cloud コンソールで、[環境] ページに移動します。

    [環境] に移動

  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 コンソールで、[環境] ページに移動します。

    [環境] に移動

  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 コンソールで、[環境] ページに移動します。

    [環境] に移動

  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: 環境が配置されているリージョン。

次のステップ