Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3
本页面介绍如何设置高弹性 Cloud Composer 环境。
Cloud Composer 中针对可用区级故障的弹性简介
高弹性 Cloud Composer 环境使用内置冗余和故障切换机制,可降低环境易受可用区级故障和单点故障服务中断的影响。
例如,可用区级服务中断会中断在特定可用区中运行的 Airflow 任务。之后,高弹性环境会进行恢复,在其他可用区重启其受影响的组件,并将其数据库切换到辅助可用区。因此,Airflow 可以重新安排和重启失败的 Airflow 任务,同时保留 DAG 运行的历史记录和其他设置。
高弹性环境在所选区域的至少两个可用区中运行。Cloud Composer 会在区域之间自动分布环境组件。
您可以将高弹性 Cloud Composer 环境用于关键业务流程。
关于您的环境的高可用性数据库
在高可用性 Cloud Composer 环境中,存储环境数据库的 Cloud SQL 实例会以高可用性模式运行。采用高可用性配置的 Cloud SQL 实例也称为区域实例,位于所配置区域内的主要地区和辅助地区。在区域实例中,该配置由主实例和备用实例组成。
如果发生服务中断,您环境的 Cloud SQL 实例会执行数据库自动故障切换,以切换到备用 Cloud SQL 实例。您无需在 Cloud Composer 环境中执行任何其他操作。主要可用区再次正常运行后,环境会切换回两个可用区(主要可用区和次要可用区)。在某些情况下,主要可用区和次要可用区可以交换。处于高可用性模式的 Cloud SQL 实例在故障切换后使用相同的 IP 地址。
高可用性 Airflow 组件简介
高可用性 Cloud Composer 环境运行分布在各可用区之间的 Airflow 组件。
如果启用了触发器,您的环境始终会正好运行两个 Airflow 调度器、两个 Web 服务器和至少两个(但不超过 10 个)触发器。这些组件在不同的可用区中运行。工作器数量下限设置为 2 个,并且您环境的集群会在区域之间分布工作器实例。如果发生地区性中断,受影响的工作器实例会被重新安排到其他地区。
如需详细了解高弹性环境的架构,请参阅高弹性环境架构。
准备工作
高弹性环境仅在专用 IP 环境中可用。
与常规环境相比,高弹性环境以增量费用提供。
Cloud Composer 2.2.0 及更高版本提供高弹性环境。
如果要将标准环境更新为高弹性环境,请确保它满足以下配置要求。如果您的环境不满足这些要求,您可以更新其规模和性能参数。
- Airflow 工作器数量下限为 2 个或更多。
- Airflow 调度器的数量正好为 2。
- 如果您在 DAG 中使用可延期运算符,则至少需要 2 个触发器。
打造高弹性环境
如需创建高弹性环境,请在创建环境时启用高弹性模式。
将标准环境更新为高弹性模式
控制台
在 Google Cloud 控制台中,前往环境页面。
在环境列表中,点击您的环境名称。环境详情页面会打开。
选择环境配置标签页。
在弹性模式部分中,点击修改。
选择高弹性,然后点击保存。
gcloud
gcloud composer environments update ENVIRONMENT_NAME \
--location LOCATION \
--enable-high-resilience
请替换以下内容:
ENVIRONMENT_NAME
:您的环境的名称。LOCATION
:环境所在的区域。
API
构建
environments.patch
API 请求。在此请求中:
在
updateMask
参数中,指定config.resilienceMode
掩码。在请求正文中,指定
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"
}
将高弹性环境更改为标准弹性模式
您可以随时将环境更改为标准弹性模式。此操作:
- 将环境中的 Web 服务器数量减少到 1 个。
- 关闭环境 Airflow 数据库的高可用性模式。
不会更改 Airflow 工作器、调度器或触发器数量下限的设置。
控制台
在 Google Cloud 控制台中,前往环境页面。
在环境列表中,点击您的环境名称。环境详情页面会打开。
选择环境配置标签页。
在弹性模式部分中,点击修改。
选择标准弹性(默认),然后点击保存。
gcloud
gcloud composer environments update ENVIRONMENT_NAME \
--location LOCATION \
--disable-high-resilience
请替换以下内容:
ENVIRONMENT_NAME
:您的 Cloud Composer 环境的名称LOCATION
:环境所在的区域。
API
构建
environments.patch
API 请求。在此请求中:
在
updateMask
参数中,指定config.resilienceMode
掩码。在请求正文中,指定
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"
}
检查您的环境是否在高弹性模式下运行
控制台
在 Google Cloud 控制台中,前往环境页面。
在环境列表中,点击您的环境名称。环境详情页面会打开。
选择环境配置标签页。
在弹性模式部分中,查看环境的弹性模式。
gcloud
如需检查您的环境中是否启用了高弹性模式,请运行以下 Google Cloud CLI 命令。True
的值表示您的环境中已启用高弹性模式。
gcloud composer environments describe ENVIRONMENT_NAME \
--location LOCATION \
--format="value(config.resilienceMode)"
请替换以下内容:
ENVIRONMENT_NAME
:您的 Cloud Composer 环境的名称LOCATION
:环境所在的区域。
后续步骤
- 针对高弹性环境执行故障切换测试。
- 使用环境快照进行灾难恢复