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

Cloud Composer 1 | Cloud Composer 2

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

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

復元性に優れた Cloud Composer 環境では、冗長性とフェイルオーバー メカニズムが組み込まれているため、ゾーン障害や単一障害点停止に対する環境の影響が軽減されます。

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

復元性に優れた環境は、選択したリージョンの少なくとも 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: 環境が配置されているリージョン。

次のステップ