36 lines
1.3 KiB
Markdown
36 lines
1.3 KiB
Markdown
# EMQX Eviction Agent
|
|
|
|
`emqx_eviction_agent` is a part of the node evacuation/node rebalance feature in EMQX.
|
|
It is a low-level application that encapsulates working with actual MQTT connections.
|
|
|
|
## Application Responsibilities
|
|
|
|
`emqx_eviction_agent` application:
|
|
|
|
* Blocks incoming connection to the node it is running on.
|
|
* Serves as a facade for connection/session eviction operations.
|
|
* Reports blocking status via HTTP API.
|
|
|
|
The `emqx_eviction_agent` is relatively passive and has no eviction/rebalancing logic. It allows
|
|
`emqx_node_rebalance` to perform eviction/rebalancing operations using high-level API, without having to deal with
|
|
MQTT connections directly.
|
|
|
|
## EMQX Integration
|
|
|
|
`emqx_eviction_agent` interacts with the following EMQX components:
|
|
* `emqx_cm` - to get the list of active MQTT connections;
|
|
* `emqx_hooks` subsystem - to block/unblock incoming connections;
|
|
* `emqx_channel` and the corresponding connection modules to perform the eviction.
|
|
|
|
## User Facing API
|
|
|
|
The application provided a very simple API (CLI and HTTP) to inspect the current blocking status.
|
|
|
|
# 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).
|