【发布时间】:2020-11-14 02:57:48
【问题描述】:
背景
我的应用程序使用分片 mongodb 和 elasticsearch statefulsets 在 kubernetes 集群中运行。我为我的应用程序中的部署组件设置了水平 pod 自动缩放器,一切正常。
问题
流量增加时会出现问题。我的服务器部署可以很好地扩展,但是 mongodb 分片和弹性搜索节点无法处理这么多的流量并限制整体响应时间。
简单的解决方案是为这些 statefulset 配置更多的分片、更多的副本。让我烦恼的是,每天 3-4 小时的流量高峰会发生,因此让所有这些男孩一整天都无所事事地坐着有点浪费。
我做了一些研究,看起来数据库一般不应该动态扩展/扩展,因为它会消耗大量的网络和磁盘 io 只是为了在它们之间进行复制。此外,在纵向扩展和缩减过程中还存在数据丢失和不一致的可能性。
问题
如果可能,在 mongodb、elasticsearch 和一般数据库中处理动态缩放的正确方法是什么?
如果没有,我可以做些什么来节省我的云费用,因为我们每天只需要数据库 pod 的最大功率。
【问题讨论】:
-
我想 MongoDB/Elasticsearch Operators 有扩展 Statefulsets 的机制。我没有这方面的经验,但我会查看这些运营商支持的自定义资源以确定它们提供的功能。
标签: mongodb elasticsearch kubernetes autoscaling horizontal-scaling