Snooze on Grid'5000

From Grid5000
Jump to: navigation, search
Snooze.jpg

Author:

  • Eugen Feller, Postdoctoral researcher, Inria Rennes - Bretagne Atlantique, MYRIADS Team | mail | Webpage
  • Matthieu Simonin mail

Contents

Introduction

Snooze is an open-source scalable, autonomic, and energy-efficient virtual machine (VM) management framework for private clouds. It is one of the core results of Eugen Feller`s PhD thesis under the supervision of Dr. Christine Morin at the INRIA MYRIADS project-team and is now used within the MYRIADS project-team in various cloud computing research activities. The system design and development was funded by the ANR EcoGrappe project under the contract number ANR-08-SEGI-008-02.

Similarly to other VM management frameworks such as Nimbus, OpenNebula, Eucalyptus, and OpenStack it allows users to build compute infrastructures from virtualized resources. Particularly, once installed and configured it allows its users to submit and control the life-cycle of a large number of VMs. However, contrary to existing frameworks for scalability, Snooze employs a self-organizing and healing hierarchical architecture. Moreover, it performs distributed VM management and is designed to be energy efficient. Therefore, it implements features to monitor and estimate VM resource (CPU, memory, network Rx, network Tx) demands, detect and resolve overload/underload situations, perform dynamic VM consolidation through live migration, and finally power management to save energy. Last but not least, it integrates a generic scheduler which allows to implement any VM placement algorithm.

We give two ways of deploying Snooze on Grid'5000. The prefer way is the ruby based deployment, the bash based script can be use to deploy differents topologies of Snooze.

Installation (ruby capistrano restfully xp5k)

Prerequists

Make sure to have an up to date ruby environment, managed if possible with rvm (https://rvm.io/) and the gem bundler installed.

Make sure to have restfully with your credentials located in the file ~/.restfully/api.grid5000.fr.yml

NB : This script will be launched from your laptop.


Deploy and experiment

The tutorial is available in the documentation section of the Snooze web site (http://snooze.inria.fr).

Direct link : http://snooze.inria.fr/documentation/stable/html/administrator-snoozenode/deployment/grid5000capistrano.html

Installation (bash scripts)

Warning.png Warning

This script haven't been updated for the 2.1.x version of snooze using cassandra DB. You can still used them configuring Snooze with the in memory database but some features won't be available.

Reservation

  • Make a reservation :
       (frontend)$ oargridsub -t deploy -w 1:00:00 rennes:rdef="{\\\\\\\"type='kavlan-global'\\\\\\\"}/vlan=1+/nodes=3",lyon:rdef=/nodes=3,sophia:rdef=/nodes=3 > ~/oargrid.out

NB1 : On a single site you don't need to reserve a vlan. The reservation could be :

       (frontend)$ oarsub -I -t deploy -l slash_22=1,nodes=10,walltime=8

NB2 : With a multisite reservation, the file oargrid.out is used by the script so it must be placed in your home directory.


If everything is fine this file looks like :

   rennes:rdef={\\\"type='kavlan-global'\\\"}/vlan=1+/slash_22=1,lyon:rdef=/nodes=3,sophia:rdef=/nodes=3
   [OAR_GRIDSUB] [rennes] Date/TZ adjustment: 0 seconds
   [OAR_GRIDSUB] [rennes] Reservation success on rennes : batchId = 471354
   [OAR_GRIDSUB] [lyon] Date/TZ adjustment: 0 seconds
   [OAR_GRIDSUB] [lyon] Reservation success on lyon : batchId = 599979
   [OAR_GRIDSUB] [sophia] Date/TZ adjustment: 0 seconds
   [OAR_GRIDSUB] [sophia] Reservation success on sophia : batchId = 530702
   [OAR_GRIDSUB] Grid reservation id = 42581
   [OAR_GRIDSUB] SSH KEY : /tmp/oargrid//oargrid_ssh_key_msimonin_42581
     You can use this key to connect directly to your OAR nodes with the oar user.
  

Prepare the environment

  • Connect to your job (with the kavlan reservation):
       (frontend)$ oarsub -C 471354
  • Configure the proxy :
       (frontend)$ export https_proxy="http://proxy:3128"
  • Clone the git repository :
       (frontend)$ git clone https://github.com/snoozesoftware/snooze-deploy-grid5000.git
  • Download latest stable version of debian package (snoozenode is require, snoozeclient is optional) :
       (frontend)$ cd ~/snooze-deploy-grid5000/deb_packages/
       (frontend)$ wget https://ci.inria.fr/snooze-software/job/maint-1.1.0-snoozenode/ws/distributions/deb-package/snoozenode_1.1.0-0_all.deb  
       (frontend)$ wget https://ci.inria.fr/snooze-software/job/maint-1.1.0-snoozenode/ws/distributions/deb-package/snoozeclient_1.1.0-0_all.deb  

Other packages could be found in the dedicated workspace in https://ci.inria.fr/snooze-software/.

  • Configure the number of nodes in the **settings.sh** and the deployment type :
       (frontend)$ cd ~/snooze-grid5000-multisite/deployscript/
       (frontend)$ vi scripts/settings.sh
       multisite=true|false
       storage_type="nfs|local"
       number_of_bootstrap_nodes=1
       number_of_group_managers=2
       number_of_local_controllers=5

NB : Since we use a "service node" for the deployment you will get a Snooze cluster running with n-1 nodes. NB2 : If you set storage type to "local", the VMs base images will be propagated by scp-tsunami, you have to install it in /opt of the first bootstrap (see settings.sh of experiments scripts).

  • Retrieve VMs base images in **~/vmimages/**

You can get my debian base image in /home/msimonin/vmimages in Rennes (see Snooze documentation to know how to generate a new image)

       (frontend)$ scp -r <yourlogin>@rennes:/home/msimonin/vmimages ~/.

Deploy and experiment

  • Launch the automatic script :
       (frontend)$ ./snooze_deploy.sh -a
  • Connection to the service node :
       (frontend)$ cat tmp/service_node.txt
       (frontend)$ ssh -l root <service node>
  • Connection to the first bootstrap :
       (service)$ cd /tmp/service/snooze-deploy-grid5000
       (service)$ cat tmp/bootstrap_nodes.txt
       (service)$ ssh -l root <first bootstrap>
  • Launching VMs :

The first bootstrap node hosts some helper to launch VMs.

       (bootstrap)$ cd /tmp/snooze/experiments
       (bootstrap)$ ./experiments -c test 5
       (bootstrap)$ snoozeclient start -vcn test

These commands will create and start 10 VMs.

  • Visualizing the system :

Make a tunnel (or export your display) from your laptop to the bootstrap through the grid'5000 frontend on port 5000. If snoozeclient is installed on your PC, you can launch :

       (PC) snoozeclient visualize.

You now hopefully have your first Snooze cluster up and running! Congratulations! If not please see the following section on how to report problems!

Feedback and Contributions

We would be more than happy to receive your feedback and contributions (bug fixes, new features) either to the deployment script or the system itself. The preferred way to provide feedback’s and ask questions is to use the Snooze group or the IRC channel #snooze at irc.freenode.net. You can also contact me directly for urgent questions. I will try to answer as soon as possible. However, if the community can benefit from your question please ask it in the group or on IRC. Please visit the How to contribute section for details regarding contributions.

Personal tools
Namespaces

Variants
Actions
Public Portal
Users Portal
Admin portal
Wiki special pages
Toolbox