41 lines
1.5 KiB
Markdown
41 lines
1.5 KiB
Markdown
# EMQX Node Rebalance
|
||
|
||
`emqx_node_rebalance` is a part of the node evacuation/node rebalance feature in EMQX.
|
||
It implements high-level scenarios for node evacuation and rebalancing.
|
||
|
||
## Application Responsibilities
|
||
|
||
`emqx_node_rebalance` application's core concept is a _rebalance coordinator_.
|
||
_Rebalance сoordinator_ is an entity that implements the rebalancing logic and orchestrates the rebalancing process.
|
||
In particular, it:
|
||
|
||
* Enables/Disables Eviction Agent on nodes.
|
||
* Sends connection/session eviction commands to Eviction Agents according to the evacuation logic.
|
||
|
||
We have two implementations of the _rebalance coordinator_:
|
||
* `emqx_node_rebalance` - a coordinator that implements node rebalancing;
|
||
* `emqx_node_rebalance_evacuation` - a coordinator that implements node evacuation.
|
||
|
||
## EMQX Integration
|
||
|
||
`emqx_node_rebalance` is a high-level application that is loosely coupled with the rest of the system.
|
||
It uses Eviction Agent to perform the required operations.
|
||
|
||
## User Facing API
|
||
|
||
The application provides API (CLI and HTTP) to perform the following operations:
|
||
* Start/Stop rebalancing across a set of nodes or the whole cluster;
|
||
* Start/Stop evacuation of a node;
|
||
* Get the current rebalancing status of a local node.
|
||
* Get the current rebalancing status of the whole cluster.
|
||
|
||
Also, an HTTP endpoint is provided for liveness probes.
|
||
|
||
# Documentation
|
||
|
||
The rebalancing concept is described in the corresponding [EIP](https://github.com/emqx/eip/blob/main/active/0020-node-rebalance.md).
|
||
|
||
# Contributing
|
||
|
||
Please see our [contributing.md](../../CONTRIBUTING.md).
|