Nimbus Phantom Frequently Asked Questions¶
- What is the Nimbus Phantom Service?
- Where can I work with Phantom?
- How can I use Phantom?
- What clouds can I use with Phantom?
- What clients can I use with Phantom?
- How can I extend Phantom?
- Is the software for Phantom available?
- Where can I find out more about how to use Phantom?
- Where can I find out more about Phantom architecture?
The Nimbus Phantom service is a hosted service that makes it easy to leverage on-demand resources provided by infrastructure clouds. Phantom allows the user to easily deploy a set of virtual machines over multiple private, community, and commercial clouds and then automatically grows or shrinks this set based on policies defined by the user. The user can also supplement resources in a local cluster with cloud resources. Phantom can then be used to implement elastic services (growing and shrinking to demand) or highly available services (where failed resources always get restarted). Phantom itself has been implemented as a highly available service.
Phantom is currently being released as a service deployed on FutureGrid and is freely available to all comers via an easy-to-use web interface. Instructions on how to get an account and a quickstart are available.
Another instantiation of Phantom is being operated by the Ocean Observatory Initiative project whose infrastructure is built on its capabilities; however this version is only available to users within that project.
Most users use Phantom to enhance a specific application, such as a job scheduler, a workflow engine, a data transfer service, or a caching service. For example, a job scheduler may want to increase the number of available resources in proportion to the size of a job queue. In this case, a sensor agent monitors the length of the job queue overtime and directs Phantom to add resources as needed; the added resources can be supplementing a local cluster or other resources provisioned in the cloud. The resources are added to the set available to the job scheduler so that jobs can be run on them. When the length of the scheduler’s queue goes below a certain threshold the resources are relinquished. One such scenario was described in Elastic Site: Using Clouds to Elastically Extend Site Resources.
Similarly, a caching service, implemented as a set of workers that fetch data from a remote location and cache them locally may want to acquire additional resources and start up additional workers based on the number of requests it receives. In this case, a sensor agent monitors the number of requests to the service and provisions additional resources as needed.
In both cases, additional resources can also be provided based on examining the load and other system properties of used resources.
Phantom is currently in active use with AWS EC2, OpenStack, and Nimbus clouds. However this is primarily an operational choice reflecting popularity among our users; Phantom can be configured to run against any infrastructure cloud supported by Apache Libcloud.
Phantom currently provides a Web Application as well as a REST API. We recommend Python and requests <http://docs.python-requests.org/en/latest/> for scripting. Documentation on how to use the web application is available in our Quickstart Guide and the documentation on how to use scripting in our Advanced Documentation.
For developers, Phantom also provides an AMQP interface.
Phantom can be extended by developing new Decision Engines – components that determine the behavior of the service. Most users extend Phantom by developing an external Decision Engine, i.e. an agent that monitors a desired behavior (potentially based on data provided by Phantom), makes decisions on how to evolve a group of VMs, and then calls out to Phantom to enforce those decisions.
Decision Engines that capture frequently occurring behaviors, such as regulating deployment over multiple cloud or scaling based on frequently considered system factors such as load, are captured by internal Decision Engines. Those are contributed to Phantom code directly and, like every open source contribution, require review.
However, at this time Phantom is primarily available as a service and no formal releases are being packaged and announced.
The architecture has been described in Infrastructure Outsourcing in Multi-Cloud Environment. Our other publications also describe the effect of various policies on resource scaling in multi-cloud environment and explore relevant techniques.