Installing Eucalyptus (1.6)

architecture-1.6.png

A Eucalyptus cloud setup consists of five types of components. The cloud controller (CLC) and "Walrus" are top-level components, with one of each in a cloud installation. The cloud controller is a Java program that offers EC2-compatible SOAP and "Query" interfaces, as well as a Web interface to the outside world. In addition to handling incoming requests, the cloud controller performs high-level resource scheduling and system accounting. Walrus, also written in Java, implements bucket-based storage, which is available outside and inside a cloud through S3-compatible SOAP and REST interfaces.

Top-level components can aggregate resources from multiple clusters (i.e., collections of nodes sharing a LAN segment, possibly residing behind a firewall). Each cluster needs a cluster controller (CC) for cluster-level scheduling and network control and a "storage controller" (SC) for EBS-style block-based storage. The two cluster-level components would typically be deployed on the head-node of a cluster. Finally, every node with a hypervisor will need a node controller (NC) for controlling the hypervisor. CC and NC are written in C and deployed as Web services inside Apache; the SC is written in Java. Communication among these components takes place over SOAP with WS-security.

Many instructions in this guide refer to a single-cluster installation, in which all components except NC are co-located on one machine, which we refer to as front-end. All other machines, running only NCs, will be referred to as nodes. In more advanced configurations, such as those with multiple CCs or with Walrus deployed separately, the front-end will refer to just the machine running the CLC.

Eucalyptus can be installed from source or using a set of packages (RPM and DEB). The former method is more general and should work on practically any Linux system, the latter is easier but will only work on the distributions that we support. As of 1.6 they are:

If you are upgrading from a previous version of Eucalyptus, please follow the instructions in the Upgrade Document.

If you run into any problems, be sure to check the troubleshooting guide for solutions to commonly encountered problems.

Installing Eucalyptus from source (1.6)

1. Prerequisites

What follows is a comprehensive list of dependencies that must be satisfied before building Eucalyptus or running it. While we provide distribution-specific installation instructions that help satisfy these dependencies, this list should be useful if you are installing or building Eucalyptus on an unsupported distribution. NOTE - If you are upgrading from a Eucalyptus 1.6.1 or older installation, please consult the Upgrade Documentation for instructions that will explain how to preserve user account information, images, volumes and snapshots.

Prerequisites for compiling from source

  • C compilers
  • Java Developer Kit (SDK) version 1.6 or above
  • Apache ant 1.6.5 or above
  • libc development files
  • pthreads development files
  • libvirt development files
  • Axis2C and rampart development files (included with Eucalyptus)
  • Curl development files
  • openssl development files
  • Optional: zlib development files

Prerequisites for running Eucalyptus

There are a few different Eucalyptus components that run on either the 'front-end or 'node'. There are different run-time dependencies for 'front-end' and 'node' components. One physical machine can play the role of the front-end and the node.

Front-end run-time dependencies

  • Java 6 is needed by the Eucalyptus components running on the front end. Note that GNU Compiler for Java (gcj), included by default with some Linux distributions, is not sufficient. Make sure that your JAVA_HOME environment variable is set to the location of your JDK.
  • Perl is used by helper scripts
  • The head node must run a server on port 25 that can deliver or relay email messages to cloud users' email addresses. This can be Sendmail, Exim, or postfix, or even something simpler, given that this server does not have to be able to receive incoming mail. Many Linux distributions satisfy this requirement out of the box. To test whether you have a properly functioning mail relay for localhost, try to send email to yourself from the terminal using "mail".
  • Dependencies for network support differ depending on the mode used (see Eucalyptus Networking for details). For full functionality satisfy all of them:
    • For all modes:
      • iproute and iptables packages (ip and iptables commands must work)
    • For all modes except SYSTEM:
      • DHCP Server compatible with ISC DHCP Daemon version 3.0.X (dhcp3-server)
    • For MANAGED and MANAGED-NOVLAN modes:
      • bridge-utils package (brctl command must work)
      • vtun package, for multi-cluster configurations
    • Additionally, for MANAGED mode:
      • vlan package (vconfig command must work)
  • For persistent dynamic block storage (aka EBS) to work, the front end will need to have the following software packages installed:
    • lvm2 package (e.g., command lvm should work)
    • aoetools package. The aoe module needs to be loaded on the front end as well as all nodes (modprobe aoe). If your kernel does not have ATA-over-Ethernet support, you will have to add that.
    • vblade package

Node run-time dependencies

  • Perl scripts are invoked by the Node Controller
  • Two hypervisors are supported:
    1. Xen (version >= 3.0.x)
      • Furthermore, xen-utils package is needed (xm command must work)
    2. KVM
  • Dependencies for network support differ depending on the mode used (see Eucalyptus Networking for details). For full functionality satisfy all of them:
    • For all modes:
      • iproute and iptables packages (ip and iptables commands must work)
    • For MANAGED and MANAGED-NOVLAN modes:
      • bridge-utils package (brctl command must work)
    • Additionally, for MANAGED mode:
      • vlan package (vconfig command must work)
  • libvirt package (potentially with libvirtd, depending on hypervisor configuration)

All Eucalyptus components

  • You must be root to install and start Eucalyptus components (by default they will run under a different user after start). This document assumes that all commands will be executed as root.

Attention CentOS users: The version of OpenJDK that is bundled with CentOS-5 cannot compile the version of GWT that comes with Eucalyptus as a dependency. You will need to install JDK 1.6.0 "manually". We use Sun's JDK, which can be found at http://java.sun.com/javase/downloads/index.jsp. Be sure to set your JAVA_HOME and PATH properly before running the Eucalyptus 'configure' script.

Distribution-specific examples

What follows is a superset of all packages necessary for building and running Eucalyptus on each supported distribution:

  • For Opensuse 11.1, download and install RPMs the appropriate OpenSUSE RPM dependency package from the Eucalyptus website, then run the following command to install all required dependency packages:
yast2 -i bzr python-paramiko make gcc ant apache2 apache2-devel\
   java-1_6_0-openjdk java-1_6_0-openjdk-devel libvirt-devel libcurl-devel\
   vlan dhcp-server bridge-utils ant-contrib ant-nodeps curl libvirt
  • For Ubuntu 9.04 and 9.10, run the following command to install all required dependency packages:
apt-get install bzr gcc make apache2-threaded-dev ant openjdk-6-jdk\
   libvirt-dev libcurl4-openssl-dev dhcp3-server vblade apache2 unzip curl vlan\
   bridge-utils libvirt-bin kvm vtun
  • For CentOS 5, download and install RPMs the appropriate CentOS RPM dependency package from the Eucalyptus website, then run the following command to install all required dependency packages:
yum install -y java-1.6.0-openjdk-devel ant ant-nodeps libvirt-devel\
   curl-devel httpd httpd-devel apr-devel openssl-devel dhcp 
  • For Debian, run the following command to install all required dependency packages:
apt-get install gcc make apache2-threaded-dev ant openjdk-6-jdk\
   libvirt-dev libcurl4-dev dhcp3-server vblade apache2 unzip curl vlan\
   bridge-utils libvirt-bin kvm sudo vtun

Please, consult the distribution-specific pages for detailed installation instructions.

Tools for interacting with Eucalyptus

To interact with Eucalyptus, you need to install EC2-compatible command-line tools. The instructions in Eucalyptus documentation rely on the euca2ools command-line tools distributed by the Eucalyptus Team. Many other third-party tools can also be used for some of the tasks, as described on the ecosystem page.

2. Download Eucalyptus and supplied dependencies

In what follows substitute the desired version (e.g., 1.6.2) for $VERSION either manually or by setting a shell variable.

Download either

  • eucalyptus-$VERSION-src.tar.gz (Eucalyptus source with included java libraries)

or

  • eucalyptus-$VERSION-src-online.tar.gz (Eucalyptus source that will download java libraries at build-time)

and for both

  • eucalyptus-$VERSION-src-deps.tar.gz (Eucalyptus C library dependency packages)

All packages can be found on the Eucalyptus Web site:

Unpack the Eucalyptus source:

tar zvxf eucalyptus-$VERSION-src.tar.gz

Now you should have a directory eucalyptus-$VERSION. To simplify the remainder of the installation, define EUCALYPTUS_SRC environment variable to be the top of the source tree of eucalyptus and the variable EUCALYPTUS to be the directory where eucalyptus will be installed (we recommend using /opt/eucalyptus/):

cd eucalyptus-$VERSION
export EUCALYPTUS_SRC=`pwd`
export EUCALYPTUS=/opt/eucalyptus

3. Build Dependencies

To install Eucalyptus, you need to build packages that Eucalyptus depends on, which we provide in the above-mentioned package eucalyptus-$VERSION-src-deps.tar.gz. For the sake of this discussion, we are going to assume that all packages have been untarred inside "$EUCALYPTUS_SRC/eucalyptus-src-deps/" as above and will be installed in "$EUCALYPTUS/packages".

Unpack the dependencies and create the directory you'll use to install them:

cd $EUCALYPTUS_SRC
tar zvxf ../eucalyptus-$VERSION-src-deps.tar.gz
mkdir -p $EUCALYPTUS/packages/

Build and install the dependencies. The following instructions work on some Linux distributions, but aren't universal. Please, consult the documentation for the specific packages for help with building them on your distribution.

a. Axis2

cd $EUCALYPTUS/packages
tar zxvf $EUCALYPTUS_SRC/eucalyptus-src-deps/axis2-1.4.tgz

b. Axis2/C

To compile Axis2/C, you will need to locate development headers for Apache and for APR. On some distributions (e.g., Ubuntu and Debian) the following values should work:

export APACHE_INCLUDES=/usr/include/apache2
export APR_INCLUDES=/usr/include/apr-1.0

On CentOS 5, the headers should be in the following location:

export APACHE_INCLUDES=/usr/include/httpd/
export APR_INCLUDES=/usr/include/apr-1/

while on OpenSuse 11 you may find them at:

export APACHE_INCLUDES=/usr/include/apache2/
export APR_INCLUDES=/usr/include/apr-1/

With the two environment variables set, you can build and install Axis2/C as follows:

export AXIS2C_HOME=$EUCALYPTUS/packages/axis2c-1.6.0
cd $EUCALYPTUS_SRC/eucalyptus-src-deps/
tar zvxf axis2c-src-1.6.0.tar.gz
cd axis2c-src-1.6.0
CFLAGS="-w" ./configure --prefix=${AXIS2C_HOME} --with-apache2=$APACHE_INCLUDES --with-apr=$APR_INCLUDES --enable-multi-thread=no
make ; make install

c. Rampart/C

export AXIS2C_HOME=$EUCALYPTUS/packages/axis2c-1.6.0
export LD_LIBRARY_PATH=${AXIS2C_HOME}/lib:$LD_LIBRARY_PATH
cd $EUCALYPTUS_SRC/eucalyptus-src-deps/
tar zvxf rampartc-src-1.3.0-0euca1.tar.gz
cd rampartc-src-1.3.0
./configure --prefix=${AXIS2C_HOME} --enable-static=no --with-axis2=${AXIS2C_HOME}/include/axis2-1.6.0
make ; make install

Next, change the following in $AXIS2C_HOME/axis2.xml. In the 'inflow' section, change:

        <!--phase name="Security"/-->

to

        <phase name="Security"/>
        <phase name="Rahas"/>

In the 'outflow' section, change:

        <!--phase name="Security"/-->

to

        <phase name="Security"/>

4. Building Eucalyptus

Make sure JAVA_HOME is defined.

cd $EUCALYPTUS_SRC
./configure --with-axis2=$EUCALYPTUS/packages/axis2-1.4 --with-axis2c=$EUCALYPTUS/packages/axis2c-1.6.0 --enable-debug --prefix=$EUCALYPTUS
make ; make install

5. Deploying Eucalyptus

a. At this point, if you plan to use Eucalyptus on more than one node, you're ready to push the software out to the other nodes (although not all software components are required on all nodes, it is simpler to just mirror everything and selectively enable components via start-up scripts). If you installed Eucalyptus in its own directory, you can just sync the entire package to all of the hosts listed above using whatever mechanism you typically use to push changes to nodes (rsync, for instance).

rsync -a $EUCALYPTUS/ root@{node-host-1}:$EUCALYPTUS/
rsync -a $EUCALYPTUS/ root@{node-host-1}:$EUCALYPTUS/
...

On installations without a root user, such as Ubuntu, it may be easier to pull the software from each node one at a time:

node1# rsync -a {user}@{front-end}:$EUCALYPTUS/ $EUCALYPTUS/
node2# rsync -a {user}@{front-end}:$EUCALYPTUS/ $EUCALYPTUS/
...

NOTE: Installing Eucalyptus in the same directory on all nodes will make it easier to manage it, so we strongly advise you to do so.

6.) Configure hosts

a. Set up a 'eucalyptus' user on all machines

Eucalyptus will run as regular user on your systems, which you'll need to add before running Eucalyptus (we will use eucalyptus) on all machines. For most distributions, this task is accomplished by running the command:

useradd eucalyptus

For OpenSUSE, use:

groupadd eucalyptus
useradd eucalyptus -m -g eucalyptus

b. Configure your hypervisor

Ensure that this user can control your hypervisor through libvirt on all compute nodes. On some distributions, this can be accomplished by adding eucalyptus to group libvirt or libvirtd in file /etc/group. Please, consult the documentation for libvirt on your distribution for instructions. For more detailed information, see Hypervisor Configuration for more information.

c. Configure your networking

Eucalyptus provides several network configuration options from which to choose, depending on your local network setup, capabilities, and the networking features that you wish to take advantage of within Eucalyptus. Most networking options require that, on your node controllers, the primary interface is configured to be a bridge (this is the default configuration with some distribution's Xen hypervisor configuration). See Network Configuration for more information and set-up instructions. Once you have decided which network mode you will be using, you may be required to set up ethernet bridges on Eucalyptus component machines. Example bridge configuration steps can be found here.

d. Configure Eucalyptus components

On your compute nodes, create a local directory where VM images are to be placed temporarily while VMs are running (images will be cached under the same path, too). It is important that the directory is empty as everything in it will be removed. Be sure to pick a partition with ample disk space as VM images can be large. We use /usr/local/eucalyptus in the example below.

Place the mandatory parameters (including the type of hypervisor you plan to use) into the configuration file and set up the permissions on Eucalyptus files appropriately on all nodes. Both tasks can be accomplished with flags to euca_conf tool:

  • -d specifies the root of Eucalyptus installation ($EUCALYPTUS)
  • --hypervisor specifies the hypervisor ('xen' or 'kvm')
  • --instances specifies where, on compute nodes, instance files will be stored
  • --user specifies the user that you created for running Eucalyptus
  • --setup invokes the first-time setup tasks
$EUCALYPTUS/usr/sbin/euca_conf -d $EUCALYPTUS --hypervisor kvm --instances /usr/local/eucalyptus --user eucalyptus --setup

e. Distribution-specific post configuration steps

Some linux distributions require that the admin perform a few extra steps before bringing up Eucalyptus. This section details some of these steps:

For Ubuntu 9.04 "Jaunty" and 9.10 "Karmic", apparmor needs to be configured to allow dhcpd3 to write to the filesystem. Add the following lines to '/etc/apparmor.d/usr.sbin.dhcp3':

/opt/eucalyptus/var/run/eucalyptus/net/ r,
/opt/eucalyptus/var/run/eucalyptus/net/** r,
/opt/eucalyptus/var/run/eucalyptus/net/*.pid lrw,
/opt/eucalyptus/var/run/eucalyptus/net/*.leases* lrw,
/opt/eucalyptus/var/run/eucalyptus/net/*.trace lrw,

where you substitute '/opt/eucalyptus' with the path to where you have chosen to install Eucalyptus. Then, restart apparmor (NOTE: sometimes changes don't take effect right away - either wait or reboot the system to be sure):

/etc/init.d/apparmor stop
/etc/init.d/apparmor start

Also, since Ubuntu DHCP daemon is configured to run as 'dhcpd' and not root, ensure that the following two variables are set as follows in the $EUCALYPTUS/etc/eucalyptus/eucalyptus.conf file on the Cluster head-node:

VNET_DHCPDAEMON="/usr/sbin/dhcpd3"
VNET_DHCPUSER="dhcpd"

At this point you should be ready to start Eucalyptus processes on all nodes but before doing so you may want to configure the Eucalyptus network: you can read more about it at Network Configuration.

f. Configure your startup scripts

If you want to have eucalyptus started automatically when your machines are (re)booted, you can add the following symlinks on the appropriate hosts: add eucalyptus-cloud on the Cloud head-node, add eucalyptus-cc on the Cluster head-node(s), and add eucalyptus-nc on the compute node(s)

ln -sf $EUCALYPTUS/etc/init.d/eucalyptus-cloud /etc/init.d/eucalyptus-cloud
ln -sf $EUCALYPTUS/etc/init.d/eucalyptus-cc /etc/init.d/eucalyptus-cc
ln -sf $EUCALYPTUS/etc/init.d/eucalyptus-nc /etc/init.d/eucalyptus-nc

and then add the symlinks to the distribution's booting process. This process differs from distribution to distribution. For example if you have update-rc.d available you can run:

update-rc.d eucalyptus-cloud defaults

or if you have chkconfig available you can run:

chkconfig eucalyptus-cloud on

6. Running Eucalyptus

Eucalyptus comes with the euca_conf script for configuring Eucalyptus. For some requests it modifies the configuration file located in '$EUCALYPTUS/etc/eucalyptus/eucalyptus.conf' (which can also be edited manually), for other requests it modifies the database maintained by the Cloud Controller (much of that functionality is duplicated in the Web interface, to be described later).

In addition to modifying the configuration, euca_conf attempts to synchronize x509 credentials across the nodes of a Eucalyptus installation by relying on rsync and scp. We highly recommend setting up password-less SSH access for the root user across all nodes of your Eucalyptus installation (otherwise, euca_conf will prompt you for remote system passwords).

As explained in the overview, a Eucalyptus installation consists of five types of components: cloud controller (CLC), Walrus, cluster controller (CC), storage controller (SC), and the node controller(s) (NCs). In following instructions we assume that all components except the NCs are co-located on a machine that we will refer to as the front end and that NCs run on compute nodes.

First, make sure that you have all of the runtime dependencies of Eucalyptus installed, based on your chosen set of configuration parameters. If there is a problem with runtime dependencies (for instance, if Eucalyptus cannot find/interact with them), all errors will be reported in log files located in $EUCALYPTUS/var/log/eucalyptus.

Next, inspect the contents of $EUCALYPTUS/etc/eucalyptus/eucalyptus.conf carefully, on each machine, to make sure that the settings are appropriate for your environment.

Once everything is configured properly, enable the cloud services that you wish to run on your front-end, then use the init-scripts to start each component on the appropriate host. Most likely, on the front-end you would run:

# enable services on the front-end
$EUCALYPTUS/usr/sbin/euca_conf --enable cloud --enable walrus --enable sc

# start enabled front-end services
$EUCALYPTUS/etc/init.d/eucalyptus-cloud start

# start the cluster controller

$EUCALYPTUS/etc/init.d/eucalyptus-cc start

And on each of the compute nodes you would run:

$EUCALYPTUS/etc/init.d/eucalyptus-nc start

To stop them you call the script with stop instead of start.

NOTE: if you later decide to make changes to $EUCALYPTUS/etc/eucalyptus/eucalyptus.conf that will effect the cluster-controller, make sure to use the 'cleanstart', 'cleanstop', and/or 'cleanrestart' directives to the init scripts (as opposed to start/stop/restart). This will both remove all existing CC state, and will cause it to re-read the configuration file.

Installation from distribution-specific binary packages

Choose a linux distribution:

Installing Eucalyptus (1.6) on CentOS 5

Eucalyptus can be installed on CentOS 5 from source or by using binary RPM packages. This document details the steps required to install Eucalyptus from RPMs. In what follows, the value of $VERSION must be substituted accordingly (e.g., as 1.6.1, 1.6.2, etc.) for example we can set the value of 1.6.2 using bash:

export VERSION=1.6.2

Notice: Before you begin, please ensure that you have an up-to-date CentOS installation on your target machine(s). In particular, CentOS 5.4, which was recentely released, carries libvirt 0.6.3 which is required to run Eucalyptus.

Prerequisites

If you start with a standard CentOS installation, you will satisfy all prerequisites with the following steps:

  1. Front-end, node and client machine system clocks are synchronized (e.g., using NTP).
    yum install -y ntp
    ntpdate pool.ntp.org
    
  2. Front end needs java, command to manipulate a bridge and the binaries for dhcp server (do not configure it nor run it on the CC):
    yum install -y java-1.6.0-openjdk ant ant-nodeps dhcp bridge-utils httpd
    
  3. Node has a fully installed and configured installation of Xen that allows controlling the hypervisor via HTTP from localhost.
    yum install -y xen
    sed --in-place 's/#(xend-http-server no)/(xend-http-server yes)/' /etc/xen/xend-config.sxp 
    sed --in-place 's/#(xend-address localhost)/(xend-address localhost)/' /etc/xen/xend-config.sxp
    /etc/init.d/xend restart
    
  4. Firewall rules must permit the Eucalyptus components to communicate with one another, and clients to communicate with Eucalyptus. On the front-end, ports 8443, 8773, 8774 and 9001 must be open; on the node, port 8775 must be open. If you are planning on using Elastic IPs and/or Security Groups, you may want to consider disabling the firewall and use Eucalyptus facilities for enabling custom firewall rules (see Network configuration for more information). On both the front-end and the nodes:

    For example, from a text console:

    • run system-config-securitylevel
    • select Security Level: Disabled
    • select OK

    From an X terminal:

    • run system-config-security-level
    • select 'Disabled' for 'Firewall'
    • select the 'SELinux' tab
    • select either 'Permissive' or 'Disabled' for SELinux Setting

Download and Install RPMs

Eucalyptus binary installation is broken up into several packages: one for each of the components (CLC, Walrus, CC, etc.), as well as a couple of common packages. There are two options for obtaining the packages:

  1. Yum option: Packages are available from our yum repository. To use it, create '/etc/yum.repos.d/euca.repo' file with the following four lines:
    [euca]
    name=Eucalyptus
    baseurl=http://www.eucalyptussoftware.com/downloads/repo/eucalyptus/$VERSION/yum/centos/
    enabled=1
    
    where $VERSION is either 1.6.1 or 1.6.2. Now install eucalyptus on the front-end,
    yum install eucalyptus-cloud.$ARCH eucalyptus-cc.$ARCH eucalyptus-walrus.$ARCH eucalyptus-sc.$ARCH --nogpgcheck
    
    or the node
    yum install eucalyptus-nc.$ARCH --nogpgcheck
    
    where $ARCH is the architecture of your host (either 'i386' or 'x86_64').
  2. Tarball option: The packages are available in a single tarball, wherein we also include copies of third-party CentOS packages that Eucalyptus depends on (Rampart, Axis2C, many Java libraries), at http://open.eucalyptus.com/downloads (look for a CentOS tarball of the right Eucalyptus version and architecture). Untar the bundle in a temporary location:
    tar zxvf eucalyptus-$VERSION-*.tar.gz
    cd eucalyptus-$VERSION-*
    
  3. In the examples below we use x86_64, which should be replaced with i386 or i586 on 32-bit architectures. Install the third-party dependency RPMs on the front end:

    cd eucalyptus-$VERSION*-rpm-deps-x86_64
    
    rpm -Uvh aoetools-21-1.el4.x86_64.rpm \
             euca-axis2c-1.6.0-1.x86_64.rpm \
             euca-rampartc-1.3.0-1.x86_64.rpm \
             vblade-14-1mdv2008.1.x86_64.rpm \
             groovy-1.6.5-1.noarch.rpm \
             vtun-3.0.2-1.el5.rf.x86_64.rpm \
             lzo2-2.02-3.el5.rf.x86_64.rpm
    cd ..
    

    Install the -cloud, -walrus, -cc and -sc RPMs on the front end:

    rpm -Uvh eucalyptus-$VERSION-*.x86_64.rpm \
             eucalyptus-common-java-$VERSION-*.x86_64.rpm \
             eucalyptus-cloud-$VERSION-*.x86_64.rpm \
             eucalyptus-walrus-$VERSION-*.x86_64.rpm \
             eucalyptus-sc-$VERSION-*.x86_64.rpm \
             eucalyptus-cc-$VERSION-*.x86_64.rpm \
             eucalyptus-gl-$VERSION-*.x86_64.rpm
    
    

    Install the dependency packages on each compute node:

    cd eucalyptus-$VERSION*-rpm-deps-x86_64
    rpm -Uvh aoetools-21-1.el4.x86_64.rpm \
             euca-axis2c-1.6.0-1.x86_64.rpm \
             euca-rampartc-1.3.0-1.x86_64.rpm
    cd ..
    
    

    Install the node controller RPM with dependencies on each compute node:

    rpm -Uvh eucalyptus-$VERSION-*.x86_64.rpm \
             eucalyptus-gl-$VERSION-*.x86_64.rpm \
             eucalyptus-nc-$VERSION-*.x86_64.rpm
    

    Post-Install Steps

    The last step in the installation is to make sure that the user 'eucalyptus', which is created at RPM installation time, is configured to interact with the hypervisor through libvirt on all of your compute nodes. The easiest way to check this is to run the following command on each node:

    su eucalyptus -c "virsh list"
    

    The output of that command may include error messages (failed to connect to xend), but as long as it includes a listing of all domains (at least Domain-0), the configuration is in order.

    Now start up your Eucalyptus services. On the front-end:

    /etc/init.d/eucalyptus-cloud start
    /etc/init.d/eucalyptus-cc start
    

    On the node:

    /etc/init.d/eucalyptus-nc start
    

    At this point you should be ready to go through the first-time configuration.

Installing Eucalyptus (1.6) on openSUSE 11

Eucalyptus can be installed on openSUSE 11 from source, or by using binary RPM packages. This document details the steps required to install Eucalyptus from RPMs. In what follows, the value of $VERSION must be substituted accordingly (e.g., as 1.6.1, 1.6.2, etc.) for example we can set the value of 1.6.2 using bash:

export VERSION=1.6.2

Prerequisites

If you start with a standard openSUSE installation, you will satisfy all prerequisites with the following steps:

  1. Front-end, node and client machine system clocks are syncronized (i.e. using NTP).
    sntp -P no -r pool.ntp.org
    yast2 -i ntp
    /etc/init.d/ntp restart
    
  1. Install all dependency packages that are required for Eucalyptus to run on the front-end
    yast2 -i apache2 apache2-prefork java-1_6_0-openjdk java-1_6_0-openjdk-devel libvirt curl vlan dhcp-server bridge-utils
    
    and on the node
    yast2 -i xen libvirt vlan apache2
    
  1. Node has a fully installed and configured installation of Xen.
    • RECOMMENDED: verify your Xen installation by manually bringing up a VM and testing that it has network connectivity using bridged networking.
    • To set up bridged networking on your node, use the 'yast2' command and go through the following steps:
      • Network Devices
      • Network Settings
      • Select 'OK' to get past information box
      • Traditional Method with ifup
      • Overview
      • Add
      • Device Type: Bridge
      • Next
      • Bridged Devices: select eth0 (or the name of your primary interface)
      • Next
      • Continue
      • Ok
    • make sure that the libvirt daemon (libvirtd) is running and configured properly
      • /etc/init.d/libvirtd start
      • check eucalyptus can interact with libvirt
        su eucalyptus -c "virsh list"

        you may see this error (which could show up in the logs too)

        Attempting to obtain authorization for org.libvirt.unix.manage.
        polkit-grant-helper: given auth type (8 -> yes) is bogus
        Failed to obtain authorization for org.libvirt.unix.manage.
        

        which is harmless.

  1. Firewall rules must permit the Eucalyptus components to communicate with one another, and clients to communicate with Eucalyptus.
    • NOTE: on the front-end, ports 8443, 8773, 8774 and 9001 must be open. On the node, port 8775 must be open
    • If you are planning on using Elastic IPs and/or Security Groups, you may want to consider disabling the firewall and use Eucalyptus facilities for enabling custom firewall rules (see Network configuration for more information).
      • yast2 firewall startup manual
      • /etc/init.d/SuSEfirewall2_init stop
      • reboot

Download and Install RPMs

Eucalyptus binary installation is broken up into several packages: one for each of the components (CLC, Walrus, CC, etc.), as well as a couple of common packages. There are two options for obtaining the packages:

  1. Zypper option: packages are available from our repository. To use it:
    zypper ar --refresh http://www.eucalyptussoftware.com/downloads/repo/eucalyptus/$VERSION/yum/opensuse Eucalyptus
    
    answer question about trusting packages from this repository then refresh it
    zypper refresh Eucalyptus
    
    and now install eucalyptus on the front-end
    zypper install eucalyptus-cloud eucalyptus-cc eucalyptus-walrus eucalyptus-sc 
    
    or the node
    zypper install eucalyptus-nc 
    
  2. Tarball option: the packages are available in a single tarball, wherein we also include copies of third-party openSUSE packages that Eucalyptus depends on (Rampart, Axis2C, many Java libraries), at http://open.eucalyptus.com/downloads (look for a openSUSE tarball of the right Eucalyptus version and architecture). Untar the bundle in a temporary location:
    tar zxvf eucalyptus-$VERSION-*.tar.gz
    cd eucalyptus-$VERSION-*
    
  3. In the examples below we use x86_64, which should be replaced with i386 or i586 on 32-bit architectures. Install the third-party dependency RPMs on the front end:

    cd eucalyptus-$VERSION*-rpm-deps-x86_64
    rpm -Uvh aoetools-21-1.el4.x86_64.rpm \
             euca-axis2c-1.6.0-1.x86_64.rpm \
             euca-rampartc-1.3.0-1.x86_64.rpm \
             vblade-14-1mdv2008.1.x86_64.rpm \
             groovy-1.6.5-1.noarch.rpm \
             vtun-3.0.1-1.x86_64.rpm
    cd ..
    

    Install the -cloud, -walrus, -cc and -sc RPMs on the front end:

    rpm -Uvh eucalyptus-$VERSION-*.x86_64.rpm \
             eucalyptus-common-java-$VERSION-*.x86_64.rpm \
             eucalyptus-cloud-$VERSION-*.x86_64.rpm \
             eucalyptus-sc-$VERSION-*.x86_64.rpm \
             eucalyptus-walrus-$VERSION-*.x86_64.rpm \
             eucalyptus-cc-$VERSION-*.x86_64.rpm \
             eucalyptus-gl-$VERSION-*.x86_64.rpm
    

    Install RPMs on the nodes

    Install the dependency packages on each node:

    cd eucalyptus-$VERSION*-rpm-deps-x86_64
    rpm -Uvh aoetools-25-2.49.x86_64.rpm \
             euca-axis2c-1.6.0-1.x86_64.rpm \
             euca-rampartc-1.3.0-1.x86_64.rpm \
             vblade-15-2.49.x86_64.rpm
    cd ..
    

    On the compute nodes, install the node controller RPM with dependencies:

    rpm -Uvh eucalyptus-$VERSION-*.x86_64.rpm \
             eucalyptus-gl-$VERSION-*.x86_64.rpm \
             eucalyptus-nc-$VERSION-*.x86_64.rpm
    

    Post-Install Steps

    Now start up your Eucalyptus services. On the front-end:

    /etc/init.d/eucalyptus-cloud start
    /etc/init.d/eucalyptus-cc start
    

    On the node:

    /etc/init.d/eucalyptus-nc start
    

Installing Eucalyptus (1.6) on Debian "squeeze"

Eucalyptus can be installed on Debian squeeze using binary DEB packages. Squeeze has not been released yet, so things can change quickly and without warning.

Download DEBs

Eucalyptus binary installation is broken up into several packages: one for each of the components (CLC, Walrus, CC, etc.), as well as a couple of common packages. To install them, along with a significant number of dependencies, add our repository to the list of repositories for your system to use. To do so, add somewhere in /etc/apt/sources.list file the following line:

For 1.6.1:

deb http://eucalyptussoftware.com/downloads/repo/eucalyptus/1.6.1/debian/ squeeze contrib

For 1.6.2 (including release candidates):

deb http://eucalyptussoftware.com/downloads/repo/eucalyptus/1.6.2/debian/ squeeze main

And then run:

apt-get update

After installation you may remove the entry from sources.list if you don't want to update Eucalyptus packages automatically.

Prerequisites

If you start with a standard Debian squeeze installation, you will satisfy all Eucalyptus prerequisites with the following steps:

  1. Synchronize clocks (e.g., using NTP: ntpdate pool.ntp.org) across all Eucalyptus machines and client machines.
  1. If using a firewall, permit the Eucalyptus components to communicate with one another, and permit clients to communicate with Eucalyptus.
    • NOTE: on the front-end, ports 8443, 8773, 8774 and 9001 must be open. On the node, port 8775 must be open.
  1. Ensure that locales are properly configured (use dpkg-reconfigure locales).
  1. Install libvirt/qemu-kvm and configure it to run as user 'eucalyptus':
sudo apt-get install libvirt-bin qemu-kvm
# set the field user to be: user = "eucalyptus"
sudo vi /etc/libvirt/qemu.conf
# restart libvirt
sudo /etc/init.d/libvirt-bin restart
  1. If running in SYSTEM networking mode, which is the default, your node machine(s) must be configured with a bridge as the primary interface. For example, you may try:
sudo apt-get install bridge-utils
sudo vi /etc/network/interfaces

Comment out any entry for your existing interfaces (eth0, eth1, etc) and add a bridge entry with your interfaces attached. For example, to have your bridge come up with all physical Ethernet devices added to it, and have DHCP assign an address to the bridge, use:

auto br0
iface br0 inet dhcp
      bridge_ports all

For a static configuration with just eth0 attached (substitute your actual network parameters):

auto br0
iface br0 inet static
      address 192.168.12.20
      netmask 255.255.255.0
      network 192.168.12.0
      broadcast 192.168.12.255
      gateway 192.168.12.1
      dns-nameservers 192.168.12.1
      dns-search foobar foobar.com
      bridge_ports eth0

Finally, restart the network by either by restarting the network with '/etc/init.d/networking restart' or by rebooting the machine.

Install DEBs on the front end

On front end, where cloud controller, Walrus, cluster controller, and storage controller will run, install the appropriate DEBs:

aptitude install eucalyptus-common eucalyptus-cloud eucalyptus-walrus eucalyptus-sc eucalyptus-cc 

Install DEBs on the nodes

On the compute nodes, install the node-controller DEB:

aptitude install eucalyptus-nc

(You may safely ignore the error adduser: The group 'libvirtd' does not exist.)

Installing Eucalyptus (1.6.1) on Ubuntu Jaunty (9.04)

Eucalyptus 1.6.1 (no longer the most current stable release) can be installed on Ubuntu Jaunty using binary DEB packages. (Ubuntu Lucid users can install the latest release from the standard Ubuntu supported repository, or users of any Ubuntu release from Jaunty and later can always install Eucalyptus from source.)

Download DEBs

Eucalyptus binary installation is broken up into several packages: one for each of the components (CLC, Walrus, CC, etc.), as well as a couple of common packages. To install them, along with a significant number of dependencies, add our repository to the list of repositories for your system to use. To do so, add somewhere in /etc/apt/sources.list file the following line:

deb http://www.eucalyptussoftware.com/downloads/repo/eucalyptus/1.6.1/ubuntu jaunty universe

And run:

apt-get update

After installation you may remove the entry from sources.list if you don't want to update Eucalyptus packages automatically.

Prerequisites

If you start with a standard Ubuntu Jaunty installation, you will satisfy all prerequisites with the following steps:

  1. Front-end, node and client machine system clocks are syncronized (i.e., using NTP).
    ntpdate-debian -s
    apt-get install openntpd
    
  1. Firewall rules must permit the Eucalyptus components to communicate with one another, and clients to communicate with Eucalyptus.
    • NOTE: on the front-end, ports 8443, 8773, 8774 and 9001 must be open. On the node, port 8775 must be open
  1. If running in SYSTEM networking mode, which is the default, your node machine(s) must be configured with a bridge as the primary interface. You must first uninstall or disable Network Manager (default with Ubuntu Desktop), then follow the procedure below (example):
    sudo apt-get install bridge-utils
    sudo vi /etc/network/interfaces
    

Comment out any entry for your existing interfaces (eth0, eth1, etc) and add a bridge entry with your interfaces attached. For example, to have your bridge come up with all physical Ethernet devices added to it, and have DHCP assign an address to the bridge:

auto br0
iface br0 inet dhcp
      bridge_ports all

For a static configuration with just eth0 attached (substitute your actual network parameters):

auto br0
iface br0 inet static
      address 192.168.12.20
      netmask 255.255.255.0
      network 192.168.12.0
      broadcast 192.168.12.255
      gateway 192.168.12.1
      dns-nameservers 192.168.12.1
      dns-search foobar foobar.com
      bridge_ports eth0

Finally, restart the network by either by restarting the network with '/etc/init.d/network restart' or by rebooting the machine.

Install DEBs on the front end

On front end, where cloud controller and cluster controller will run, install the -cloud and -cc DEBs:

aptitude install eucalyptus-cc eucalyptus-cloud eucalyptus-common eucalyptus-walrus eucalyptus-sc

Install DEBs on the nodes

On the compute nodes, install the node controller DEB:

aptitude install eucalyptus-nc eucalyptus-common

(You may safely ignore the error adduser: The group 'libvirt' does not exist.)

Upgrading to Eucalyptus 1.6.2 from 1.6.1

These instructions are for those who would like to upgrade to Eucalyptus 1.6.2 from a source-based or package-based 1.6.1 installation. If you're still running 1.5.2, please, follow the instructions for upgrading to 1.6.1 before following these instructions. Instructions below assume that $EUCALYPTUS points to the root of the new Eucalyptus installation and $OLD_EUCA points to the root of the old installation (which can be the same as the new one).

1. Stop and back up your current installation

We highly recommend backing up your installation before performing an upgrade. The general approach to backup is outlined in the first part of the Backup section. Starting from Eucalyptus 1.6, a script called euca_upgrade can be used to perform partial backups by creating copies of the configuration file, database, and keys (it does not back up buckets and volumes because of their potentially large disk space requirements and because they are unlikely to be harmed during an upgrade).

  • If you are using our binary packages (RPMs or DEBs), euca_upgrade will be invoked automatically, creating backups in
    • /root/eucalyptus.backup.$TIMESTAMP.
  • If you are upgrading a source-based installation, you must still invoke euca_upgrade, as shown below, even if you've backed up your installation using some other method.
  • Regardless of whether you choose to back up, be sure to stop all Eucalyptus processes on all machines before proceeding.

2. Install Eucalyptus 1.6

and, afterwards, return here.

  • If upgrading a source-based installation, follow the steps in the Source Code Installation section of the Administrator's Guide and, afterwards, return here. To upgrade the front-end, run:

    $EUCALYPTUS/usr/share/eucalyptus/euca_upgrade --new $EUCALYPTUS --old $OLD_EUCA --conf --keys --db

    and to upgrade the nodes run

    $EUCALYPTUS/usr/share/eucalyptus/euca_upgrade --new $EUCALYPTUS --old $OLD_EUCA --conf --keys

3. Restart Eucalyptus and verify the upgrade

  • Start the services on the appropriate machines (after a DEB-based install they should already be running):
    $EUCALYPTUS/etc/init.d/eucalyptus-nc start
    $EUCALYPTUS/etc/init.d/eucalyptus-cc cleanstart
    $EUCALYPTUS/etc/init.d/eucalyptus-cloud start
  • In a Web browser, load https://front-end:8443/ and log in as before. Verify that the user accounts and the images are there.
  • Important: Verify that the Buckets Path and Volumes Path settings under the Configuration tab of the Web interface matches the actual locations of the buckets and volumes before running any instances or using buckets.
  • Verify that the nodes are back up and that they can run your old instances (if not, see the Troubleshooting section.)
    euca-describe-availability-zones verbose

4. Optionally: Roll back to an earlier installation

  • Follow the steps in the second part of the Backup section, called "Restoration". If you are relying on the backup created by euca_upgrade during a package-based upgrade, then after re-installing the old packages, copy back the saved state (the backed up copies of db/*, keys/*, etc/eucalyptus/eucalyptus.conf) to your restored installation. Then, start Eucalytpus, as before.

Upgrading to Eucalyptus 1.6.1 from 1.5.2

These instructions are for those who would like to upgrade to Eucalyptus 1.6.1 from a source-based or package-based 1.5.2 installation. If you're still running 1.4, please, follow the instructions for upgrading to 1.5.2 before following these instructions. Instructions below assume that $EUCALYPTUS points to the root of the new Eucalyptus installation and $EUCA_OLD points to the root of the old installation (which can be the same as the new one).

1. Stop and back up your current installation

We highly recommend backing up your installation before performing an upgrade. The general approach to backup is outlined in the first part of the Backup section. Starting from Eucalyptus 1.6, a script called euca_upgrade can be used to perform partial backups by creating copies of the configuration file, database, and keys (it does not back up buckets and volumes because of their potentially large disk space requirements and because they are unlikely to be harmed during an upgrade).

  • If you are using our binary packages (RPMs or DEBs), euca_upgrade will be invoked automatically, creating backups in
    • $EUCALYPTUS/var/lib/eucalyptus/db/1.5,
    • $EUCALYPTUS/var/lib/eucalyptus/keys/1.5, and
    • $EUCALYPTUS/etc/eucalyptus/eucalyptus.conf-1.5.
  • If you are upgrading a source-based installation, you must still invoke euca_upgrade, as shown below, even if you've backed up your installation using some other method.
  • Regardless of whether you choose to back up, be sure to stop all Eucalyptus processes on all machines before proceeding.

2. Install Eucalyptus 1.6

and, afterwards, return here.

  • If upgrading a source-based installation, follow the steps in the Source Code Installation section of the Administrator's Guide and, afterwards, return here. To upgrade the front-end, run
    $EUCALYPTUS/usr/share/eucalyptus/euca_upgrade --new $EUCALYPTUS --old $OLD_EUCA
    

and to upgrade the nodes run

$EUCALYPTUS/usr/share/eucalyptus/euca_upgrade --new $EUCALYPTUS --old $OLD_EUCA --conf

3. Restart Eucalyptus and verify the upgrade

  • Start the services on the appropriate machines (after a DEB-based install they should already be running):
    $EUCALYPTUS/etc/init.d/eucalyptus-nc start
    $EUCALYPTUS/etc/init.d/eucalyptus-cc start
    $EUCALYPTUS/etc/init.d/eucalyptus-cloud start
    
  • In a Web browser, load https://front-end:8443/ and log in as before. Verify that the user accounts and the images are there.
  • Important: Verify that the Buckets Path and Volumes Path settings under the Configuration tab of the Web interface matches the actual locations of the buckets and volumes before running any instances or using buckets.
  • Verify that the nodes are back up and that they can run your old instances (if not, see the Troubleshooting section.)
    euca-describe-availability-zones verbose
    

4. Optionally: Roll back to an earlier installation

  • Follow the steps in the second part of the Backup section, called "Restoration". If you are relying on the backup created by euca_upgrade during a package-based upgrade, then after re-installing the old packages, copy back the saved state as follows:
    cp -a $EUCALYPTUS/etc/eucalyptus.conf-1.5 $OLD_EUCA/etc/eucalyptus.conf
    cp -a $ECUALYPTUS/var/lib/eucalyptus/db/1.5/* $OLD_EUCA/var/lib/eucalyptus/db
    cp -a $EUCALYPTUS/var/lib/eucalyptus/keys/1.5/* $OLD_EUCA/var/lib/eucalyptus/keys
    
  • Start Eucalyptus, as before