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
:环境所在的区域。
后续步骤
- 针对高可用性配置执行故障切换测试 弹性环境
- 使用环境快照进行灾难恢复