【发布时间】:2016-10-03 20:25:21
【问题描述】:
只读操作:
有没有办法拥有一个 MongoDB 副本集,但要在连接的盒子上创建 MongoDB 实例,成为被查询的 MongoDB?
我在 AWS 负载均衡器后面有三个 EC2 实例。
在每个 EC2 实例上运行 MongoDB,这是副本集的一部分。
我在 nodeJS 上有 express 端点,并按如下方式连接到副本集
mongodb.MongoClient.connect('mongodb://1.1.1.1,2.2.2.2,3.3.3.3.',
function (err, db)
{
if (err)
{
complete('{}');
}
else
{
我想在我的 MongoDB 副本集的所有三个实例之间平均分配查询负载,而不是默认将所有查询路由到定义我的主要 MongoDB 的 EC2 实例,因为这会破坏我的负载均衡器的点(这是为了均匀地平衡所有三个实例的查询负载)。
我的理解是,当连接到 MongoDB 副本集时,除非主实例关闭,否则始终选择主实例,因此每个辅助实例的目的只是作为备份。
在我的示例中,有些人会将此称为 HOT、COLD、COLD。因为有两个实例永远不会被使用。
我想让查询负载均匀分布的原因是我的设置可以是 WARM、WARM、WARM。
未来当用户数量增加时,为了保持最佳查询性能,我可以在负载均衡器后面添加更多 EC2 实例,以提高查询性能。
当数据增长时,单个实例太慢而无法按时返回数据,这时我会将每个实例分片到其他 EC2 实例中。
注意:我希望每个 EC2 实例的源代码都相同。我正在使用 git,我想轻松地将源代码推送和拉取到我的副本集中的每个实例。
【问题讨论】:
标签: node.js mongodb amazon-ec2 load-balancing replicaset