这个问题可能看起来很荒谬,但在我看来,“是”会有点疯狂。
MongoDB 建议拥有 3 台机器的复制集。因此,如果数据库可以在 1 台计算机上运行,我需要 3 台机器,如果明天我需要分片并需要 2 台机器,我实际上需要 6 台,对吗?
或者有什么更聪明的东西可以通过 mongoDB 免费提供?(使用像汉明这样的编码理论,......我们需要的额外位数与总位数的大小不是线性的)
如果我说的不清楚,请不要犹豫,让我重新制定
谢谢提前为您解答,
托马斯
1 回答
因此,有一些非常好的文档,这是在物理实例分离方面推荐的集群设置。应该(至少)分别考虑两件事。一种是复制,对此请参阅此文档:http ://docs.mongodb.org/manual/core/replica-set-members/
这意味着您必须在副本集中至少有两个数据节点(由于 HA),并且可以让一个不持有数据的仲裁器仅参与选举,如上面链接的文档中所述。您需要奇数个 setmembers,因为主节点必须由副本集中的多数票选出。
另一方面是分片。分片需要一些额外的元数据维护层,这些维护层是通过额外的过程来实现的,这些过程是配置服务器和 mongos 路由器。对于分片生产集群,请参见:http ://docs.mongodb.org/manual/core/sharded-cluster-architectures-production/ 。在此设置中,三个配置服务器必须位于不同的实例上。此外,两个 mongos 进程不能驻留在同一个实例上。
所以对于最小对齐。必须考虑:
- 您不能并置数据节点(每个分片中的每两个数据节点必须位于单独的实例上)
- 属于特定分片副本集的仲裁节点必须位于与两个数据节点分开的实例上
- 三个配置服务器应该驻留在彼此分离的实例上
- 最小的两个 mongos 进程必须驻留在彼此分离的节点上
- 但是数据节点不能并置,配置服务器和 mongos 进程可以与数据节点位于相同的实例上。
所以理论上,一个分片集群可以对齐一个分片集群,而不会在 4 个具有两个分片的实例上停止任何建议,如下所示:
实例 1:datanode 副本集 1、configserver 1、仲裁器副本集 2
实例 2:datanode 副本集 1、configserver 2、mongos 1
实例 3:datanode 副本集 2、configserver 3、仲裁器副本集 1
实例 4:datanode 副本集 2,mongos 2
其中副本集 1 代表第一个分片,副本集 2 代表第二个分片。
datanode 不是一个一般用于 mongoDB 的术语,只是我很可能用这个名称来处理那些处理真实数据的 mongod 进程,因此(副本集中的主节点和次节点)。就像旁注一样,我不会这样做。只需为配置服务器启动微实例并将 mongos 进程保留在应用程序服务器上。