Installation with Quattor

Layout of Installation

This installation uses Quattor for an automated installation of one OpenNebula front-end and one or more OpenNebula nodes. The OpenNebula daemon runs on the front-end and controls the virtual machines running on all of the OpenNebula nodes/hosts.

This configuration assumes that KVM hypervisor is being used.

The front-end acts as an NFS server and shares two areas with the nodes:

  • Virtual machine area (/var/lib/one)
  • Home area of oneadmin user (/home/oneadmin)

The front-end should have a large amount of free disk space available in /var.

The oneadmin unix user will run the daemon on the front-end and controls all of the nodes via ssh. The configuration uses the same uid/gid for the oneadmin user on all of the nodes and permits password-less access between all of the OpenNebula nodes.

The following figure shows the reference deployment that is created with the Quattor configuration.

The installation uses the default database, sqlite. You can also use mysql as database backend.

Packages

The StratusLab packages used in this installation are:

  • one: StratusLab packaging of OpenNebula
  • stratuslab-cli-sysadmin: StratusLab scripts for the administrator
  • stratuslab-cli-user: StratusLab scripts for the end user
  • ncm-oned: Quattor configuration module for oned
  • ncm-libvirtd: Quattor configuration module for libvirtd
  • ncm-claudia: Quattor configuration module for claudia service
  • ncm-ganglia: Quattor configuration module for ganglia
  • ncm-one_proxy: Quattor configuration module for proxy authentification

These are all available in the releases yum repository.

Some external dependencies are also available in the releases yum repository. These include:

  • rubygem-sequel (v3.20.0-1)

The Quattor configuration for StratusLab can be found in the StratusLab maven repository. Use the latest version of the quattor-cloud-config*.tar.gz.

You will also need to download the configuration files for ncm-libvirtd and ncm-oned.

The other configuration modules used by the Quattor configuration are part of the standard set of modules provided from the QWG distribution.

Front-end Configuration

For the OpenNebula front-end, create a machine profile like the following:

object template profile_onehost-172;

include { 'machine-types/one-frontend' };

#
# software repositories (should be last)
#

include { PKG_REPOSITORY_CONFIG };

Be sure to modify the variables in the one-parameters.tpl template.

Node Configuration

For each OpenNebula node, create a machine profile like the following:

object template profile_onehost-173;

include { 'machine-types/one-host' };

#
# software repositories (should be last)
#

include { PKG_REPOSITORY_CONFIG };

Be sure to modify the variables in the one-parameters.tpl template.

Post-Configuration

The monitoring tools need some manual configuration:

  1. Configuring the web monitor.
  2. Verifying the ganglia configuration.

These will need to be done with the root account.

Backend configuration

Quattor can configure mysql as OpenNebula backend database. To use it, you must add the following information into frontend template.

variable ONE_SQL_BACKEND ?= 'mysql';
variable MYSQL_PASSWORD ?= 'xxx';

Network Configuration

On StratusLab, there are mainly 3 network relative component:

  • OpenNebula : which assign a IP and a Mac Address to a VM
  • DHCP : which answer the VM IP request (and permit to boot on PXE)
  • Claudia : which is a service manager that need to have a specific IP range to work.

Quattor can manage all this component with 1 variable : ONE_NETWORK

The following example show you how you can define network on quattor to configure StratusLab

variable ONE_NETWORK = nlist(
'domain','lal.in2p3.fr',
'nameserver', list('134.158.91.80'),
'public', nlist(
                 'interface', 'br0',
                 'subnet', '134.158.75.0',
                 'router', '134.158.75.1',
                 'netmask', '255.255.255.0',
                 'vms',nlist(
                        'onevm-32',nlist('mac-address','0a:0a:86:9e:49:20','fixed-address','134.158.75.32','claudia','no'),
                        'onevm-33',nlist('mac-address','0a:0a:86:9e:49:21','fixed-address','134.158.75.33','claudia','no'),
                        'onevm-34',nlist('mac-address','0a:0a:86:9e:49:22','fixed-address','134.158.75.34','claudia','no'),
                        'onevm-35',nlist('mac-address','0a:0a:86:9e:49:23','fixed-address','134.158.75.35','claudia','no'),
                        'onevm-36',nlist('mac-address','0a:0a:86:9e:49:24','fixed-address','134.158.75.36','claudia','dyn'),
                        'onevm-37',nlist('mac-address','0a:0a:86:9e:49:25','fixed-address','134.158.75.37','claudia','dyn'),
                        'onevm-38',nlist('mac-address','0a:0a:86:9e:49:26','fixed-address','134.158.75.38','claudia','dyn'),
                        'onevm-39',nlist('mac-address','0a:0a:86:9e:49:27','fixed-address','134.158.75.39','claudia','dyn'),
                        'onevm-40',nlist('mac-address','0a:0a:86:9e:49:28','fixed-address','134.158.75.40','claudia','sta'),
                        'onevm-41',nlist('mac-address','0a:0a:86:9e:49:29','fixed-address','134.158.75.41','claudia','sta')
                        ),
                ),
'local',nlist(
                'interface', 'br0:privlan',
                'subnet',  '172.17.16.0',
                'router',  '172.17.16.1',
                'netmask', '255.255.255.0',
                'vms',nlist(
                        'onevmp-32',nlist('mac-address','0a:0b:86:9e:49:20','fixed-address','172.17.16.32','claudia','no'),
                        'onevmp-33',nlist('mac-address','0a:0b:86:9e:49:21','fixed-address','172.17.16.33','claudia','no'),
                        'onevmp-34',nlist('mac-address','0a:0b:86:9e:49:22','fixed-address','172.17.16.34','claudia','no'),
                        'onevmp-35',nlist('mac-address','0a:0b:86:9e:49:23','fixed-address','172.17.16.35','claudia','no'),
                        'onevmp-36',nlist('mac-address','0a:0b:86:9e:49:24','fixed-address','172.17.16.36','claudia','no'),
                        'onevmp-37',nlist('mac-address','0a:0b:86:9e:49:25','fixed-address','172.17.16.37','claudia','no'),
                        'onevmp-38',nlist('mac-address','0a:0b:86:9e:49:26','fixed-address','172.17.16.38','claudia','no'),
                        'onevmp-39',nlist('mac-address','0a:0b:86:9e:49:27','fixed-address','172.17.16.39','claudia','no'),
                        'onevmp-40',nlist('mac-address','0a:0b:86:9e:49:28','fixed-address','172.17.16.40','claudia','dyn'),
                        'onevmp-41',nlist('mac-address','0a:0b:86:9e:49:29','fixed-address','172.17.16.41','claudia','dyn')
                        ),
                ),
);

Node Configuration

The host configuration is defined on frontend template.

This is a example of what can be declared into frontend template to enable a host (here onehost-10.lal.in2p3.fr).

'/software/components/oned/hosts/onehost-10.lal.in2p3.fr/enabled' = true;

For smaller installations, the OpenNebula front end can also function as a node/host.

Account Configuration

Account can also be configured by quattor. Both username/password and x509 certificate authentification is supported. The accounts are defined in frontend template.

This is a example of what can be declared into frontend template to add one user.

include { 'components/one_proxy/config' };

prefix '/software/components/one_proxy/config';

'users_by_pswd/xxx/password'   = 'CRYPT:yyy';
'users_by_cert/{CN=MyCN, OU=LAL, O=CNRS, C=FR, O=GRID-FR}/groups' = list('cloud-access');

Claudia Configuration

Claudia Quattor component manage 3 files :

  • /opt/claudia/conf/tcloud.properties
  • /opt/claudia/conf/reportClient.properties
  • /opt/claudia/conf/sm.properties

The Claudia configuration is mainly merge with network configuration. But you can customize your configuration. The following example show you how you can customize your claudia configuration:

prefix '/software/components/claudia';
'sm-config/NetworkMac/MacEnabled'     = true;

'reportClient-config/MonitorName' = 'cpus.1';
'reportClient-config/vmMonName'   = 'workernode.replicas.1';

Configure Web Monitor

The web monitor is not currently configured automatically. As root you need to change the value of one_password in /var/www/cgi-bin/conf/stratuslab.cfg. You can find the password being used by the oneadmin account in the file ~oneadmin/.one/one_auth. The password is the part after the colon.

The web server does not need to be restarted.

Testing

Testing the installation consists of the following:

  • Verify that the OpenNebula configuration is correct.
  • Launch a virtual machine and ensure that one can connect to it.

On the OpenNebula front end, you should see that the services oned and mm_sched are running. Use the command service oned status to verify this.

Use the commands onevnet list and onehost list, and onevm list to verify the network and host configurations, respectively. Initially the two networks should exist with no active leases. The defined hosts should be visible and the monitoring information should be available. The cloud should be empty, so onevm list should return an empty list.

At this point, you should be able to run a virtual machine using OpenNebula. Choose an image and try running it. You should be able to ssh into the running node. You can look for errors in the /var/log/one area.

Monitoring

There are two monitors available for the deployment: StratusLab Web Monitor and Ganglia. The StratusLab Web Monitor shows the node and virtual machine characteristics and is available from:

http://frontend/cgi-bin/nodelist.py

replace frontend with the node name of your cloud frontend.

Ganglia is a standard monitoring framework that is setup to monitor the activity on the physical hosts. It is available from:

http://frontend/ganglia

Again, replace frontend with the node name of your cloud frontend.

Claudia

To start a “helloworld” Virtual Machine with Claudia, you must connect to the frontend and launch

/opt/claudia/bin/ClaudiaC "deploy(hello,world,http://quattorsrv.lal.in2p3.fr/ovf/default.xml)"

Knowns Issues

  • Quattor kickstart generation is broken with fedora14. Kickstart file need some manual fixed to runs with fedora14.
  • ncm-oned component doesn't remove host from OpenNebula even is removed from host list (See Node Configuration).
  • Bookmark at
  • Bookmark "Installation with Quattor" at del.icio.us
  • Bookmark "Installation with Quattor" at Digg
  • Bookmark "Installation with Quattor" at Reddit
  • Bookmark "Installation with Quattor" at Google
  • Bookmark "Installation with Quattor" at StumbleUpon
  • Bookmark "Installation with Quattor" at Facebook
  • Bookmark "Installation with Quattor" at Twitter