我们有一个包含24个节点的CouchDB集群,默认集群设置为q=8和n=3,并且已经创建了100个数据库。如果我们再向集群中添加24个节点并开始创建新数据库,这些节点是否会在新节点中创建?CouchDB如何决定将新数据库放在哪里?
我们正在运行2.3.1中的所有节点
发布于 2019-04-23 10:04:20
默认情况下,CouchDB会为集群中所有节点上的数据库随机分配分片,因此新数据库在新节点和旧节点上都会有分片。它会将分片分布在尽可能多的节点上,并保证分片的两个副本永远不会在同一个节点上。
如果你想让分片只在新节点上托管(例如,因为旧的节点被填满了),你可以利用“放置”功能。涉及到两个步骤:
[cluster] placement配置设置,告知服务器在新区域中放置每个分片的3个副本:[cluster]
placement = new:3您还可以将此功能用于其他目的;例如,根据机架位置、可用区等将节点划分为多个区域,以确保副本具有最大程度的相互隔离。您可以在此处阅读有关设置的更多信息:
http://docs.couchdb.org/en/2.3.1/cluster/databases.html#placing-a-database-on-specific-nodes
https://stackoverflow.com/questions/55738282
复制相似问题