迁移 App Engine 使用 Google Cloud Load Balancer 导致约 1 小时的停机时间

Migrating App Engine use Google Cloud Load Balancer cause ~1hr of downtime

概览

我在 App Engine 上有一个实例,带有 Google 提供的自定义域和 SSL 证书,但现在我需要在它前面放置一个 Google 云负载均衡器。

我按照此处的说明进行操作(针对 App Engine 而不是 Cloud 运行 进行了调整): https://cloud.google.com/load-balancing/docs/https/setting-up-https-serverless

我先执行了该指南中的步骤,然后在 GoDaddy 中更新我的 DNS 记录以指向负载均衡器的 IP。

问题

问题是,在我更新我的 GoDaddy DNS 记录以指向负载均衡器的 IP 之后,我花了将近一个小时才再次可以访问。尝试通过浏览器或代码访问网站时,出现 SSL 错误。

配置 SSL 证书

核心问题似乎是负载均衡器的 SSL 证书卡在 PROVISIONING 状态,域卡在 FAILED_NOT_VISIBLE 状态,文档说:

The domain's DNS record doesn't resolve to the IP address of the Google Cloud load balancer. To resolve this issue, update the DNS A/AAAA records to point to your load balancer's IP address.

https://cloud.google.com/load-balancing/docs/ssl-certificates/troubleshooting#domain-status

这些文档是这样说的 PROVISIONING:

Google Cloud is working with the Certificate Authority to issue the certificate. Provisioning a Google-managed certificate might take up to 60 minutes

https://cloud.google.com/load-balancing/docs/ssl-certificates/google-managed-certs#verify-target-proxy

对于avoid/minimize这一小时的停机时间,我能做些什么吗?

我仍然需要对我的生产项目执行此操作。也许如果我改变步骤的顺序(甚至在创建 SSL 证书之前将 DNS 记录指向 IP)?

如果我能在更新 DNS 记录以指向负载均衡器的 IP 之前提供 SSL 证书似乎没问题,但更新 DNS 似乎是 SSL 证书甚至开始。

这很有趣,因为我已经通过 App Engine 自定义域设置从 google 获得了这些域的 SSL 证书。我希望这些可以重新用于负载均衡器。

https://cloud.google.com/appengine/docs/standard/python/securing-custom-domains-with-ssl#verify_a_managed_certificate_has_been_provisioned

您是创建了新的 DNS 资源记录还是更改了现有的?

如果您在创建资源记录之前尝试解析它,DNS 服务器将 return NXDOMAIN,这称为 否定响应。 DNS 解析器缓存否定响应。

如果您更改了现有资源记录,TTL 是多少?

DNS 解析器使用各种策略来决定将 DNS 资源记录缓存多长时间。一个因素是 TTL。

Create/update先记录DNS资源

通过首先创建 DNS 资源记录,NXDOMAIN 将不会在验证尝试时被 returned,这将减少您必须等待清除否定响应缓存的时间。您所在域的权威 DNS 服务器通常有两到四台服务器。创建新的资源记录时,服务器需要时间来创建 SLAVES 并将其与 MASTER 同步。这个时间通常只有一两分钟。

刷新 public Google DNS 服务器

如果您有具有长 TTL 值的陈旧(已更改)DNS 资源记录,请刷新 Google public DNS 服务器。此操作不是即时的,计划等待五分钟以便操作完成。

Google: Flush Cache

Cloudflare: Flush Cache

对于avoid/minimize这一小时的停机时间,我能做些什么吗?

您不能直接更改配置时间。如果您遵循以上几点,配置时间将会减少。根据我的经验,SSL 证书配置通常需要十分钟。

Google 负载均衡器在进行更改后需要时间进行更新。这个时间会有所不同,但通常是五到十分钟。这次是在证书供应之外的时间。您的网站在此期间可能不可用。

DNS 服务器更改不是即时的。您域的 DNS 服务器需要时间来更新,Internet 上的 DNS 解析器缓存资源记录、客户端系统缓存记录等。在更改 DNS 服务器之前制定计划。更改可能需要 24 到 72 小时才能在全球传播。