Thursday, May 14, 2015

What is Openstack Orchestrator !!


French word Orchestrator originated  from “Orchastra”. Orchastra means group of music performers and orchestrator is to compose or arrange music for performance e.g.  planning/sequencing/harmonizing performance of performers for the audience.

In cloud computing world, Orchestrator is system manager which arranges complex workflows among various cloud elements, to realize user request.

 Openstack Orchestrator
 
Openstack provides API framework for cloud management. Openstack Cloud Orchestration is synchronized  workflow among services  as Nova(Compute), Neutron(Network), Glance (Image), Keystone(Identity), Storage(Cinder & Swift), Dashboard(Horizon), Heat(Orchestration template) ) to realize cloud VM lifecycle management, e.g VM instantiation, live migration, VM deletion, VM suspension etc, as shown in figure below:

 When Openstack Orchestrator receives request , it triggers following chain of actions:  

1)      Service request for VM provisioning from Horizon(dashboard) from CLI, Horizon or via Heat template

2)      Service is authenticated by Keystone

3)      Nova service interacts with compute node’s hypervisor to reserve the required virtual resources.

4)      Nova service interacts with Cinder node to reserve required storage capacity for VM

5)      Nova service interacts with Neutron node/SDN plugin  to create network(IP address/DHCP) for the VM

6)      Neutron service co-ordinates with L2 & DHCP agent, to get network details. Network details passed to Nova via MQ.

7)      Nova service interacts with Glance to download required guest OS image for VM

8)      Nova service notifies User about successful VM instantiation

Openstack Orchestration platform will carry out above mentioned activities in sequential & harmonized manner to provision a virtual machine, as shown in figure below. (more details at https://bugs.launchpad.net/openstack-manuals/+bug/1359722 ).  
 

 Openstack Interaction
Openstack services interact with cloud infrastructure at various touch-points, as below:   

 
Application

Application will interact with Openstack at Guest OS level.
Application’s OS image should be available in  Glance image repository. Orchestration will download it during VM provisioning. In other words, Application’s touch-point with Openstack Glance service is through guest OS Image.
DPDK aware Applications connect to user-space directly and bypass Guest OS. In this scenario, Neutron supposed to provide virtual Switch ports, which supports DPDK. This requirement should be specified in image Meta data or via Heat Templates.

Hypervisor

-        Openstack services interacts with Libvert drivers to communicate with Hypervisors. Openstack Nova interacts with Libvert to reserve virtual resources (CPU, RAM) for VM and Neutron interacts with Libvert to get OpenVswitch/VRouter port details. Thus any new feature in hypervisor (DPDK, Cpu pinning etc) requires some modification in Libvert drivers.
Network

-        Openstack provides Neutron APIs to interact with networking elements. Networking  Vendors (Cisco, Arista, Juniper) have developed Plugins to communicate with Neutron. Using Plug-ins and Neutron API services, Openstack Orchestration should be able configure various agents (Open Vswitch/vRouter), residing in hypervisor. These networking agents configure traffic among VMs and traffic to external gateway. Thus networking team requires their plugin to be fully interoperable with neutron API service.

-        Neutron has possibility to interact with SDN controller (e.g Opencontrail), which controls  network agents. In this scenario, network configuration can be done by SDN controller or Openstack.. This demarcation of responsibilities between SDN and Openstack is required.
 
 

Openstack Orchestrator is kind of system manager which deals with complex system workflows in cloud environment.