Jump to: navigation, search

Nimble

Revision as of 09:31, 9 November 2016 by Kiwik (talk | contribs) (RSD Integration)

OpenStack Bare Metal Computing

What is Nimble?

Nimble is an OpenStack project to provide "bare metal computing as a service", dedicated for bare metal computing management, which is designed specifically for BMs, so Nimble is a lightweight and convenient platform with more advanced features by Ironic's provisioning, Neutron's networking and other services' abilities. Compared with Nova, it's more bare metal specific and with more advanced features that VM users don't need. Besides this, we also plan to support RSD(Rack Scale Design)[4], so we provide not only Pre-set Configuration Servers but also Custom Servers.

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 drivers (like ironic, valence) 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

Nimble plans to support both Pre-set configuration servers and Custom servers(leverage RSD). 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 servers into groups by adding some extra information to Ironic node's properties filed like {'availability_zone': 'Beijing-01', 'instance_type': 'high-performance'}, 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, it may contain something like ‘Dual Professor, Dual Intel Xeon E5-2620(2.00GHz), 12 Cores, 16GB RAM, 500GB SATA'.

In the future, Nova placement service will be integrated into Nimble as scheduler backend, now we implement a bare metal dedicated scheduler to provision instances in Nimble.

Why Nimble?

Ironic only provides the capability to provision bare metal servers, which lacks scheduling ability, 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 into its own set of application program interfaces, bare metal management will jump out from the complex model (Nova + Ironic). Besides this, we also want to support RSD(Rack Scale Design), that's not easily possible to add 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 get a bare metal instance with special RAID disk and partition configuration.

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

4. An enterprise user wants to manage the RSD and regular hardware in unified way.

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

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)

Hanzhang Shi (shihanzhang)

Sheng Liu (liusheng)

Zhenyu Zheng (Kevin_Zheng)

Before you Jump into the Code

Before developing nimble and python-nimbleclient, make sure you know how OpenStack Bare Metal Computing works by reading this wiki page and asking questions.

Then try to run it yourself using devstack . One example of how to run OpenStack Bare Metal Computing with devstack is here: Nimble devref

Subscribe to the openstack-dev email list. . Email sent to this list about OpenStack Bare Metal Computing should have a subject line that starts with [Nimble]. 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.

You'll also want to take care of a few OpenStack-wide requirements, described in HowToContribute . In particular:


If you're feeling adventurous, you can sign up to see the set of bugs + changes flowing into Nimble:


Before trying to submit your first patch, please learn more about how the patch submission and review process works (Developer's Guide).

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.

2) Does Nimble compete with Nova?""

We do not intend to compete with Nova which is the biggest project of OpenStack. In fact, Nova focuses on VM management and provides many advanced features like live migrating, availability zone/ host aggregates, etc. baremetal driver allows to manage baremetals via Nova's API(unified for VMs, baremetals and containers, but in fact, it's VM specifically). 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 engine, 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 that used by Nimble. For example if a particular flavor system is requested which maps to a RSD system, such a call should go to nimble which subsequently Valence to provide that node. and Nimble will enroll that node to ironic and provisioning the node with ironic.

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