2

ノード データベースに PUT を送信するだけで、4 つのノードを持つ BigCouch クラスターを作成しました。

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}]}

それを修正する方法はありますか?

4

1 に答える 1

4

ノードのデータベースはcouchdbデータベースであるため、ドキュメントを更新または削除するには現在のリビジョンを渡す必要があります。

シャードの移動方法に関する以前の回答を参照してください:シャードをあるビッグカウチ サーバーから別のサーバーに移動する (バランスを取るため)

于 2012-02-10T18:56:40.370 に答える