Difference between revisions of "Proj-2012-2013-OAR-Cloud"

From air
Jump to navigation Jump to search
Line 192: Line 192:
   
 
''Setting the container as a libvirt one''
 
''Setting the container as a libvirt one''
: Now, we are able to create the libvirt container :
 
 
:<code>virsh --connect lxc:/// define ubuntu1.xml</code>
 
:<code>virsh --connect lxc:/// define ubuntu1.xml</code>
  +
  +
  +
''Booting the container''
  +
:<code>virsh -c lxc:/// start ubuntu1</code>
  +
  +
  +
''Connecting to the container localy''
  +
:<code>virsh -c lxc:/// console ubuntu1</code>
  +
  +
  +
''Connecting to the container remotly''
  +
:<code>virsh -c lxc+{IPDEST}:/// console ubuntu1</code>
  +
  +
  +
''Shutting the container ''
  +
:<code>virsh -c lxc:/// destroy ubuntu1</code>
  +
  +
  +
''Deleting the container''
  +
:<code>virsh -c lxc:/// undefine ubuntu1</code>
  +
   
   

Revision as of 17:21, 18 February 2013

OAR Cloud Project

This project aims at creating a light cloud computing architecture on top of the batch scheduler OAR.

Project Members

This project is proposed by:

Olivier Richard - Teacher and researcher in RICM's Polytech Grenoble training

Three students from RICM are working on it:

  • Jordan Calvi (RICM4)
  • Alexandre Maurice (RICM4)
  • Michael Mercier (RICM5)

Conception

Context

There is two kind of actors that are dealing with OAR cloud, users and administrators. The F.u* and the F.a* are the user and Administrator features describe below.

OAR Cloud Context Diagram

Features

User

Main features:

F.u.0 Connect to an account

F.u.1 Launch and configure one or more instances

F.u.2 Deploy an image on one or more instances

F.u.3 Modify and save images

F.u.4 Setup alarms based on rules using metrics

F.u.5 Being inform by e-mail and/or notification for interesting events

Advanced features:

F.u.6 Automated resize of an instance (adapt the resources) using predefined rules and schedule

F.u.7 Load balancing between several instances

F.u.8 Advanced Network configuration for user: ACL, subnets, VPN...

Administrator

F.a.0 Create/delete user account

F.a.1 Add/remove and manage resources

F.a.2 Visualize resources and instances states

F.a.3 Install and update nodes operating systems

F.a.4 Handle users access rights

F.a.5 Setup alarms based on rules using metrics

F.a.6 Being inform by e-mail and/or notification for interesting events

Logical View

Here is the logical view of the OAR Cloud system. Every component on this diagram represents a software component type. The links between these components represent the communication between them.

OAR Cloud Logical View

Description of the main components:

AccountManager
Handle users and admins access rights
AccessPoint
The system access point reached by the different access tools
InstanceManager
Manage the creation, configuration and deletion of instances all over the severals nodes. It also handles the appliances persistence and deployment
UserCLI & AdminCLI
Command line access tools for users and admins

Architecture

Libvirt and LXC

LXC

LXC is a lightweight hypervisor allowing to run isolated appliances. Indeed, it provides a virtual environment that has its own process and network space. It is similar to a chroot. As LXC is implemented on given linux kernel, only operating systems that are compatible with the hosting kernel will be able to run. It is based on cgroups (control groups), a Linux kernel feature to manage ressources like CPU, memory and disk I/O by limiting resources, prioritizing groups, accounting (measuring), isolating (separate namespaces for groups, it means processes, network connections and files are not visible by other groups) and controling groups.


Installation


/!\ LXC as been set up succesfully on ubuntu 12.04 LTS as container launching does not works on Debian Wheeze testing OS. /!\


Packages installation

aptitude install lxc bridge-utils debootstrap
/?\ Conteners will be placed in /var/lib/lxc /?\


Mounting cgroups automatically : edit /etc/fstab and add the following

cgroup /sys/fs/cgroup cgroup defaults 0 0


Enabling previous modifications

mount -a


Checking everything is ok

lxc-checkconfig


Manipulation of containers


Creating a container running Debian

lxc-create -t debian -n vm1


Showing existing containers and thoses that are running

lxc-ls
/?\ The first line indicates existing containers and the second one thoses in running state. /?\


Obtaining information about vm1

lxc-info -n vm1


Starting a VM

lxc-start -n vm1


Connection to a VM

lxc-console -n vm1


Shutting down a VM

lxc-stop -n vm1


Exiting console

perform CTRL-a q


Configuring the VM


At boot time, a virtual machines reads the file /var/lib/lxc/{VM-name}/config to set up its configuration (root file system, number of TTY, limites, etc).


Configuring default network and switch


  • /etc/default/lxc

Libvirt

Installation


Packages installation

apt-get install libvirt-bin


Creating an XML file configuration to import an existing container in libvirt

/!\ Notice that libvirt can not install am OS in a container. Therefore, an LXC container with an OS must have been set up previously (that was the we saw before). Then, the file system directory will be given to libvirt when importing the VM. /!\
In order to create a libvirt container, an XML file describing the VM we want to import must be filled. There is a sample of such an XML file that belong to VM "ubuntu1" we have just created :
<domain type='lxc'
  <name>ubuntu1</name>
  <memory>332768</memory>
  <os>
    <type>exe</type>
    <init>/sbin/init</init>
  </os>
  <vcpu>1</vcpu>
  <clock offset='utc'/>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>destroy</on_crash>
  <devices>
    <emulator>/usr/lib/libvirt/libvirt_lxc</emulator>
    <filesystem type='mount'>
      <source dir='/var/lib/lxc/ubuntu1/rootfs'/>
      <target dir='/'/>
    </filesystem>
    <interface type='network'>
      <source network='default'/>
    </interface>
    <console type='pty' />
  </devices>
</domain>


Setting the container as a libvirt one

virsh --connect lxc:/// define ubuntu1.xml


Booting the container

virsh -c lxc:/// start ubuntu1


Connecting to the container localy

virsh -c lxc:/// console ubuntu1


Connecting to the container remotly

virsh -c lxc+{IPDEST}:/// console ubuntu1


Shutting the container

virsh -c lxc:/// destroy ubuntu1


Deleting the container

virsh -c lxc:/// undefine ubuntu1


Problemes


  • Using Ubuntu as a host,when connecting to a libvirt VM running Debian, the guest appliance waits for user to loggin through two interfaces at a time (tty1 and console), so it is not possible to get identified.
  • Using Debian Wheeze as a host, when connecting to a libvirt VM, the console does not offer the user the possibility to loggin. However, when using directly LXC there is no issue.

Open vSwitch

TODO list

  • Explore Amazon Elastic Compute Cloud API
  • Understand technologies:
    • OAR
    • LXC
    • Libvirt
    • OpenVSwitch
  • find out how to handle dynamic jobs

Journal

04/02

  • We have specified the subject
  • Distribute the work between us.
    • Jordan: LXC and Libvirt
    • Alexandre: OpenVSwitch and Libvirt
    • Michael: OAR and global architecture