Abiquo at a Glance
Abiquo is a Cloud computing platform that allows you to use your own physical infrastructure to provide infrastructure as a service. It is a hypervisor agnostic model (no vendor lock-in) and it provides a unified interface for managing:
- VM templates
- Compute
- Network
- Storage
- Events
Abiquo Datacenters
A datacenter consists of:
- A set of hypervisors
- Storage servers
- Network File System (NFS)
- DHCP
- Abiquo remote services
Abiquo is designed to manage multiple datacenters.
Hypervisors
Abiquo manages multiple hypervisors and conversions between hypervisors.
Managed by vendor-provided API:
- ESXi
- XenServer
- Hyper-V
- VirtualBox
Managed by Abiquo AIM (libvirt-based agent)
- KVM
- Xen
AIM
AIM is the Abiquo Infrastructure Management agent for hypervisors without an API.
For KVM and Xen hypervisors, AIM provides:
- disk copy
- VLAN configuration
- virtual machine monitoring capabilities
AIM is an Apache thrift-based server and it is written in C++
Abiquo Remote Services
The Abiquo platform uses Remotes Services to manage the hypervisors. The remote services found in each datacenter are:
- Appliance Manager
- Business Process Manager
- Discovery Manager
- Virtualization Manager
- Storage System Manager
- Virtual System Monitor
Appliance Manager
Provides the ability to upload and download VM templates into repositories available to our datacenter. Exposes its data and operations via a REST API implemented with Apache Wink
Business Process Manager
Provides conversion of VM templates between disk formats supported by hypervisors, thus eliminating vendor lock-in.
- Conversion requests and responses are submitted via message queues
- Requests are processed one a time, because working at NFS level implies being careful of I/O conflicts
- Uses RabbitMQ as message broker
Discovery Manager
Provides hypervisor discovery of the following:
- Hypervisor type
- Deployed virtual machines
- Physical machine capabilities and resources
Uses API provided by hypervisor vendor. Exposes its data and operations via a REST API implemented with Apache Wink
Virtualization Manager (Virtual Factory Remote Service)
This is the common layer to unify and manage the virtualization capabilities of each hypervisor type. Manages the life cycle of the virtual machines and network and storage configuration for virtual machines. Job requests and responses are submitted via message queues (RabbitMQ) with an actor-based model using Akka.
Storage System Manager
This is the common layer to unify and manage the storage capabilities of the storage servers through management of iSCSI volumes.
It exposes its data and operations via a REST API implemented with Apache Wink.
Virtual System Monitor
Manages a set of monitors. Each monitor looks at the state of virtual machines and notifies changes. It uses Redis as a subscription store and the pubsub mechanism for event notifications from each monitor. State changes are notified via message queues (RabbitMQ). It exposes its data and operations via a REST API implemented with Apache Wink
Server
The Abiquo Server manages an arbitrary number of datacenters by accessing their remote services. Communications between modules and datacenters are performed via RabbitMQ. MySQL stores the system configuration and state. The platform also offers enterprise functionality: pricing, scheduling, security. The server exposes its data and operations via a REST API implemented with Apache Wink being consumed by our FLEX client.
Architecture Diagram
Technology Stack
- Apache projects
- Wink
- Thrift
- Commons
- Others
- MySQL
- Redis
- RabbitMQ
- Akka
- Libvirt