在 Openshift 上模拟 MongoDB 副本集

在 Openshift 上模拟 MongoDB 副本集

我目前正在做一个项目,我正在使用 openshift 作为 paas。基本上它满足我的所有需求。我有我的网站、我的静态数据和我的 api 网络服务器。

只有我的 api 网络服务器正在调用我的数据库

现在我的数据库出现了一个问题。我使用的是 mongodb。问题是,目前 openshift 中的副本集是技术预览版,不应在生产中使用,因为它使用的是临时存储。因此,如果所有节点都出现故障,所有数据都会丢失。

我们无法扩展 mongodb pod,因为它可能导致多次写入操作并产生实际问题。

所以我有一个想法,但如果您发现了什么错误,我希望知道。

概括地说,副本集由以下内容组成:一个主副本 => 这是唯一允许执行写入操作的副本;多个辅助副本 => 确保读取操作;任意 => 暂时我不关注它。

所以我的想法是模拟一个副本集(这需要我做一些调整): - 创建一个以 primary.db.example.com 为根的 mongodb 实例 - 创建一个以 secondary.db.example.com 为根的 mongodb 实例

两者都将指向同一个持久存储。

然后在我的api中:

  • 引用 primary.db.example.com 和 secondary.db.example.com 并相应地调用它们:
    • 如果我进行写入操作,我会调用:primary.db.example.com
    • 如果我进行读取操作我会调用 secondary.db.example.com

通过这种方式,我能够扩展辅助节点以进行读取操作。如果主节点出现故障,Openshift 将尝试重新创建 pod(例如在选举新的主节点时)

我知道这不是最好的解决方案,但这是我目前找到的唯一解决方案(除了创建外部副本,这意味着很多关于安全性、成本等的问题)

你觉得这个临时解决方案怎么样(等待真正适合生产的 Openshift 解决方案)

问候

相关内容