针对高弹性环境执行故障切换测试

Managed Airflow(第 3 代) | Managed Airflow(第 2 代) | Managed Airflow(旧版第 1 代)

本页面介绍了如何为高弹性环境执行数据库和集群故障切换测试 。

环境的故障切换测试会模拟数据中心内可用区的完全中断。在这种情况下,集群的可用区中断和数据库的可用区中断可能会同时发生。通过执行这两项故障切换测试,您可以监控高弹性环境如何执行故障切换,并检查这会对 DAG 和任务产生什么影响。

准备工作

  • 如需执行故障切换测试,您的 Google 账号必须拥有以下角色和权限:

    • composer.environments.update 权限。如需查看具有此权限的角色列表,请参阅 使用 IAM 进行访问权限控制

    • Kubernetes Engine 集群管理员 (roles/container.clusterAdmin) 角色,用于在环境的集群上运行 kubectl 命令。或者,您也可以直接在 GKE 中预配 Kubernetes RBAC 角色

  • 如果您使用已获授权的网络,则您 必须从可以访问 GKE 集群控制平面端点的机器运行 kubectl 命令。根据您设置对环境控制平面端点的访问权限的方式,您可以使用多种选项。如需了解详情,请参阅 在专用 IP 环境中运行命令

检查环境是否正常运行

请务必仅对正常运行的环境执行故障切换测试。如需检查环境是否正常运行,请执行以下操作:

  1. 在 Google Cloud 控制台中,前往 环境 页面。

    转到“环境”

  2. 在环境列表中,点击您的环境名称。环境详情 页面会打开。

  3. 转到监控 标签页。

  4. 确保所有健康指标均为绿色。

执行数据库故障切换测试

您可以通过使用 Google Cloud CLI 命令触发数据库故障切换测试来模拟可用区中断。例如,您可能需要执行此操作来衡量环境的数据库切换到另一个可用区所需的时间。

如需为您的环境执行数据库故障切换测试,请执行以下操作:

  1. 确保环境正常运行

  2. 获取环境数据库的主可用区:

    gcloud composer environments fetch-database-properties \
        ENVIRONMENT_NAME \
        --location LOCATION
    

    替换以下内容:

    • ENVIRONMENT_NAME:Cloud Composer 环境的名称。
    • LOCATION:环境所在的区域。

    示例:

    gcloud composer environments fetch-database-properties \
        example-environment \
        --location us-central1
    
  3. 启动数据库故障切换测试:

    gcloud composer environments database-failover \
        ENVIRONMENT_NAME \
        --location LOCATION
    

    替换以下内容:

    • ENVIRONMENT_NAME:Cloud Composer 环境的名称。
    • LOCATION:环境所在的区域。

    示例:

    gcloud composer environments database-failover \
        example-environment \
        --location us-central1
    
  4. 等待数据库故障切换测试完成。此过程最多可能需要 3 分钟。

  5. 检查环境数据库的主可用区是否已更改:

    gcloud composer environments fetch-database-properties \
        ENVIRONMENT_NAME \
        --location LOCATION
    
  6. 检查环境的健康指标,确保 环境正常运行

  7. 数据库可用于故障切换 (composer.googleapis.com/environment/database/available_for_failover) 环境指标变为 True 时,环境的数据库即可用于另一次故障切换。如需详细了解如何在 Cloud Monitoring 中查看您的 环境的指标,请参阅 监控环境

执行环境的集群故障切换测试

您可以为环境的集群执行故障切换测试,以模拟可用区中断。例如,您可能需要执行此操作来衡量环境切换到另一个可用区所需的时间。

检查环境是否正常运行

在开始测试之前,请确保 环境正常运行

为环境的集群配置凭据

如需获取集群凭据,请执行以下操作:

  1. 在 Google Cloud 控制台中,前往 环境 页面。

    转到“环境”

  2. 在环境列表中,点击您的环境名称。环境详情 页面会打开。

  3. 转到环境配置 标签页。

  4. 点击查看集群详细信息

  5. 点击连接

  6. 复制并执行显示的 Google Cloud CLI 命令。

    例如:

    gcloud container clusters get-credentials \
      us-central1-exam-db23ee12-gke \
      --region us-central1 \
      --project example-project
    

检查环境的集群

检查工作负载在环境的集群中运行的可用区和节点。 您可以使用此信息在稍后模拟可用区服务中断。您还可以在执行故障切换测试时再次运行这些命令,以了解环境的集群如何执行故障切换。

  1. 检查节点和可用区:

    kubectl get nodes \
      -o=custom-columns=NAME:.metadata.name,NODE:.metadata.labels.topology\\.gke\\.io/zone
    
  2. 检查 pod:

    kubectl get pods --all-namespaces \
    -o=custom-columns=NAME:.metadata.name,STATUS:.status.phase,NODE:.spec.nodeName \
    --field-selector metadata.namespace!=kube-system
    
  3. 查看有关 pod 的更多详细信息:

    kubectl get pods --all-namespaces -o wide \
    --field-selector metadata.namespace!=kube-system
    

排空节点

选择要模拟中断的可用区。如果您同时执行集群 故障切换测试和数据库故障切换测试, 则可能需要选择环境的 高可用性 Cloud SQL 实例的主可用区。 例如,如果主 Cloud SQL 实例在 us-central1-a 中运行,则您可以先执行数据库故障切换测试,然后在 us-central1-a 中执行集群的故障切换测试,从而模拟整个 us-central1-a 可用区的中断。

以下命令会模拟一组节点在特定可用区中变得不可用。它会强制从指定可用区中的节点逐出 pod,并阻止在这些节点上重新安排 pod。由于无法安排新的 pod,因此系统会将新节点添加到集群。

此命令不会影响在 composer-system 命名空间中运行的工作负载。您可能会在命令输出中看到相关错误消息。这不会影响故障切换测试。所选可用区中存在的节点仍标记为不可调度。

如需在所选可用区中模拟集群可用区故障,请执行以下操作:

kubectl get nodes -o name -l "topology.gke.io/zone=ZONE" | \
xargs kubectl drain \
--ignore-daemonsets --delete-emptydir-data --force --disable-eviction

替换以下内容:

  • ZONE:您要在其中模拟集群可用区故障的可用区。

检查环境指标

模拟可用区服务中断期间的环境指标
图 1.模拟可用区中断期间的环境指标(点击可放大)
  1. 在 Google Cloud 控制台中,前往 环境 页面。

    转到“环境”

  2. 在环境列表中,点击您的环境名称。环境详情 页面会打开。

  3. 转到监控 标签页。

  4. 检查以下指标在故障切换操作期间是否为“绿色”,或者是否在最多几分钟内保持“红色”状态。

    • 环境运行状况
    • 调度程序检测信号
    • Web 服务器健康状况
    • 数据库健康状况
    • 活跃工作器数
    • 活跃调度器数
    • 活跃 Web 服务器数
    • 活跃触发器数

    请注意,模拟的中断标记为“集群维护操作”。

  5. 测试后,您无需执行任何其他操作即可将环境的集群恢复为可进行故障切换的状态。在测试期间,环境的集群会自动添加新节点,以替换受模拟中断影响的节点。

后续步骤