创建或删除新 GAME 实例时,PubSub 增加/减少 Cloud SQL 内存

Posted

技术标签:

【中文标题】创建或删除新 GAME 实例时,PubSub 增加/减少 Cloud SQL 内存【英文标题】:PubSub increase/decrease CloudSQL memory when a new GAE instance is created or removed 【发布时间】:2019-07-20 15:14:10 【问题描述】:

部署新的 GAE 实例时,如何创建发布/订阅主题以运行以下命令?

gcloud sql instances patch <instance_name> --cpu=2 --memory=8GB

当负载均衡器移除这个实例时,下面的命令呢?

gcloud sql instances patch <instance_name> --cpu=1 --memory=6GB

【问题讨论】:

当您提到“创建发布/订阅主题”时,您实际上是指“向发布/订阅主题发送消息”吗?此外,通过更改 CPU 或内存,您将面临几分钟的停机时间。你同意吗? @NahuelVarelaBlanco 我只是想在达到 x 个 GAE 实例时增加/减少 CPU 和内存。我认为发布/订阅主题是这样做的一种方式,你怎么看?关于停机时间,即使启用了 Cloud SQL 复制/高可用性? 【参考方案1】:

首先要获取给定服务的实例数量,您可以使用apps.services.versions.instances.list method 来实现它。之后,您应该使用 Cloud SQL API 使用 curl 来管理实例。

第二部分将自动执行此操作,为此我可以考虑每隔 X 时间使用Cloud Scheluder 来触发:

Pub/Sub 发布到主题,这将触发云 运行代码的函数。

定位将运行代码的 App 引擎 HTTP 处理程序

除此之外,请注意,如果您更改 Cloud SQL 实例,您可能会遇到几分钟的停机时间。您可以反过来创建故障转移,对其进行更改,然后执行故障转移。请记住,这将在故障转移启动期间产生额外费用,并且您将更改云实例的区域。

编辑High Availability:

高可用性为数据冗余创建了第二个实例。这意味着当主实例通过切换到具有相同数据的新实例而变得不健康时。

如docs中所述:

    主实例失败。

    主实例每秒写入系统数据库作为 心跳信号。如果未检测到多个心跳(并且 故障转移副本健康),故障转移已启动。如果发生这种情况 主实例无响应大约 60 秒或 主要区域发生中断。

    Cloud SQL 等待故障转移副本赶上主副本 实例的状态。

    此步骤花费的时间受复制延迟的影响。

    故障转移副本被提升为主实例角色。

    故障转移副本现在提供来自辅助区域的数据,并且 主实例名称和 IP 地址移动到旧的故障转移副本。 客户端应用程序重新连接到新的主实例,而无需 需要更改其连接字符串,因为主实例 IP 地址已自动移动。查看您的实例所在的区域 提供数据,请转到 GCP Console 中的概览页面。

    重新创建故障转移副本。

    新的故障转移副本保留传入的故障转移副本 IP 地址并在健康区域中自动重新创建。

    重新创建只读副本。

新的只读副本保留传入的只读副本 IP 地址,并且 在健康区域中自动重新创建。

【讨论】:

只是为了确定:启用高可用性,当我更改 SQL 实例的设置并重新启动时,会出现停机时间吗? 如果你更改了Master上的设置并重新启动,那么是的。如果您更改故障转移的设置,然后继续执行故障转移,那么停机时间将被最小化。

以上是关于创建或删除新 GAME 实例时,PubSub 增加/减少 Cloud SQL 内存的主要内容,如果未能解决你的问题,请参考以下文章

为啥我需要创建 Line 的新实例,而不是在 Kivy 中简单地更新或添加和删除它

Pubsub 推送拉取订阅

排空或清除 Google Cloud pubsub 主题的最佳做法 [关闭]

PubSub 和 gRPC PHP 的速度

使用扩展语法以创建对象的新实例时如何删除对象的属性?

创建或增加现有实例的 UpdateView