SQL数据库蓝/绿部署

时间:2018-08-21 20:49:22

标签: sql google-cloud-platform google-cloud-sql blue-green-deployment

我正在处理新项目的基础架构。它是标准的Laravel堆栈= PHP,SQL Server和Nginx。对于PHP + Nginx,我们使用的是Kubernetes集群-因此,扩展和蓝色/绿色部署都得到了解决。

关于数据库,我有点不确定。我们不想将Kubernetes用于SQL,因此当前的想法是使用Google Cloud SQL托管服务(竞争对手是否更青睐SQL的蓝色/绿色部署?)。问题是它可以在新旧版本的数据库节点之间同步数据吗?

假设我们有3个活动Pod和至少2个活动数据库节点(和负载平衡器)。

因此,标准部署应如下所示:

  1. 带有新代码的广告连播已创建。
  2. 使用当前数据创建新的数据库节点。
  3. 新Pod获得新的环境变量以连接到新数据库。
  4. 数据库迁移在新的数据库节点上运行。
  5. 如果新Pod通过了Pod,则运行状况检查,开始接收流量。
  6. 其中一个旧的Pod已脱机。

它应该继续进行此迭代,直到替换所有Pod和Database节点为止。

问题是这可以与数据库一起使用吗?想象一下,网站上有一个用户正在使用最后一个OLD数据库节点写入一些数据,当切换到NEW数据库节点时,直到升级最后一个数据库节点后,数据才存在。它们可以在后台同步吗? Google Cloud SQL托管服务是否提供该服务?

或者有完全不同且更好的解决方案吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

我不确定100%是否是您要的内容,但据我了解,Cloud SQL副本将是更好的解决方案。您可以拥有只读副本[1],它们是主实例的副本,并且具有不同的选项[2]

  

只读副本是主副本的副本,几乎实时地反映了对主实例的更改。您创建一个副本以减轻主服务器的读取请求或分析流量。您可以为一个主实例创建多个只读副本。

或故障转移副本[3],以防万一主服务器宕机,那里的数据继续可用。

  

如果为高可用性配置的实例出现故障或无法响应,则Cloud SQL会自动故障转移到故障转移副本,并且客户端仍然可以使用您的数据。这称为故障转移。

如果需要,可以将它们组合在一起。