根据CouchDB doc,为了将节点放入区域(类似于BigCouch),我们需要修改_nodes
数据库,添加"zone": "metro-dc-a"
之类的字段,使用{ {1}}端点,如果我理解得好的话。我没有找到任何关于如何修改现有数据库属性的提示。有没有办法做到这一点?
答案 0 :(得分:1)
可能我误解了CouchDB zone documentation。我必须更新node
数据库中的每个_nodes
文档,因此我可以在每个文档上使用PUT,添加"zone":"value"
属性。
答案 1 :(得分:0)
每个节点必须标记有zone
属性,并更新:5986/_nodes
数据库中的节点文档,并添加以下格式的键值对:
“区域”:“ {zone-name}”
首先,从集群成员资格中获取节点信息。
$ curl -s -X GET "http://localhost:5984/_membership" --user <admin-user>
从集群中获取节点的文档。
$ curl -X GET http://localhost:5986/_nodes/couchdb@192.168.1.10 --user <admin-user>
定义群集中所有节点的区域(例如:metro-dc-a
)。
$ curl -X PUT http://localhost:5986/_nodes/couchdb@192.168.1.10 --user <admin-user> -d '{
"_id": "couchdb@192.168.1.10",
"_rev": "1-967a00dff5e02add41819138abb3284d",
"zone": "metro-dc-a"
}'
最后,在每个节点的local.ini配置中,定义一个一致的群集范围设置,例如:
[集群]位置=:2,:1
CouchDB将确保将分区的两个副本托管在区域属性设置为metro-dc-a
的节点上,并将一个副本托管在区域属性设置为metro-dc-b
的新副本上。 / p>
https://docs.couchdb.org/en/2.3.1/cluster/sharding.html#specifying-database-placement