如何在CouchDB中设置节点区域

时间:2018-01-25 11:20:01

标签: couchdb cluster-computing

根据CouchDB doc,为了将节点放入区域(类似于BigCouch),我们需要修改_nodes数据库,添加"zone": "metro-dc-a"之类的字段,使用{ {1}}端点,如果我理解得好的话。我没有找到任何关于如何修改现有数据库属性的提示。有没有办法做到这一点?

2 个答案:

答案 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