Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1
本页介绍了如何针对高弹性环境执行数据库和集群故障切换测试。
环境的故障切换测试会模拟数据中心内某个可用区的完全中断。在这种情况下,集群的地区性中断和数据库的地区性中断可能会同时发生。通过执行这两项故障切换测试,您可以监控高弹性环境如何执行故障切换,并检查这会如何影响您的 DAG 和任务。
准备工作
如需执行故障切换测试,您的 Google 账号必须拥有以下角色和权限:
composer.environments.update
权限。如需查看具有此权限的角色列表,请参阅使用 IAM 进行访问权限控制。Kubernetes Engine Cluster Admin (
roles/container.clusterAdmin
) 角色,以便在环境的集群上运行kubectl
命令。或者,您也可以直接在 GKE 中预配 Kubernetes RBAC 角色。
如果您使用授权网络,则必须从可以访问 GKE 集群控制平面端点的机器运行
kubectl
命令。根据您设置对环境的控制平面端点的访问权限的方式,您可以使用多种选项。如需了解详情,请参阅在专用 IP 环境中运行命令。
检查环境是否正常运行
请务必仅在健康的环境中执行故障切换测试。如需检查环境是否运行正常,请执行以下操作:
在 Google Cloud 控制台中,前往环境页面。
在环境列表中,点击您的环境名称。环境详情页面会打开。
转到监控标签页。
确保所有健康指标均为绿色。
执行数据库故障切换测试
您可以通过使用 Google Cloud CLI 命令触发数据库故障切换测试来模拟地区级中断。例如,您可能希望通过此操作来衡量环境的数据库切换到另一可用区所需的时间。
如需为您的环境执行数据库故障切换测试,请执行以下操作:
确保环境运行状况良好。
获取环境数据库的主可用区:
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
启动数据库故障切换测试:
gcloud composer environments database-failover \ ENVIRONMENT_NAME \ --location LOCATION
替换以下内容:
ENVIRONMENT_NAME
:Cloud Composer 环境的名称。LOCATION
:环境所在的区域。
示例:
gcloud composer environments database-failover \ example-environment \ --location us-central1
等待数据库故障切换测试完成。此过程最多可能需要 3 分钟。
检查环境数据库的主区域是否已更改:
gcloud composer environments fetch-database-properties \ ENVIRONMENT_NAME \ --location LOCATION
检查环境的健康指标,确保环境运行状况良好。
当可用于故障切换的数据库 (
composer.googleapis.com/environment/database/available_for_failover
) 环境指标变为True
时,您环境的数据库即可用于另一次故障切换。如需详细了解如何在 Cloud Monitoring 中查看环境的指标,请参阅监控环境。
执行环境的集群故障切换测试
您可以为环境的集群执行故障切换测试,以模拟可用区中断。例如,您可能希望通过此操作来衡量环境切换到另一可用区所需的时间。
检查环境是否正常运行
在开始测试之前,请确保环境运行正常。
为环境的集群配置凭据
如需获取集群凭据,请执行以下操作:
在 Google Cloud 控制台中,前往环境页面。
在环境列表中,点击您的环境名称。环境详情页面会打开。
转到环境配置标签页。
点击查看集群详细信息。
点击连接。
复制并执行显示的 Google Cloud CLI 命令。
例如:
gcloud container clusters get-credentials \ us-central1-exam-db23ee12-gke \ --region us-central1 \ --project example-project
检查环境的集群
检查工作负载在环境的集群中运行的可用区和节点。 您稍后将使用此信息来模拟可用区服务中断。您还可以在执行故障切换测试时再次运行这些命令,以查看环境的集群如何执行故障切换。
检查节点和可用区:
kubectl get nodes \ -o=custom-columns=NAME:.metadata.name,NODE:.metadata.labels.topology\\.gke\\.io/zone
检查 pod:
kubectl get pods --all-namespaces \ -o=custom-columns=NAME:.metadata.name,STATUS:.status.phase,NODE:.spec.nodeName \ --field-selector metadata.namespace!=kube-system
查看有关 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
:您要模拟集群可用区故障的可用区。
查看环境指标

在 Google Cloud 控制台中,前往环境页面。
在环境列表中,点击您的环境名称。环境详情页面会打开。
转到监控标签页。
检查以下指标在故障切换操作期间是否为“绿色”,或者保持“红色”状态的时间是否最多为几分钟。
- 环境运行状况
- 调度程序检测信号
- Web 服务器健康状况
- 数据库健康状况
- 活跃工作器数
- 活跃调度器数
- 活跃 Web 服务器数
- 有效触发器
请注意,模拟中断标记为“集群维护操作”。
测试完成后,您无需执行任何其他操作即可使环境的集群恢复到故障切换就绪状态。在测试期间,环境的集群会自动添加新节点来替换受模拟中断影响的节点。