Jump to: navigation, search

Difference between revisions of "Nova"

(New Nova landing page)
Line 1: Line 1:
 
__NOTOC__
 
__NOTOC__
/!\ This page is *thoroughly* out of date
+
= [[OpenStack]] Compute ("Nova") =
  
== Nova Cloud Review ==
+
* [[InstallInstructions/Nova|Install Instructions]]
The purpose of this document is to capture the pluses and minuses of using Nova's code as a part of Cloud servers v2
+
* [[Nova/APIFeatureComparison | API feature comparison]]
 +
* Configuring Nova: listing of nova.conf [[NovaConfigOptions|configuration options]]
 +
* Details about [[HypervisorSupportMatrix|hypervisor support]]
 +
* Project and bug reporting on [https://launchpad.net/nova Launchpad], Code on [https://github.com/openstack/nova GitHub]
 +
* [http://nova.openstack.org Nova Developer Documentation]
  
=== Glossary ===
 
* Public API Servers - Know as "Nucleus" in Cloud Servers v1 or "Cloud Controller" in Eucalyptus.
 
* Cluster - A group of physical host nodes. Known as a "huddle" in Cloud Servers v1.
 
* Cluster Controller - Software running on each cluster to control the hosts within it. Known as a "QB" in Cloud Servers v1.
 
* Host - Individual physical host in a Cluster.
 
* Guest - VM instance running on a host.
 
 
=== What's Done ===
 
* Scalable and elastic architecture - fully message based and asynchronous
 
* Many months ahead of us
 
* Written in good Python
 
* Open source and it appears that they will be following an open development model. '''update:  Based on the issue tracker, I am not sure this is true'''
 
* Have stubbed out all components for testing
 
* Actually write SSH keys and authorized_keys properly
 
* openldap based authentication and authorization
 
* All functionality is created via an adapter model, so implementations (for instance, storage backends, messaging backends, etc) can be swapped out as needed
 
 
=== What Needs to be Done ===
 
* Create a layer inside Nova that would be able to distinguish between different pods
 
** Currently, the [[CloudController]] class in /endpoints/cloud.py represents a mixture of a public API server and a pod controller
 
*** The [[CloudController]] class receives public API requests and sends messages to the nodes to perform actions
 
*** Separate out the receipt and translation of public API requests to a separate APIServer class
 
*** Separate out the transmission of private action messages to a [[PodController]] class
 
* Detach from Amazon/Eucalyptus specifics and make some things more generic
 
** API:  We need to add the Rackspace API, and a caching layer
 
*** It is not reasonable for us to use the Amazon API, we would be unable to innovate and would constantly be catch up
 
*** We would also need to add a distinct API for each service we layer on top, so they can be used  with either the ec2 or rackspace API's
 
* AOE
 
** Definitely needs to be adapted for other services like [[CloudFiles]], gluster, etc
 
* Defaults of VLANs could be changed
 
** though you can manually allocate IPs or use DHCP (see /compute/network.py)
 
* Functionality needed by hosting providers
 
** Metrics
 
*** CPU, memory, disk usage, network RX/TX
 
*** but, again, the backend storage is already taken care of...
 
* Billing
 
** Need to define the billable events in a model
 
* Admin client is AWS-specific and needs an adapter interface
 
** see /adminclient.py
 
* Overarching documentation is sparse (though the code comments are pretty decent)
 
* twisted (and Python) is, by nature, single-core, so it *may* be a bottleneck, but that remains to be demonstrated
 
* No support for gluster or drbd, but there are adapters for plugging such functionality into the app domain
 
* Add an endpoint so different compute clusters can be discovered for different clusters, especially when distributed geographically.
 
* Configuration management is almost non-existent
 
** Need to plugin/adapt the configuration retrieval
 
** Puppet, Chef, or even a DKVS
 
** The "flavors" are hardcoded in /compute/node.py (grep for INSTANCE_TYPES)
 
* While there is decent unittest coverage, there is no real systems testing or documentation of plans for one
 
** There would need to be a good chunk of code written to automate the testing of pod deployments, the testing of network partitions, and more
 
* Cleanup and refactoring of the Keeper function (datastore.py) and its adaptor pattern
 
 
=== Image Support ===
 
[[ImageNotes]]
 
* Only supports AMIs, we should add OVA support
 
* Requires use of euca2ools, which are tainted, we need a set of ova tools and possibly a clean room rewrite of the AMI tools, if we care
 
* There is one global bucket in S3 called _images (hardcoded)
 
** Needs to be segmented and enhanced to support public, private, and shared images (i.e. support customer_id)
 
* Support for image storage in Cloud Files
 
* Support for image caching at the node level, ala iback
 
 
=== Unknowns ===
 
 
* Asked jm to take a looksie into any possible Windows issues with the code base (in using Windows as a host with Hyper-V? Not sure what this means)
 
** We know that ssh keys will not work with windows, so another method is necessary
 
 
----
 
----
 
[[Category:Nova]]
 
[[Category:Nova]]

Revision as of 12:35, 24 September 2012

OpenStack Compute ("Nova")