为了在亚马逊Ec2中部署服务器,我希望在Ec2实例本身中拥有mongodb主数据库,平均而言,我将有大约5-6个Ec2实例并行运行,这些实例由亚马逊自动缩放组进行缩放。
由于数据库更新频繁,且所有实例都处于弹性负载均衡器下,因此很难预测Ec2的哪个用户数据在哪个数据库中。通过遵循这种方法,我是否可以确保mongodb中的数据在各个实例之间的一致性?如果这不是好办法,请提出其他办法。
发布于 2015-04-30 16:47:01
使用Amazonautos标时,将从根AMI映像(例如,带有空数据库)创建新的EC2实例。
当数据被添加到数据库中时,该数据不会被同步回AMI映像。因此,当由于缩放事件而启动第二个EC2实例时,新的EC2实例将拥有自己的空白数据库,因为它将基于相同的根AMI映像(与空白数据库一起)。
这两个数据库不会相互了解,也不会发生同步。而且,在任何时候,任何EC2实例都可能由于缩小事件而被删除。因此,任何有关该实例的数据都可能丢失。
将web层与数据库层分开:使用自动标度来缩放web层,但不要对数据层使用自动标度。
MongoDB有自己的集群形式,用于负载平衡和高可用性。使用它,而不是滚动自己使用自动标尺。
发布于 2015-04-30 15:55:57
将web服务器与数据库服务器耦合起来并不是一种标准做法。以下是我的建议。
在web服务器和mongo实例上实现负载平衡,因此为了便于讨论,您将拥有4个web服务器和4个mongo服务器。
为了在您的mongo db服务器上实现负载平衡,如果您希望使用主从层,那么每个mongo db服务器既是主服务器也是从服务器(这样所有实例都具有同步的数据),或者您可以查看切分。
https://stackoverflow.com/questions/29971940
复制相似问题