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

2023-11-29

Overview

我在 App Engine 上有一个具有自定义域和 Google 提供的 SSL 证书的实例,但现在我需要在其前面放置一个 Google Cloud Load Balancer。

我按照此处的说明进行操作(进行了调整以针对 App Engine 而不是 Cloud Run 执行此操作):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,文档对此说:

该网域的 DNS 记录无法解析为 Google Cloud 负载均衡器的 IP 地址。要解决此问题,请更新 DNS A/AAAA 记录以指向负载均衡器的 IP 地址。

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

这些文档说的是PROVISIONING:

Google Cloud 正在与证书颁发机构合作颁发 证书。配置 Google 管理的证书可能需要花费一些时间 至 60 分钟

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

我可以做些什么来避免/最大限度地减少这一小时的停机时间?

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

如果我能在更新 DNS 记录以指向负载均衡器的 IP 之前获得 SSL 证书,似乎就好了,但更新 DNS 似乎是 SSL 证书启动的先决条件。

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

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


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

如果您在创建资源记录之前尝试解析它,则 DNS 服务器将返回NXDOMAIN,这被称为负面反应。否定响应由 DNS 解析器缓存。

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

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

首先创建/更新DNS资源记录

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

刷新公共 Google DNS 服务器

如果您有过时(已更改)且 TTL 值较长的 DNS 资源记录,请刷新 Google 公共 DNS 服务器。此操作不是即时的,计划等待五分钟才能完成操作。

谷歌:刷新缓存

Cloudflare:刷新缓存

我可以做些什么来避免/最大限度地减少这一小时的停机时间?

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

Google 负载均衡器在进行更改后需要时间进行更新。该时间各不相同,但通常为五到十分钟。这次是在证书配置之外。您的网站在此期间可能不可用。

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐

  • 如何在谷歌应用程序脚本中模拟搜索和替换范围

    我想自动替换 Google 表格中的一些文本 我在执行 CTRL H 搜索和替换时使用了记录宏功能 但没有记录任何内容 然后我尝试了这段代码 spreadsheet getRange B B replace oldText newText
  • 查找联系人组的帐户性质?

    我正在开发一个应用程序 其中需要找到联系人组的性质 即是谷歌组 电话组还是SIM组 如何找到它 请建议我该怎么做 提前致谢 下面的代码打印联系人姓名和类型 我还没有优化它 它会打印多条记录 但我想你会知道该怎么做 package com e
  • 在表结构上添加一个where-对象?

    用 label 重命名标题 我想过滤最后一个 SpaceLeft 但它不能正常工作 例如 Get WmiObject win32 logicaldisk ComputerName sfuslt167 Filter drivetype 3 F
  • 如何使用 CSS 使绝对 div 水平居中?

    我有一个 div 并希望它水平居中 尽管我给了它margin 0 auto 它不是居中的 container position absolute top 15px z index 2 width 40 max width 960px min
  • 如何使用 GameKit 在 iPhone 蓝牙中区分主机和客户端

    我使用 GameKit 框架制作了一款多人游戏 其中 2 个 iPhone iPod 可以通过蓝牙相互连接并玩 我正在考虑一种方法来选择哪个设备可以先播放 因此 合理的解决方案是选择连接的主机 GKSession 中是否有服务器和客户端 他
  • 在 Create React App 实用程序中启用 CORS

    我需要使用CORSReact 中的节点模块使用以下命令创建create react app公用事业 由于它是一个实用程序 我无法在内部进行调整和注入CORS进入预配置的EXPRESS module 我们怎样才能做到这一点 如果你需要这个来进
  • Nil 不能赋值给 ()->() 类型?

    这是一个类中的函数 可让您进行双击和单击手势 它在 Swift 2 3 中工作正常 但转换到 Swift 3 后会抛出一些错误 我一生都无法理解 弄清楚 我评论了它们发生的地方 UIShortTapGestureRecognizer swi
  • public_html上面存储和读取图片

    我正在尝试保护我的 PHP 图像上传脚本 我必须跨越的最后一个障碍是使用户无法直接执行图像 但服务器仍然可以在网页中提供它们 我尝试更改文件夹的所有权和权限但无济于事 因此我尝试存储 public html 上面的图像并将它们显示在存储在
  • Phonegap HTML5 / Android 应用程序 - Iframe 高度问题

    我们构建了一个 HTML5 应用程序 可以动态加载 iFrame 来显示外部内容 这个解决方案一直运行良好 直到 android 4 0 发布 这似乎改变了 iframe 渲染的工作方式 它似乎无法再检测高度 它显示一个小的可滚动框 其中包
  • 多个 CMake 目标的 target_compile_definitions?

    I ve been told做诸如设置之类的事情是不好的做法CFLAGS直接在 CMake 中 相反 我应该使用target compile definitions 命令 好的 但是 如果我想对多个 独立 目标使用相似 相同的定义怎么办 我
  • 在 C# 中格式化 Excel 中多行的最快方法

    我有一个巨大的数据集 我想将其写入 Excel 并且需要根据业务逻辑对行执行条件格式设置 因此 对于数据插入部分 我使用数据数组来填充 Excel 并且工作速度非常快 但是 在格式化行时 我发现性能严重下降 仅进行格式化就几乎花费了一倍以上
  • 我是否需要最新版本的 Xcode 才能将应用程序提交到应用程序商店? [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 我目前在 Snow Leopard 10 6 6 上运行 Xcode 版本 3 2 5 这意味着我可以在模拟器上运行 iOS 4 2 及以上版本的应用程序 如果我使用过时版本的 Xc
  • 使用 IRdisplayl::display_html 在 Jupyter 笔记本中显示观星仪输出时出错

    m lt capture output stargazer lm enroll lm grades lm score digits 3 header FALSE type html se rob se title Linear Panel
  • 如何为网络应用程序创建 exe?

    我使用 Visual studio 2012 ASP Net 4 5 C 和 Web 服务开发了一个 Web 应用程序 两者都放在一个解决方案中 我需要将我的解决方案转换为 EXE 文件 为我的 Web 应用程序创建 EXE 我真正需要的是
  • 如何显式地从某些特征调用函数?

    我想知道如何从特征调用函数 前提是有多个特征具有相同的函数名称 问题出在33行或者tr1 tr v 我该如何表达我想要调用的特质 struct V2D x i32 y i32 impl V2D fn new x i32 y i32 gt V
  • 如何在Python中让用户输入真/假?

    我是蟒蛇新手 我想让程序询问 is Johnny hungry True or false 用户输入 True然后打印是 Johnny needs to eat 用户输入错误然后打印 Johnny is full 我知道添加一个我输入的 i
  • 合并哈希数组中的重复项

    我有一个 ruby 中的哈希数组 name one tags xxx name two tags yyy name one tags zzz 我正在寻找任何干净的红宝石解决方案 这将使它能够简单地合并该数组中的所有重复项 通过合并我的意思是
  • 防止/捕获“IllegalArgumentException:参数必须是此视图的后代”错误

    我有一个 ListView 里面有一些可聚焦的组件 主要是EditTexts 是的 我知道这并不完全推荐 但总的来说 几乎一切都工作正常 并且焦点集中在它必须去的地方 我必须编码一些调整 不管怎样 我的问题是 当用手指滚动列表然后突然使用轨
  • 为什么 url 在浏览器中有效但不能使用 requests get 方法

    在测试时 我刚刚发现 这 url http wi312 rockdizfile com d uclf2kr7fp4r2ge47pcuihdpky2chcsjur5nrds2hx53f26qgxnrktew Kimbra 20 20Love
  • 迁移 App Engine 使用 Google Cloud Load Balancer 导致约 1 小时的停机时间

    Overview 我在 App Engine 上有一个具有自定义域和 Google 提供的 SSL 证书的实例 但现在我需要在其前面放置一个 Google Cloud Load Balancer 我按照此处的说明进行操作 进行了调整以针对