我创建了具有4个节点的BigCouch集群,只需将PUT发送到节点数据库:
curl -X PUT http://bigcouch-a.example.com:5986/nodes/bigcouch@bigcouch-a.example.com -d {}
curl -X PUT http://bigcouch-a.example.com:5986/nodes/bigcouch@bigcouch-b.example.com -d {}
curl -X PUT http://bigcouch-a.example.com:5986/nodes/bigcouch@bigcouch-c.example.com -d {}
curl -X PUT http://bigcouch-a.example.com:5986/nodes/bigcouch@bigcouch-d.example.com -d {}
所有节点都已正确注册,将GET发送到成员资格返回所有4个节点:
{"all_nodes":[
"bigcouch@bigcouch-a.example.com",
"bigcouch@bigcouch-b.example.com",
"bigcouch@bigcouch-c.example.com",
"bigcouch@bigcouch-d.example.com"]
"cluster_nodes":[
"bigcouch@bigcouch-a.example.com",
"bigcouch@bigcouch-b.example.com",
"bigcouch@bigcouch-c.example.com",
"bigcouch@bigcouch-d.example.com"]
}
问题是:如何删除节点?
我尝试将DELETE发送到节点数据库
curl -X DELETE http://bigcouch-a.example.com:5986/nodes/bigcouch@bigcouch-d.example.com
但是我收到了一个错误:
{"error":"conflict", "reason":"Document update conflict."}
一旦我停止了节点d,我的会员资格就会恢复:
{"all_nodes":[
"bigcouch@bigcouch-a.example.com",
"bigcouch@bigcouch-b.example.com",
"bigcouch@bigcouch-c.example.com"]
"cluster_nodes":[
"bigcouch@bigcouch-a.example.com",
"bigcouch@bigcouch-b.example.com",
"bigcouch@bigcouch-c.example.com",
"bigcouch@bigcouch-d.example.com"]
}
所以节点d
从"all_nodes"
消失,但仍然作为"cluster_nodes
成员存在。
我无法在此状态下创建任何新数据库。每次收到消息时:
could not load validation funs {function_clause,
[{lists, flatmap,
[#Fun<couch_db.36.90395586>,
{nodedown, <<"progress not possible">>}]},
{couch_db, '-load_validation_funs/1-fun-1-', 1}]}
任何想法如何解决?
答案 0 :(得分:4)
节点db是couchdb数据库,因此您需要传递当前版本以更新或删除文档。
请参阅我之前关于如何移动分片的答案:moving a shard from one bigcouch server to another (for balancing)