You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@couchdb.apache.org by "Sean Lang (JIRA)" <ji...@apache.org> on 2017/03/08 03:51:37 UTC

[jira] [Created] (COUCHDB-3320) confusion with adding node to existing cluster

Sean Lang created COUCHDB-3320:
----------------------------------

             Summary: confusion with adding node to existing cluster
                 Key: COUCHDB-3320
                 URL: https://issues.apache.org/jira/browse/COUCHDB-3320
             Project: CouchDB
          Issue Type: Question
            Reporter: Sean Lang


I've got a cluster running on 2 separate servers, and want to add a 3rd server. I read the docs at http://docs.couchdb.org/en/2.0.0/cluster/nodes.html and at the start my _membership endpoint looked like this on both nodes:

```
$ curl -X GET "http://0.0.0.0:5984/_membership" --user root
{"all_nodes":["couchdb@192.168.1.202","couchdb@192.168.1.214"],"cluster_nodes":["couchdb@192.168.1.202","couchdb@192.168.1.214"]}
```

And the server I'm trying to add is at `192.168.1.226`. Running `curl -X PUT "http://0.0.0.0:5986/_nodes/couchdb@192.168.1.226" -d {} --user root` from the server at `192.168.1.214` didn't work. It showed `Connection attempt from disallowed node 'couchdb@192.168.1.214'` and `Connection attempt from disallowed node 'couchdb@192.168.1.202'` in the logs of `192.168.1.226`... Which makes sense, because the command I ran didn't even provide the password of `192.168.1.226`, so there's no reason why it should work.

I deleted the added node from the cluster with `curl -X DELETE "http://0.0.0.0:5986/_nodes/couchdb@192.168.1.226?rev=1-967a00dff5e02add41819138abb3284d" -d {} --user root`. The Node Management docs don't actually mention that the revision id is required and that the `_nodes` db operates like a normal database, which seems to have confused at least [one person](https://groups.google.com/d/msg/couchdb-user-archive/54tEryERBiI/O0GKBo_NBAAJ).

After reading through the dev cluster [setup script](https://github.com/apache/couchdb/blob/master/dev/run#L422) I tried running the following from the server at `192.168.1.214`:

```
$ curl -X POST -H "Content-Type: application/json" "http://0.0.0.0:5984/_cluster_setup" -d '{"action":"add_node","host":"192.168.1.226","port":5984,"username":"root","password":"XXXXXXX"}' --user root
```

That almost worked. The membership for `192.168.1.214` was correct:

```
{"all_nodes":["couchdb@192.168.1.202","couchdb@192.168.1.214","couchdb@192.168.1.226"],"cluster_nodes":["couchdb@192.168.1.202","couchdb@192.168.1.214","couchdb@192.168.1.226"]}
```

But `192.168.1.226` showed that it wasn't talking to `192.168.1.202`

```
{"all_nodes":["couchdb@192.168.1.214","couchdb@192.168.1.226"],"cluster_nodes":["couchdb@192.168.1.202","couchdb@192.168.1.214","couchdb@192.168.1.226"]}
```

Logs on `192.168.1.226` showed `global: 'couchdb@192.168.1.226' failed to connect to 'couchdb@192.168.1.202'` and `Connection attempt from disallowed node 'couchdb@192.168.1.202'`, but I don't understand why.

Rebooting  `192.168.1.226`, deleting the entry from the `_nodes` database again, and re-adding it with the exact same command run on `192.168.1.214` as before seemed to work (all servers show full connectivity to each other). However, I have no idea why it worked the second time, or if I'm doing something horribly wrong.

Is this the correct way to add nodes to a cluster? Should the Node Management docs be updated? I want to make sure I'm doing this right before I automate the whole process with Kubernetes.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)