Abiquo at a Glance
Abiquo is a Cloud cloud computing platform that allows enables you to manage public clouds and private clouds. You can 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 In private cloud, a datacenter consists of:
- A set of hypervisors
- Storage servers (for optional manage storage)
- Network File System (NFS)
- DHCP
- Abiquo remote services
Abiquo is designed to manage multiple datacenters and public cloud providers.
Hypervisors
Abiquo manages multiple hypervisors and conversions between hypervisors.
Managed by the vendor-provided API:
- ESXi
- XenServer
- Hyper-V
- VirtualBoxOracle VM
Managed by the Abiquo AIM (libvirt-based agent)agent using libvirt
- KVM
- Xen
AIM
...
Abiquo
...
- 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 Abiquo remote services found in each datacenter are:
- Appliance Manager
- Business Process Manager
- Discovery Manager
- Virtualization Manager
- Storage System Manager
- Virtual System Monitor
- Remote Access Manager
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 WinkAdministrators may use the AM API to manage templates.
Business Process Manager
Provides conversion of VM templates between disk formats supported by hypervisors and export to public cloud providers, thus eliminating vendor lock-in.
- Conversion requests and responses are submitted via message queues
- Requests are processed one at a time, because working at NFS level implies being careful of I/O conflicts
- Uses RabbitMQ as a message broker
Discovery Manager
Provides hypervisor discovery of the following:
- Hypervisor type
- Deployed virtual machinesVMs
- Physical machine capabilities and resources
Uses the API provided by the 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 VMs and network and storage configuration for virtual machinesVMs. Job requests and responses are submitted via message queues (RabbitMQ) with an actor-based model using Akka.
...
This is the common layer to unify and manage the storage capabilities of the storage servers through management of iSCSI volumes in private cloud. 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 examines the state of virtual machines VMs 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
- Jclouds
- Others
- MySQL (MariaDB)
- Redis
- RabbitMQ
- Akka
- Libvirt
- Jersey