这个问题可能看似荒谬,但在我看来,“是”会有点疯狂
MongoDB建议拥有3台机器的复制集。因此,如果数据库可以站在一台计算机上,我需要3台机器,如果明天我需要分片并需要2台机器,我实际需要6台,对吧?
或者是否有更聪明的东西可以用mongoDB免费提供? (使用像Hamming这样的编码理论,......我们需要的额外位数在总位数的大小上不是线性的)
如果我说的不清楚,请不要犹豫要求我重新制定
提前感谢您的回答,
托马斯
答案 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进程也不能驻留在同一个实例上。
所以对于最小的对齐。必须考虑:
所以从理论上讲,人们可以对齐一个分片群集,而不会在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进程。