Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

updating the doc for multicloud

  • Loading branch information...
commit ac4d8bef56acfa543729c2db1bdb89913cabe83f 1 parent f3a32ae
@buzztroll buzztroll authored
View
4 phantom/arch.rst
@@ -51,10 +51,10 @@ A `RabbitMQ <http://www.rabbitmq.com/>`_ server is running inside of a
VM. This approach allows us to scale up the messaging system and the
components interacting with it.
-ZooKeeper
+Zookeeper
=========
-All of our components use a `ZooKeeper <http://zookeeper.apache.org/>`_
+All of our components use a `Zookeeper <http://zookeeper.apache.org/>`_
cluster for persistent storage. This again allows for high scalability.
DTRS
View
BIN  phantom/images/phantom_domain.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  phantom/images/phantom_home.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  phantom/images/phantom_lc.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  phantom/images/phantom_sites.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
2  phantom/index.rst
@@ -12,7 +12,7 @@ This guide contains configuration information about the Nimbus Phantom
service. This service dynamically scales and preserves VMs for users.
It currently is running and available on
`FutureGrid <http://www.futuregrid.org/>`_ allowing users to scale
-VMs that are running on the many clouds of FutureGrid.
+VMs that are running on the many clouds of FutureGrid as well as EC2.
.. toctree::
:maxdepth: 1
View
78 phantom/protocol.rst
@@ -26,27 +26,64 @@ which have been implemented by the Nimbus Phantom service:
key. It describes the details of every VM instance
that will be launched in a group. An important difference between
the Nimbus system and the AWS protocol is the name given to a launch
- configuration. On Nimbus Phantom you must use the following naming convention:
- <unique user selected name>@<target cloud name>. The
- user selected name can be anything the user wishes, but it must be
- unique. The cloud name must be one of the Nimbus Futuregrid clouds:
- 1) hotel, 2) sierra, 3) foxtrot, 4) alamo.
+ configuration.
+
+ On Nimbus Phantom you must use the following naming convention:
+ <launch configuration name>@<target cloud name>. The
+ launch configuration name can be anything the user wishes, but it must be
+ unique. The cloud name must be one of the site names which you have
+ configured. The current options are:
+ 1) hotel, 2) sierra, 3) foxtrot, 4) alamo, 5) ec2 (if you have set it up).
+
+ When setting up a Launch configuration you can add many sites to a
+ single launch configuration name. By doing this you can take advantage
+ of the multi-cloud overflow capabilities which are unique to Phantom.
+
+ For example, if you wish to have a launch configuration named *mylaunch*
+ that will later
+ allow you to launch 10 VMs such that 8 are on FutureGrid's hotel and
+ 2 are on EC2, you would need to call CreateLaunchConfiguration twice,
+ first with mylaunch@hotel and next with mylaunch@ec2.
+
The REST protocol details
can be found `here <http://docs.amazonwebservices.com/AutoScaling/latest/APIReference/API_CreateLaunchConfiguration.html>`_.
* ``DeleteLaunchConfiguration``. This simply deletes a launch
configuration that the user previously created with a call to
- CreateLaunchConfiguration.
+ CreateLaunchConfiguration. You must use the
+ <launch configuration name>@<target cloud name> name here.
The REST protocol details
can be found `here <http://docs.amazonwebservices.com/AutoScaling/latest/APIReference/API_DeleteLaunchConfiguration.html>`_.
* ``DescribeLaunchConfigurations``. List all of the launch configurations
that the user previously created with calls to CreateLaunchConfiguration.
+ You must use the
+ <launch configuration name>@<target cloud name> name here.
The REST protocol details
can be found `here <http://docs.amazonwebservices.com/AutoScaling/latest/APIReference/API_DescribeLaunchConfigurations.html>`_.
* ``CreateAutoScalingGroup``. This API function will start running a group
of VMs described by the provided 'Launch Configuration'.
+
+ A major difference between Phantom and EC2 is that in this call you must
+ specify some Tags that control how your autoscale group will interact
+ between clouds. The following 3 tags are needed:
+
+ * key: PHANTOM_DEFINTION, value: error_overflow_n_preserving
+ In this version of Phantom that is the only accepted value
+
+ * key: clouds, value: a comma separated ordered list of
+ the following format:
+
+ <cloud name>:<max VMs for that cloud>
+
+ each cloud name must be in the LaunchConfiguration also given to
+ this API call. The max VM value tells phantom to not run more
+ VMs than that number of the cloud. A value of -1 means infinity.
+
+ * key: n_preserve, value: an integer specifying the maximum number of
+ VMs to schedule across all the clouds.
+
The REST protocol details
can be found `here <http://docs.amazonwebservices.com/AutoScaling/latest/APIReference/API_CreateAutoScalingGroup.html>`_.
@@ -87,12 +124,31 @@ Configuration <http://docs.amazonwebservices.com/AutoScaling/latest/GettingStart
be helpful to understand. Launch Configurations can be stored for
many runs and reused.
+For every cloud on which you want your domain to run you must call
+`Create Launch Configuration <http://docs.amazonwebservices.com/AutoScaling/latest/GettingStartedGuide/CreateASGroup.html#create-launch-config>`_
+Pick a launch configuration name and append "@<sitename>" to it.
+Then that name will be used to manage what each site will run via
+the Create Launch Configuration REST API call.
+
Once a launch configuration is created, the user will launch an
-"Auto Scale Group". To do this the user picks a target cloud, and
-a target number of VMs to preserve. Once the Auto Scale Group is
-created the service will make sure that the desired number of VMs will
-be running at all times. If a VM unexpectedly dies, the service will
-start a new one in its place.
+"Auto Scale Group". To do this the user must pick three things:
+
+* The total number of VMs that will be in this autoscale group (this
+ number can be adjusted later). The set of VMs may be across many
+ clouds. This value is called the *desired size*.
+
+* The launch configuration to be used with this domain.
+
+* The set of clouds on which the VMs will be run. Each cloud must be in
+ the associated launch configuration. The list of clouds needs to be
+ ordered. A maximum number of VMs can be associated with each cloud, a
+ value of negative one means infinity.
+
+When scheduling scheduling VMs phantom will try to achieve the *desired size*.
+It will start with the first cloud and launch VMs until it hits the limit
+for that cloud or until it starts running into errors (typically due
+to capacity limits on that cloud). At that point it will move to the
+next cloud.
During the life-cycle of the user's application, they may decide to change the
number of VMs they have. They can do this with a call to 'SetDesiredCapacity'.
View
28 phantom/quickstart.rst
@@ -41,8 +41,12 @@ For convenience store those values in the following environment variables::
boto
====
-We recommend using `boto <https://github.com/boto/boto>`_ to interact with
-the system. The first thing you should do is create a python
+We recommend using boto to interact with the system. Unfortunately
+the latest released version of boto does not yet include a needed
+patch so you will need to get our forked version
+`here <https://github.com/buzztroll/boto>`_
+
+The first thing you should do is create a python
`virtual environment <http://pypi.python.org/pypi/virtualenv>`_ and install
boto into it. The following commands should do this for you::
@@ -52,15 +56,19 @@ boto into it. The following commands should do this for you::
Installing pip...............done.
$ source phantom/bin/activate
- $ easy_install boto
- Searching for boto
- Best match: boto 2.0
- Adding boto 2.0 to easy-install.pth file
-
- Using /usr/lib/python2.7/dist-packages
- Processing dependencies for boto
- Finished processing dependencies for boto
+ ~$ git clone git://github.com/buzztroll/boto.git
+ Cloning into 'boto'...
+ remote: Counting objects: 22004, done.
+ remote: Compressing objects: 100% (5802/5802), done.
+ Receiving objects: 100% (22004/22004), 5.27 MiB | 414 KiB/s, done.
+ remote: Total 22004 (delta 16804), reused 21222 (delta 16144)
+ Resolving deltas: 100% (16804/16804), done.
+ $ cd boto/
+ $ python setup.py install
+ .......
+ Processing dependencies for boto==2.5.2
+ Finished processing dependencies for boto==2.5.2
You now have boto installed and ready to use. Please note the command::
View
2  phantom/scripting.rst
@@ -5,7 +5,7 @@ Scripting with the REST API
Because the Nimbus autoscaling service is protocol compliant with
the AWS autoscaling service there are many clients and libraries
that can be used. However, the only one tested thus far is
-`boto <https://github.com/boto/boto>`_. On this page we will describe
+`boto <https://github.com/buzztroll/boto>`_. On this page we will describe
some simple boto applications for interacting with the Nimbus
Auto Scale service.
View
90 phantom/webapp.rst
@@ -24,46 +24,88 @@ below:
If you have forgotten your account information you can click on the
`Forgot Password <https://svc.uc.futuregrid.org:8440/accounts/reset_password/>`_
-link. After successfully logging in you will be presented with
-a screen similar to the following:
+link. After successfully logging in you will be presented with the landing
+page:
-.. image:: images/phantom_main.png
+.. image:: images/phantom_home.png
:width: 500
:height: 313
+That screen explains the basic steps. The first thing you need to do is
+go to the
+`Edit Clouds <https://svc.uc.futuregrid.org:8440/phantom/sites>`_
+page and add your site credentials. The page should look like this:
+
+.. image:: images/phantom_sites.png
+ :width: 500
+ :height: 313
+
+All FutureGrid accounts should come pre-loaded with your credentials. If you
+wish to use EC2 you can add your credentials by selecting the EC2 cloud,
+adding your access and secret key, and then click save. Once the system
+has your keys you can select the keyname that you wish to use. Select it
+and click save a second time.
+
+Create a launch configuration
+=============================
+
+Once you have all of your site information configured it is time to create
+a launch configuration. Got to the
+`Launch Configuration <https://svc.uc.futuregrid.org:8440/phantom/launchconfig>`_
+page and you will see a screen like the following:
+
+.. image:: images/phantom_lc.png
+ :width: 500
+ :height: 313
+
+This is where you create a launch plan. The first thing to do is to select
+a name for the launch configuration, for this example we will use
+*testoverflow*. Now the ordered list of clouds must be created. On the left
+panel *Cloud Options* select a cloud from the list. Then give it a max
+number of VMs that you will allow on that cloud (-1 means infinity).
+Select an instance type (if you are unsure choose m1.small). Finally
+select the image you wish to launch. In the combo box labeled * Personal Image*
+you will find a list of all of the images you have created and uploaded.
+If you have not yet done this you can specify the name of a public image.
+If you are using a FutureGrid cloud enter *hello-cloud*.
+
+Click *Add* to add the cloud configuration to the list. Now you can configure
+the next cloud by repeating the above process with another cloud in the
+Cloud Options panel.
+
+Once you have added all of the clouds you can use the *Up* and *Down* buttons
+to order them. When you are happy with the order click the *Save* button
+at the top. Once successfully saved you can launch a domain using this launch
+configuration.
+
Launch a domain
===============
At this point you can use the application to create new domains, monitor
existing domains, resize existing domains, and terminate existing domains.
-To launch a new domain the first thing you should do is select a name for
-it and enter it into the 'Domain Name' text box. After that set the
-number of VMs you wish to run in this domain by typing that number in the
-"Size" box.
+To launch a new domain go to the
+`domains <https://svc.uc.futuregrid.org:8440/phantom/domain>`_
+page. You should see something like this:
-Next select one of the FutureGrid clouds on which your domain will run.
-There are four clouds, hotel, sierra, alamo, and foxtrot. Note that as
-you select different clouds the 'Personal Image' and 'Public Image'
-boxes change. This is because the set of images available on each cloud
-need not be identical.
+.. image:: images/phantom_lc.png
+ :width: 500
+ :height: 313
-Once you have selected a cloud select an image that you wish to run. You
-may choose from the list of publicly available images (images that are
-available for all cloud users) or from your set of personal images (images
-that are just for your use).
+The first thing you should do is select a name for
+it and enter it into the 'Domain Name' text box. After that set the
+number of VMs you wish to run in this domain by typing that number in the
+"Size" box. Finally select the launch configuration you wish to use.
+In the screen above we selected *testoverflow*.
-The final step is to select and instance type and click 'Start'. Once you
+The final step is to select click 'Start'. Once you
start it you will notice that your 'domain name' is now listed in the
lowest box on the left panel. This means that the system is aware of your
-domain and running it. Click on your domain name and you should see
-a screen similar to the one below:
-
-.. image:: images/phantom_details_pane.png
- :width: 500
- :height: 313
+domain and running it.
-Notice that details about your domain are listed in the right pane. Each
+Click on your domain name and you should see
+the domain details panel populated with information about your domain.
+Each
entry represents the state of one of your requested VMs. When a VM
instance is listed as 'RUNNING' it is ready for use (you can ssh into it as
root).
Please sign in to comment.
Something went wrong with that request. Please try again.