mirror of https://github.com/status-im/consul.git
[docs] Architecture Node vs Agent (#6010)
* Upating the term node to be more clear * Update website/source/docs/internals/architecture.html.md * Update website/source/docs/internals/architecture.html.md Co-Authored-By: Paul Banks <banks@banksco.de> * Addressing the failure detection comment
This commit is contained in:
parent
b36a14349d
commit
ceff2e3baa
|
@ -22,10 +22,10 @@ to learn about them without having to go spelunking through the source code.
|
||||||
Before describing the architecture, we provide a glossary of terms to help
|
Before describing the architecture, we provide a glossary of terms to help
|
||||||
clarify what is being discussed:
|
clarify what is being discussed:
|
||||||
|
|
||||||
* Agent - An agent is the long running daemon on every member of the Consul cluster.
|
* Agent - An agent is the long running daemon on every node of the Consul cluster.
|
||||||
It is started by running `consul agent`. The agent is able to run in either *client*
|
It is started by running `consul agent`. The agent is able to run in either *client*
|
||||||
or *server* mode. Since all nodes must be running an agent, it is simpler to refer to
|
or *server* mode. Since all nodes must be running an agent, it is simpler to refer to
|
||||||
the node as being either a client or server, but there are other instances of the agent. All
|
them as being either a client or server. All
|
||||||
agents can run the DNS or HTTP interfaces, and are responsible for running checks and
|
agents can run the DNS or HTTP interfaces, and are responsible for running checks and
|
||||||
keeping services in sync.
|
keeping services in sync.
|
||||||
|
|
||||||
|
@ -56,9 +56,9 @@ and our implementation is described [here](/docs/internals/consensus.html).
|
||||||
[gossip protocol](https://en.wikipedia.org/wiki/Gossip_protocol) that is used for multiple purposes.
|
[gossip protocol](https://en.wikipedia.org/wiki/Gossip_protocol) that is used for multiple purposes.
|
||||||
Serf provides membership, failure detection, and event broadcast. Our use of these
|
Serf provides membership, failure detection, and event broadcast. Our use of these
|
||||||
is described more in the [gossip documentation](/docs/internals/gossip.html). It is enough to know
|
is described more in the [gossip documentation](/docs/internals/gossip.html). It is enough to know
|
||||||
that gossip involves random node-to-node communication, primarily over UDP.
|
that gossip involves random agent-to-agent communication, primarily over UDP.
|
||||||
|
|
||||||
* LAN Gossip - Refers to the LAN gossip pool which contains nodes that are all
|
* LAN Gossip - Refers to the LAN gossip pool which contains agents that are all
|
||||||
located on the same local area network or datacenter.
|
located on the same local area network or datacenter.
|
||||||
|
|
||||||
* WAN Gossip - Refers to the WAN gossip pool which contains only servers. These
|
* WAN Gossip - Refers to the WAN gossip pool which contains only servers. These
|
||||||
|
@ -87,12 +87,12 @@ availability in the case of failure and performance, as consensus gets progressi
|
||||||
slower as more machines are added. However, there is no limit to the number of clients,
|
slower as more machines are added. However, there is no limit to the number of clients,
|
||||||
and they can easily scale into the thousands or tens of thousands.
|
and they can easily scale into the thousands or tens of thousands.
|
||||||
|
|
||||||
All the nodes that are in a datacenter participate in a [gossip protocol](/docs/internals/gossip.html).
|
All the agents that are in a datacenter participate in a [gossip protocol](/docs/internals/gossip.html).
|
||||||
This means there is a gossip pool that contains all the nodes for a given datacenter. This serves
|
This means there is a gossip pool that contains all the agents for a given datacenter. This serves
|
||||||
a few purposes: first, there is no need to configure clients with the addresses of servers;
|
a few purposes: first, there is no need to configure clients with the addresses of servers;
|
||||||
discovery is done automatically. Second, the work of detecting node failures
|
discovery is done automatically. Second, the work of detecting agent failures
|
||||||
is not placed on the servers but is distributed. This makes failure detection much more
|
is not placed on the servers but is distributed. This makes failure detection much more
|
||||||
scalable than naive heartbeating schemes. Thirdly, it is used as a messaging layer to notify
|
scalable than naive heartbeating schemes. It also provides failure detection for the nodes; if the agent is not reachable, than the node may have experienced a failure. Thirdly, it is used as a messaging layer to notify
|
||||||
when important events such as leader election take place.
|
when important events such as leader election take place.
|
||||||
|
|
||||||
The servers in each datacenter are all part of a single Raft peer set. This means that
|
The servers in each datacenter are all part of a single Raft peer set. This means that
|
||||||
|
@ -101,9 +101,9 @@ is responsible for processing all queries and transactions. Transactions must al
|
||||||
all peers as part of the [consensus protocol](/docs/internals/consensus.html). Because of this
|
all peers as part of the [consensus protocol](/docs/internals/consensus.html). Because of this
|
||||||
requirement, when a non-leader server receives an RPC request, it forwards it to the cluster leader.
|
requirement, when a non-leader server receives an RPC request, it forwards it to the cluster leader.
|
||||||
|
|
||||||
The server nodes also operate as part of a WAN gossip pool. This pool is different from the LAN pool
|
The server agents also operate as part of a WAN gossip pool. This pool is different from the LAN pool
|
||||||
as it is optimized for the higher latency of the internet and is expected to contain only
|
as it is optimized for the higher latency of the internet and is expected to contain only
|
||||||
other Consul server nodes. The purpose of this pool is to allow datacenters to discover each
|
other Consul server agents. The purpose of this pool is to allow datacenters to discover each
|
||||||
other in a low-touch manner. Bringing a new datacenter online is as easy as joining the existing
|
other in a low-touch manner. Bringing a new datacenter online is as easy as joining the existing
|
||||||
WAN gossip pool. Because the servers are all operating in this pool, it also enables cross-datacenter
|
WAN gossip pool. Because the servers are all operating in this pool, it also enables cross-datacenter
|
||||||
requests. When a server receives a request for a different datacenter, it forwards it to a random
|
requests. When a server receives a request for a different datacenter, it forwards it to a random
|
||||||
|
|
Loading…
Reference in New Issue