8000 Doc - Fix Active-Failover limitations (#6353) · soualid/arangodb@d64af1f · GitHub
[go: up one dir, main page]

Skip to content

Commit d64af1f

Browse files
graetzerjsteemann
authored andcommitted
Doc - Fix Active-Failover limitations (arangodb#6353)
1 parent 98a3fec commit d64af1f

File tree

2 files changed

+29
-6
lines changed

2 files changed

+29
-6
lines changed

Documentation/Books/Manual/Architecture/DeploymentModes/ActiveFailover/Architecture.md

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,12 +45,20 @@ When the _Leader_ goes down, this is automatically detected by the _Agency_
4545
instance, which is also started in this mode. This instance will make the
4646
previous follower stop its replication and make it the new _Leader_.
4747

48-
The _Follower_ will deny all read and write requests from client applications.
48+
Operative Behaviour
49+
-------------------
50+
51+
In contrast to the normal behaviour of a single-server instance, the Active-Failover
52+
mode will change the behaviour of ArangoDB in some situations.
53+
54+
The _Follower_ will _always_ deny write requests from client applications. Starting from ArangoDB 3.4
55+
read requests are _only_ permitted if the requests is marked with the `X-Arango-Allow-Dirty-Read` header,
56+
otherwise they are denied too.
4957
Only the replication itself is allowed to access the follower's data until the
5058
follower becomes a new _Leader_ (should a _failover_ happen).
5159

5260
When sending a request to read or write data on a _Follower_, the _Follower_ will
53-
always respond with `HTTP 503 (Service unavailable)` and provide the address of
61+
respond with `HTTP 503 (Service unavailable)` and provide the address of
5462
the current _Leader_. Client applications and drivers can use this information to
5563
then make a follow-up request to the proper _Leader_:
5664

@@ -64,6 +72,18 @@ Client applications can also detect who the current _Leader_ and the _Followers_
6472
are by calling the `/_api/cluster/endpoints` REST API. This API is accessible
6573
on _Leader_ and _Followers_ alike.
6674

75+
Reading from Followers
76+
----------------------
77+
78+
Followers in the active-failover setup are in a read-only mode. It is possible to read from these
79+
followers by adding a `X-Arango-Allow-Dirty-Read` header on each request. Responses will then automatically
80+
contain the `X-Arango-Potential-Dirty-Read` header so that clients can reject accidental dirty reads.
81+
82+
Depending on the driver support for your specific programming language, you should be able to enable this option.
83+
84+
Tooling Support
85+
---------------
86+
6787
The tool _ArangoDB Starter_ supports starting two servers with asynchronous
6888
replication and failover [out of the box](../../../Deployment/ActiveFailover/UsingTheStarter.md).
6989

Documentation/Books/Manual/Architecture/DeploymentModes/ActiveFailover/Limitations.md

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,11 @@ Active Failover Limitations
44
The _Active Failover_ setup in ArangoDB has a few limitations. Some of these limitations
55
may be removed in later versions of ArangoDB:
66

7-
- Even though it is already possible to have several _followers_ of the same _leader_,
8-
currently only one _follower_ is officially supported
97
- Should you add more than one _follower_, be aware that during a _failover_ situation
10-
the failover attempts to pick the most up to date follower as a new leader,
11-
but there is **no guarantee** on how much operations may have been lost.
8+
the failover attempts to pick the most up to date follower as the new leader on a **best-effort** basis.
9+
- In contrast to full ArangoDB Cluster (with synchronous replication), there is **no guarantee** on
10+
how many database operations may have been lost during a failover.
11+
- Should you be using the [ArangoDB Starter](../../../Programs/Starter/README.md)
12+
or the [Kubernetes Operator](../../../Deployment/Kubernetes/README.md) to manage your Active-Failover
13+
deployment, be aware that upgrading might trigger an unintentional failover between machines.
14+

0 commit comments

Comments
 (0)
0