Jump to: navigation, search

Nimble

Revision as of 07:12, 13 December 2016 by Shaohef (talk | contribs)

OpenStack Bare Metal Computing

What is Nimble?

Nimble is an OpenStack project which aims to provide bare metal computing. Compared with Nova, it's more bare metal specific and with more advanced features that VM users don't need. And it also plans to support RSD(Rack Scale Design)[4], so Nimble can provide both Pre-set Configuration Servers and Custom Servers by leveraging Ironic.

nova-nimble

Architecture

  • nimble-api: Provides an OpenStack native REST API that processes API requests by sending them to the nimble-engine over RPC.
  • nimble-engine: Interacts with other OpenStack services (like cinder, neutron, glance, etc) through REST API to support bare metal specific features. It transforms and dispatches the user request to ironic to provision bare metal instances.

architecture

Interaction Details

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

nimble detailed workflow

About scheduler

As we said above, Nimble 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', 'instance_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.

Why Nimble?

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.

nova-nimble-ironic

Nimble 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. An enterprise user wants to orchestration and provisioning bare metals , with multi tenancy support.

2. An enterprise user wants to only provides a bare metal cloud which is not bounded by Nova's API

3. An enterprise user wants to get a bare metal instance with special RAID disk and partition configuration.

4. An enterprise user wants to get a bare metal instance with special NIC bound configuration, like: active/active, active/standby, etc .

5. An enterprise user wants to manage the RSD and general hardware in unified way.

6. An enterprise operator want to inventory all the physic assets, model the physic datacenter arch, mapping into a object model to help him manage physic assets, scheduling and optimize within datacenter.

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.

Nimble Integrate RSD

Projects

nimble

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

python-nimbleclient

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

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)

IRC

Discussion of the project also takes place in #openstack-nimble on irc.freenode.net. This is a great place to jump in and start your nimble 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 Nimble devref

Task track

Developers want to add new features can add you task item here: https://etherpad.openstack.org/p/nimble-task

FAQ

1) What's the relationship with Nimble and Nova?

Compared with Nova, Nimble is dedicated for baremetal computing, it's more lightweight and with more baremetal specific features which VM users don't need.

2) Does Nimble 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). While Nimble is designed specifically for baremetals, it's not bounded by Nova's API.

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

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

4) What's the relationship with Nimble 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. Nimble 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