Jump to: navigation, search

Difference between revisions of "Mogan"

(Drivers)
Line 1: Line 1:
 
= OpenStack Bare Metal Computing =
 
= OpenStack Bare Metal Computing =
  
== What is Mogan? ==
+
== Why Mogan? ==
 +
 
 +
OpenStack Nova supports provisioning of virtual machines (VMs), bare metal and containers. True, BUT, Nova design started off as a virtual machine scheduler, with features specific to this use case. Nova enhancements to unify requesting any compute instance, be it VM, container or Bare Metal, while wonderful, unfortunately  is convoluted at best, requiring the user to execute additional steps. Further, it does not yet support the more advanced requirements of bare metal provisioning such as storage and network configuration.
  
Mogan is an OpenStack project which aims to provide bare metal computing. Compared with Nova, it's more bare metal specific with more advanced features that VM users don't need. And it also plans to support RSD(Rack Scale Design)[4].
+
* All Ironic nodes are associated with a single host aggregate in Nova, because of the notion that a compute *service* is equal to the compute *node*.
 +
* No affinity/anti-affinity support for bare metals in Nova, as it's based on *host*.
 +
* No specific APIs for bare metals like RAID configuration, Advanced partitioning at deploy time, Firmware management, etc.  
  
 
[[File:Mogan-why.png|600px|nova-mogan]]
 
[[File:Mogan-why.png|600px|nova-mogan]]
 +
 +
== What is Mogan? ==
 +
 +
Mogan, from the get go is all about Bare Metal provisioning in all its richness, no twists and turns, for an elegant sculpture. The Mogan API allows you to both provision bare metal and compose bare metal through integration with OpenStack Valence that leverages the Redfish API to compose nodes using disaggregated resources.
  
 
=== Architecture ===
 
=== Architecture ===
Line 12: Line 20:
 
* '''mogan-api''': Provides an OpenStack native REST API that processes API requests by sending them to the mogan-engine over RPC.
 
* '''mogan-api''': Provides an OpenStack native REST API that processes API requests by sending them to the mogan-engine over RPC.
 
* '''mogan-engine''': Interacts with other OpenStack services (like cinder, neutron, glance, etc) through REST API. It transforms and dispatches the user request to drivers to provision bare metal instances.
 
* '''mogan-engine''': Interacts with other OpenStack services (like cinder, neutron, glance, etc) through REST API. It transforms and dispatches the user request to drivers to provision bare metal instances.
* '''mogan-scheduler''': The scheduler service to help select a node according to users' request, which will integrate with Placement service.
+
* '''mogan-scheduler''': The scheduler service to help select nodes according to users' request, which will integrate with Placement service.
  
 
==== Drivers ====
 
==== Drivers ====
Ironic is the default driver and the main driver we supported, but we plan to support more provision tools like maas, cloudboot, etc.
+
Mogan has an abstraction layer for bare metal provisioning drivers. This is what allows you to choose which hypervisor to use for your Mogan deployment.
 +
Ironic is the default driver and the main driver we supported, but it's possible to add more provision tools support like maas, cloudboot, etc.
  
 
[[File:Mogan-architecture.png|700px|architecture]]
 
[[File:Mogan-architecture.png|700px|architecture]]
Line 30: Line 39:
  
 
And there are already a series of efforts on upstream work to make a generic scheduler, finally which will separate out from Nova, to be a standalone project, then we will try to use it.
 
And there are already a series of efforts on upstream work to make a generic scheduler, finally which will separate out from Nova, to be a standalone project, then we will try to use it.
 
== Why Mogan? ==
 
 
'''Manage bare metals as convenient as virtual machines doesn't mean manage them in a unified manner.'''
 
 
Ironic only provides the capability to provision bare metal servers, which lacks the ability of scheduling, quotas management and multi-tenancy support. Currently it heavily depends on Nova which was designed for VMs. If we can decouple these two technologies by breaking baremetal computing management into its own set of application program interfaces, it will jump out from the complex model (Nova + Ironic). Besides this, we also want to support RSD(Rack Scale Design), which is not easily possible to be integrated into Nova.
 
 
And there are many well-known provision tools,  we will try to add more provision drivers to Mogan, but Ironic is the default driver and the main driver we support, just like KVM to Nova.
 
 
[[File:Mogan-Ironic.png|800px|nova-mogan-ironic]]
 
  
 
== Mogan Mission Statement ==
 
== Mogan Mission Statement ==

Revision as of 08:37, 21 July 2017

OpenStack Bare Metal Computing

Why Mogan?

OpenStack Nova supports provisioning of virtual machines (VMs), bare metal and containers. True, BUT, Nova design started off as a virtual machine scheduler, with features specific to this use case. Nova enhancements to unify requesting any compute instance, be it VM, container or Bare Metal, while wonderful, unfortunately is convoluted at best, requiring the user to execute additional steps. Further, it does not yet support the more advanced requirements of bare metal provisioning such as storage and network configuration.

  • All Ironic nodes are associated with a single host aggregate in Nova, because of the notion that a compute *service* is equal to the compute *node*.
  • No affinity/anti-affinity support for bare metals in Nova, as it's based on *host*.
  • No specific APIs for bare metals like RAID configuration, Advanced partitioning at deploy time, Firmware management, etc.

nova-mogan

What is Mogan?

Mogan, from the get go is all about Bare Metal provisioning in all its richness, no twists and turns, for an elegant sculpture. The Mogan API allows you to both provision bare metal and compose bare metal through integration with OpenStack Valence that leverages the Redfish API to compose nodes using disaggregated resources.

Architecture

Services

  • mogan-api: Provides an OpenStack native REST API that processes API requests by sending them to the mogan-engine over RPC.
  • mogan-engine: Interacts with other OpenStack services (like cinder, neutron, glance, etc) through REST API. It transforms and dispatches the user request to drivers to provision bare metal instances.
  • mogan-scheduler: The scheduler service to help select nodes according to users' request, which will integrate with Placement service.

Drivers

Mogan has an abstraction layer for bare metal provisioning drivers. This is what allows you to choose which hypervisor to use for your Mogan deployment. Ironic is the default driver and the main driver we supported, but it's possible to add more provision tools support like maas, cloudboot, etc.

architecture

Interaction Details

The figure below describes how Mogan interact with other OpenStack services to manage bare metal servers.

mogan detailed workflow

About scheduler

As we said above, Mogan plans to support both Pre-set configuration servers and Custom servers. For Pre-set configuration servers(what OpenStack currently support), we don't need to schedule based on properties like RAM, CPU, DISK, etc. We can just divide machines into several groups based on their properties like gold type machine with better cpu and more memory, silver type machine include cheap cpu and less memory than gold one. This can be easily implemented by adding some extra information to Ironic node's properties filed like {'availability_zone': 'Beijing-01', 'node_type': 'gold'}, and then map them to different instance_types(flavors). Instance_type includes a description field which can be used to provide bare metal server specs to users, like it may contain something like ‘Dual Professor, Dual Intel Xeon E5-2620(2.00GHz), 12 Cores, 16GB RAM, 500GB SATA'.

And there are already a series of efforts on upstream work to make a generic scheduler, finally which will separate out from Nova, to be a standalone project, then we will try to use it.

Mogan Mission Statement

1. To implement services which focus on the management of bare metal computing resources.

2. To promote the speed of bare metal development in OpenStack.

Use Cases

1. A cloud provider wants to deliver vm and bare metal services separately with different capabilities instead of just one service including both vms and bare metals.

2. An enterprise user wants to leverage their already deployed provision tools(instead of Ironic) to provide bare metal cloud by adding a driver to Mogan.

3. An enterprise user wants to manage the RSD(Rack Scale Design) and general hardware in a unified manner.

4. An enterprise user wants more bare metal specific capabilities like Hard Drive, Nics Bond, Firmware, etc management.

RSD Integration

Rack Scale Design (RSD) implementations represent the next generation of Software Defined Infrastructure that can be dynamically provisioned across compute, network and storage resources.The fundamental premise for an RSA-based solution is the customers’ ability to “right-size” their end-to-end infrastructure needs according to anticipated workload performance and capacity requirements, across pooled resources.

VALENCE[1] is a controller for pooled and composable resources which adhere to DMTF[2] Redfish[3] with hardware management requests. That includes provisioning and management of RSD components and underlay features.

mogan RSD

Projects

mogan

Source code https://github.com/openstack/mogan
Bug tracker https://bugs.launchpad.net/mogan
Feature tracker https://blueprints.launchpad.net/mogan
Weekly meetings https://wiki.openstack.org/wiki/Meetings/Mogan

python-moganclient

Source code https://github.com/openstack/python-moganclient
Bug tracker https://bugs.launchpad.net/python-moganclient
Feature tracker https://blueprints.launchpad.net/python-moganclient

mogan-ui

Source code https://github.com/openstack/mogan-ui
Bug tracker https://bugs.launchpad.net/mogan-ui
Feature tracker https://blueprints.launchpad.net/mogan-ui

People

Zhenguo Niu (zhenguo)

Rui Chen (RuiChen)

YunTong Jin (yuntong.jin@intel.com)

Shaohe Feng (shaohe_feng)

Lei Zhang (lei-zh)

Zhong Luyao (Zhong Luyao)

Hanzhang Shi (shihanzhang)

Sheng Liu (liusheng)

Zhenyu Zheng (Kevin_Zheng)

zhangjl (zhangjl)

Wang Hao (wanghao)

Tao Li (litao)

Liu Dong (liudong)

Zhang Yang (zhangyang)

IRC

Discussion of the project also takes place in #openstack-mogan on irc.freenode.net. This is a great place to jump in and start your mogan adventure.

Developers

Guidelines for developers can be found here: https://wiki.openstack.org/wiki/Ironic/Developer_guidelines Please note that for any non-trivial change that is not a fix for a particular bug, you have to go through the specs review process

For more information please refer to our dev-quickstart doc Mogan devref

FAQ

1) What's the relationship between Mogan and Nova?

Compared with Nova, Mogan is dedicated for bare metals, it's more lightweight and with more baremetal specific features which VM users don't need. Nova provides a unified manner for all compute resources management.

2) Does Mogan compete with Nova?

We do not intend to compete with Nova. Nova focuses on VM management and provides many advanced features like live migrating, availability zone, host aggregates, etc. The ironic driver allows to manage baremetals via Nova's API (which is unified for VMs, baremetals, and containers, but in fact, it's customized for VMs). Baremetal instance in Nova seems like a special VM which ocuppies all resources of the compute node, While Mogan is designed specifically for baremetals, it makes real baremetal support for OpenStack with multiple baremetal hypervisors like ironic, maas, cloudboot, etc.

3) What's the relationship with Mogan and Ironic?

Ironic is integrated into Mogan as a driver, which will be used to deploy(part of provisioning) baremetal node. And also Mogan leverage Ironic API to manage node’s lifecycle.

4) What's the relationship with Mogan and Valence?

Valence is a RSD controller for pooled and composable resources, it provide compose API for pooled resource, and also Redfish endpoint to control composed node. Mogan will contact with RSD through Valence to compose resouces then enroll the composed node to ironic and provision the node like generic nodes.

References

[1] https://wiki.openstack.org/wiki/Valence

[2] https://www.dmtf.org/standards/redfish

[3] https://www.dmtf.org/

[4] http://www.intel.com/content/www/us/en/architecture-and-technology/rack-scale-design-overview.html