【问题标题】:SQL Database Blue / Green deploymentsSQL 数据库蓝/绿部署
【发布时间】:2019-01-28 02:29:43
【问题描述】:

我正在处理一个新项目的基础架构。它是一个标准的 Laravel 堆栈 = PHP、SQL 服务器和 Nginx。对于 PHP + Nginx 部分,我们使用的是 Kubernetes 集群 - 因此可以进行扩展和蓝/绿部署。

说到数据库,我有点不确定。我们不想为 SQL 使用 Kubernetes,所以目前的想法是使用 Google Cloud SQL 托管服务(竞争对手是否更适合 SQL 的蓝/绿部署?)。问题是它可以在新旧版本的数据库节点之间同步数据吗?

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

所以标准部署应该是这样的:

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

它应该继续执行此迭代,直到所有 Pod 和数据库节点都被替换。

问题是这可以与数据库一起使用吗?假设网站上有一个用户正在使用最后一个 OLD 数据库节点写入一些数据,当切换到 NEW 数据库节点时,数据根本不存在,直到最后一个数据库节点升级。它们可以在幕后同步吗? Google Cloud SQL 托管服务是否提供此功能?

或者对于这个问题有完全不同的更好的解决方案吗?

谢谢!

【问题讨论】:

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


    【解决方案1】:

    我不能 100% 确定这是否是您正在寻找的,但据我了解,Cloud SQL 副本将是一个更好的解决方案。您可以拥有只读副本[1],它是主实例的副本,并且具有不同的选项[2]

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

    或故障转移副本[3],以防万一主服务器出现故障,数据仍然在那里可用。

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

    如果需要,您可以将它们组合起来。

    【讨论】:

      猜你喜欢
      • 2019-01-01
      • 2021-07-18
      • 1970-01-01
      • 2017-07-10
      • 2017-03-16
      • 2021-09-18
      • 1970-01-01
      • 1970-01-01
      • 2018-10-21
      相关资源
      最近更新 更多