Hi Max,
With 2 releases being worked right now, the team is kind of busy, but I'll
answer one of the questions you asked:
> Last question : In simple words what is the CouchDB 2.x cluster? It does
> not seem to allow fail-over neither load-balancing does it? What is the
> purpose to split a single database into 3 servers whereas the client part
> will only speak with one server through 1 IP? Maybe CPU saving and
> scalability?
Distributed systems are less of a fail-over approach like you might be
used to in classic "High Availability" design, and more of a
redundant/replica approach. Increasingly, these designs are replacing
the old cold/warm standby designs.
With the default settings, those 3 servers each hold a copy of your data.
If any node fails, the cluster will still be able to provide its core
guaranty (r=w=2). With two nodes failed, all operations will be degraded,
but once the failed nodes are replaced, the cluster will self-heal via
so-called "internal replication" and everything will go back to normal.
It also provides load balancing, as long as you place a load balancer
in front of it. It is extremely common to have haproxy or nginx in front
of CouchDB 2.x. If you are worried about a single point of failure, you
can have multiple load balancers in front of the CouchDB cluster, and use
DNS (or similar) to guarantee availability of the cluster.
And yes, this architecture allows you to scale horizontally without
taking the cluster down, which is a key feature.
Perhaps it is time for the reference hardware architecture to make its
way into the docs... ;)
-Joan