我们需要在amazon ec2上使用3 * N个实例来托管N mongodb碎片吗?

时间:2013-08-26 07:22:16

标签: mongodb amazon-ec2

这个问题可能看似荒谬,但在我看来,“是”会有点疯狂 MongoDB建议拥有3台机器的复制集。因此,如果数据库可以站在一台计算机上,我需要3台机器,如果明天我需要分片并需要2台机器,我实际需要6台,对吧? 或者是否有更聪明的东西可以用mongoDB免费提供? (使用像Hamming这样的编码理论,......我们需要的额外位数在总位数的大小上不是线性的)
如果我说的不清楚,请不要犹豫要求我重新制定 提前感谢您的回答,
托马斯

1 个答案:

答案 0 :(得分:2)

因此,在phisycal实例分离方面,有一些非常好的文档是推荐的集群设置。应该分别考虑两件事(至少)。一个是复制,对于这个,请参阅此文档:http://docs.mongodb.org/manual/core/replica-set-members/

这意味着您必须在复制集中至少拥有两个数据节点(由于HA),并且可以有一个arbiter不保留数据只参与选举,如上面链接的文档中所述。您需要奇数个setmembers,因为主要必须由replicaset中的多数选举。

另一方面是分片。分片需要一些额外的元数据维护层,这是通过附加进程实现的,这些是配置服务器和mongos路由器。对于分片生产群集,请参阅:http://docs.mongodb.org/manual/core/sharded-cluster-architectures-production/。在此设置中,三个配置服务器必须位于分离的实例上。两个mongos进程也不能驻留在同一个实例上。

所以对于最小的对齐。必须考虑:

  • 您不能并置数据节点(每个分片中的每两个数据节点必须位于一个单独的实例上)
  • 属于特定分片复制集的仲裁节点必须位于两个数据节点的分离实例上
  • 这三个配置服务器应位于彼此分开的实例上
  • 最少两个mongos进程必须驻留在彼此分离的节点上
  • 但是,无法并置数据节点,配置服务器和mongos进程可以与数据节点位于相同的实例上。

所以从理论上讲,人们可以对齐一个分片群集,而不会在4个实例上使用两个分片制作任何建议:


实例1: datanode replicaset 1,configserver 1,arbiter replicaset 2


实例2: datanode replicaset 1,configserver 2,mongos 1


实例3: datanode replicaset 2,configserver 3,arbiter replicaset 1


实例4: datanode replicaset 2,mongos 2

其中replicaset 1代表第一个分片,replicaset 2代表第二个分片。

datanode不是一般用于mongoDB的术语,我可能会用这个名称来处理正在处理实际数据的那些mongod进程,所以(复制密码中的Primaries和secondaries)。 正如旁注我不会这样做。只需启动配置服务器的微实例,并在应用服务器上保留mongos进程。