EC2 Driver Guide 1.2
You should take into account the following technical considerations when using the EC2 cloud with OpenNebula:
Please refer to the EC2 documentation to obtain more information about Amazon instances types and image management:
You must have a working account for AWS and signup for EC2 and S3 services, and also download and unpack the EC2 API tools provided, do some manual test to verify everything works before start configuring OpenNebula for EC2 support.
Please note that EC2 has to be installed only in the cluster front-end.
The driver consists of the following files:
$ONE_LOCATION/lib/mads/one_im_ec2.rb
: This file is accessed by the Information Manager to get the maximum memory and cpu constraints for EC2 allocations.$ONE_LOCATION/lib/mads/one_vmm_ec2.rb
: This is the main ruby program file that invokes EC2 actions like deploy, shutdown…$ONE_LOCATION/etc/im_ec2/im_ec2.conf
: In this file we define the maximum capacity that we want to allocate in EC2.# Max number of instances that can be launched into EC2 SMALL_INSTANCES=5 LARGE_INSTANCES= EXTRALARGE_INSTANCES=
$ONE_LOCATION/etc/vmm_ec2/vmm_ec2.conf
: In this file we define default configurations for the VM placed in EC2, for example the “instancetype” attribute.# Default configuration attributes for the EC2 driver # (all domains will use these values as defaults) # Valid atributes are: # - ec2[keypair,instancetype] #Example: EC2 = [ keypair="gsg-keypair", instancetype="m1.small"] EC2 = [ instancetype="m1.small" ]
$ONE_LOCATION/etc/vmm_ec2/vmm_ec2rc
: In this file we configure the account that will be used to launch instances on EC2, these are the environment variables needed by the EC2 API.
Note: If OpenNebula was installed in system wide mode these directories become /usr/lib/one/mads
and /etc/one/
, respectively. The rest of this guide refers to the $ONE_LOCATION
paths (corresponding to self contained mode) and omits the equivalent system wide locations. More information on installation modes can be found here.
Two lines must be added to the $ONE_LOCATION/etc/oned.conf
file in order to use the driver.
IM_MAD = [ name = "im_ec2", executable = "one_im_ec2", arguments = "im_ec2/im_ec2.conf", default = "im_ec2/im_ec2.conf" ] VM_MAD = [ name = "vmm_ec2", executable = "one_vmm_ec2", default = "vmm_ec2/vmm_ec2.conf", type = "ec2" ]
After configuring everything when you start ONE, you need to add the ec2 host to the host list to be able to submit virtual machines, like following:
onehost create ec2 im_ec2 vmm_ec2 tm_dummy
Additionally you must configure the location of your EC2 certificates and EC2 API installation path, for this edit the file $ONE_LOCATION/etc/vmm_ec2rc and add:
EC2_HOME="<path_to_your_ec2_installation>" EC2_PRIVATE_KEY="<path_to_your_private_key>" EC2_CERT="<path_to_your_public_cert>"
Also you must configure the maximum capacity that you want OpenNebula to deploy on the EC2, for this edit the file $ONE_LOCATION/etc/im_ec2/im_ec2.conf , in this example we say that we want at much 4 small and 1 large instances launched into EC2:
# Max number of instances that can be launched into EC2 SMALL_INSTANCES=4 LARGE_INSTANCES=1 EXTRALARGE_INSTANCES=
You must create a template file containing the information of the AMIs you want to launch, its important to note that when deploying VMs on EC2 with OpenNebula, the template file should contain the attributes AMI and KEYPAIR used by the EC2 VMM Mad.
Additionally if you have an elastic IP address you want to use with your EC2 instances, you can specify it as an optional parameter.
CPU = 0.5 MEMORY = 128 #Xen or KVM template machine, this will be use when submitting this VM to local resources OS = [kernel="/vmlinuz",initrd= "/initrd.img",root="sda1" ] DISK = [source="/imges/apache.img",target="sda",readonly="no"] NIC = [bridge="eth0"] #EC2 template machine, this will be use wen submitting this VM to EC2 EC2 = [ AMI="ami-00bafcb5", KEYPAIR="gsg-keypair", ELASTICIP="75.101.155.97", AUTHORIZED_PORTS="22", INSTANCETYPE=m1.small] #Add this if you want to use only EC2 cloud #REQUIREMENTS = 'HOSTNAME = "ec2"'
You only can submit and control the template using the OpenNebula interface:
onevm submit ec2template
Also you can see information (like IP address) related to the amazon instance launched via the command
$:onevm show 0 onevm show 0 VID : 0 AID : -1 TID : -1 UID : 0 STATE : ACTIVE LCM STATE : RUNNING DEPLOY ID : i-1d04d674 MEMORY : 0 CPU : 0 PRIORITY : -2147483648 RESCHEDULE : 0 LAST RESCHEDULE: 0 LAST POLL : 1216647834 START TIME : 07/21 15:42:47 STOP TIME : 01/01 01:00:00 NET TX : 0 NET RX : 0 ....: Template :.... CPU : 1 EC2 : AMI=ami-dcb054b5,AUTHORIZED_PORTS=22-25,ELASTICIP=75.101.155.97,INSTANCETYPE=m1.small,KEYPAIR=gsg-keypair IP : ec2-75-101-155-97.compute-1.amazonaws.com MEMORY : 1700 NAME : one-0 REQUIREMENTS : HOSTNAME = "ec2"
You can check out the EC2-ONE Use Case here to see how to scale out a computing cluster with OpenNebula and EC2.