A datanode services cluster includes the database cluster and Abiquo services cluster.
Abiquo uses the services in communication between the API server and other platform components.
The database cluster will be a standard Galera cluster to store application data in MariaDB.
Datanode components
Component | Description |
MaxScale | Read/write splitting across all nodes in Galera, to write to only one node. |
MariaDB Galera | Synchronous multi-master cluster for MariaDB. |
HAproxy | Balancing across all Redis instances, but only master instance is active |
Redis | Stores volatile information such as tasks. |
Sentinel | Provides high availability for Redis. |
RabbitMQ | Queues for remote services. |
Zookeeper | Manages API leader selection (for more than one API server) |
Galera database cluster
MaxScale splits reads and writes across all nodes, so only one node will receive writes. Components that do not support MariaDB Galera cluster will use the VIP to access the MariaDB Galera cluster through MaxScale.
Datanode services cluster
The cluster has a virtual IP (VIP) that will be active on one node at a time only. For access to Redis, Abiquo components (API and RS) will use the VIP. All HAproxy instances balance across all Redis instances, but only the master instance is active.
RabbitMQ is a standard configuration that can be built as a cluster.
If we use more than one API server, we will configure Zookeeper. This service coordinates APIs for tasks with RS and periodic checks.