emqx/apps/emqx_node_rebalance/README.md

1.5 KiB
Raw Permalink Blame History

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.

Contributing

Please see our contributing.md.