【发布时间】:2019-01-28 02:29:43
【问题描述】:
我正在处理一个新项目的基础架构。它是一个标准的 Laravel 堆栈 = PHP、SQL 服务器和 Nginx。对于 PHP + Nginx 部分,我们使用的是 Kubernetes 集群 - 因此可以进行扩展和蓝/绿部署。
说到数据库,我有点不确定。我们不想为 SQL 使用 Kubernetes,所以目前的想法是使用 Google Cloud SQL 托管服务(竞争对手是否更适合 SQL 的蓝/绿部署?)。问题是它可以在新旧版本的数据库节点之间同步数据吗?
假设我们有 3 个活动 Pod 和至少 2 个活动数据库节点(和一个负载均衡器)。
所以标准部署应该是这样的:
- 使用新代码创建 Pod。
- 使用当前数据创建新的数据库节点。
- 新 Pod 获取新环境变量以连接到新数据库。
- 数据库迁移在新的数据库节点上运行。
- 运行新 Pod 的运行状况检查,如果通过,则 Pod 开始接收流量。
- 其中一个旧 Pod 已脱机。
它应该继续执行此迭代,直到所有 Pod 和数据库节点都被替换。
问题是这可以与数据库一起使用吗?假设网站上有一个用户正在使用最后一个 OLD 数据库节点写入一些数据,当切换到 NEW 数据库节点时,数据根本不存在,直到最后一个数据库节点升级。它们可以在幕后同步吗? Google Cloud SQL 托管服务是否提供此功能?
或者对于这个问题有完全不同的更好的解决方案吗?
谢谢!
【问题讨论】:
标签: sql google-cloud-platform google-cloud-sql blue-green-deployment