Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

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

(question)

  • Apache projects
    • Wink 
    • Thrift 
    • Commons
    • Jclouds
  • Others
    • MySQL (MariaDB)
    • Redis 
    • RabbitMQ
    • Akka 
    • Libvirt
    • Jersey