我正在寻找一种可靠,经济高效且安全的方法来自动缩放mongodb。我们有一个云应用程序,它在工作时间内达到峰值,然后在下班后几乎没有使用。我们还有一个自动唤醒并执行一些操作的批处理引擎。我找不到能自动缩放的好的解决方案(我不想在每个人都在星期六晚上睡觉时为3 T3-2XLarge付费)。我有以下想法,有人可以回顾一下并让我知道缺陷在哪里:
1)设置7个(或3个奇数个)ec2实例,每个实例都知道它的啄食顺序,我认为这些都是副本集和分片,但是我可以在这方面使用您的建议
2)让其中4个进入睡眠状态(将其关闭)。其余3个为活跃成员
3)检测每个负载(使用Ruby脚本或python脚本)
4)如果负载过多并且只有3个盒子,则再旋转2个,现在我们有5个。其中2个是根据啄食顺序旋转的,盒子3知道盒子4是谁,并且知道旋转上4并等待它完成
5)2个新盒子知道它们已经睡太久了,所以他们要求备份并还原数据库。这可能是方框3的一部分,知道方框4完成启动的时间,也许它会备份并将备份注册到s3或dropbox
6)一旦恢复,新的盒子就会在群集中注册(它们以前已经注册过,只是被视为已经死了一段时间),所以“注册”是错误的词汇
7)通过从集群中注销自己并通过脚本自行调整大小来对原始3个文件进行逐一调整。
8)在调整所有3个的大小并同步之后,杀死2个临时的
我最初说的是7,这只是个主意,也许集群知道如何垂直和水平缩放自己。我遇到的麻烦是如何处理备份和还原,以及如何将集群自动添加和删除,以及mongo是否支持(例如7个),其中4个会长时间失效。任何人都有任何想法,或者如果有人已经做过,您能给我一个正确的方向吗?
谢谢, 凯文