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

Cloud Composer 1 | Cloud Composer 2

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

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

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

たとえば、ゾーンが停止すると、特定のゾーンで実行されている 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 に設定されており、環境のクラスタはゾーン間でワーカー インスタンスを分散します。ゾーンが停止した場合、影響を受けるワーカー インスタンスは別のゾーンで再スケジュールされます。

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

始める前に

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

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

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

  • スタンダード環境を復元性に優れたものに更新する場合は、環境が次の構成を満たしていることを確認してください。

    • Airflow ワーカーの最小数が 2 つ以上に設定されている
    • 2 つの Airflow スケジューラ
    • DAG で遅延可能な演算子を使用する必要がある場合、少なくとも 2 つの(ただし 10 個以下の)triggerer

    環境がこれらの要件を満たしていない場合は、まず環境の設定を更新できます。環境のスケーリングをご覧ください。

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

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

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

コンソール

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

    [環境] に移動

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

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

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

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

gcloud

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

以下を置き換えます。

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

API

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

  • URL で updateMask=config.resilienceMode クエリ文字列を使用して、リクエストによって更新されるフィールドを示します。

  • リクエスト本文の JSON ファイルを使用して、Environment リソースの resilienceMode フィールドを HIGH_RESILIENCE に設定します。

例:

// PATCH https://composer.googleapis.com/v1/{name=projects/*/locations/*/environments/*}?updateMask=config.resilienceMode

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

Terraform

config ブロックで resilience_mode フィールドを設定すると、高復元モードが有効になります。

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

  config {

    resilience_mode = "HIGH_RESILIENCE"

  }
}

例:

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

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

  • URL で updateMask=config.resilienceMode クエリ文字列を使用して、リクエストによって更新されるフィールドを示します。

  • リクエスト本文の JSON ファイルを使用して、Environment リソースの resilienceMode フィールドを RESILIENCE_MODE_UNSPECIFIED に設定します。

例:

// PATCH https://composer.googleapis.com/v1/{name=projects/*/locations/*/environments/*}?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"

  }
}

例:

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

次のステップ