最近,我们的一个Google应用程序在我们的数据库服务器(托管在Aiven中)的计划维护过程中失败了。
在计划维护期间,通过更新DNS记录,DB服务器将无法转移到替换服务器。这应该是即时的,但是我们发现在GAE中运行的节点应用程序在几分钟内由于连接故障而崩溃。
连接错误被视为一个硬错误,因此节点应用程序退出,然后通过再次运行npm立即替换为一个新进程。但是,这个过程也失败了,因为它也无法连接等等,直到GAE决定服务器是一个lame鸭子并替换它。
当实例被替换时,连接问题似乎已经解决,但我不清楚为什么要花这么长时间才能解决。
我怀疑旧数据库主机名可能已被缓存,因此它无法连接到旧IP。
作为一项工作,我想知道是否有可能(从实例中)刷新google应用程序引擎实例上的DNS缓存?
我已经查找了有关App如何解析DNS的文档,但最终会在有关设置自定义或内部DNS的页面上结束。
总之:我们运行在GAE上的节点应用程序连接到外部托管的数据库,并通过DNS查找来标识主机。
因此,我需要刷新的缓存是一个缓存查找的公共DNS记录不是托管在谷歌,而是由一个GAE应用程序请求。
ie:
Node GAE App -> { Public Internet } -> Database发布于 2020-06-16 01:33:09
我认为解决方案应该是稍微修改一下体系结构。
作为一个PaaS,您没有太多的访问GAE来运行一些管理操作。
知道了这一点,我建议对这些架构进行更改:
或
或
https://serverfault.com/questions/1021442
复制相似问题