vADC Docs

Building a custom Stingray appliance on IBM PureFlex

by markbod on ‎03-28-2013 03:01 PM (700 Views)

Introduction

Riverbed Stingray Traffic Manager is the only pure software ADC (Application Delivery Controller) available in the market today. As such it is the only ADC which can move with your business across Physical, Virtual, and Cloud platforms, and give you the exact same features and performance in each.

Today Riverbed provides Stingray in the form of Virtual Appliances for many of the popular Hypervisors (including VMWare, Xen, and Hyper-V). The Virtual Appliance can also be provided in the standard OVA (Open Virtualization Archive) format for importing into a number of other Virtual platforms.

For systems such as IBM PureFlex, where the Virtual Appliances are more closely integrated with the underlying platform it can be beneficial to build a completely custom appliance using the software edition of Stingray. IBM provides a tool precisely for this purpose: The Image Construction and Composition Tool (ICCT).

This document will take you through the process of building a customised Stingray appliance for deployment on PureFlex using the ICCT. A very similar process can be followed to deploy an image into IBMs Smart Cloud Enterprise.


IBM Image Construction and Composition Tool

ICCT is a tool which allows a user on a PureFlex or Smart Cloud Enterprise platform to create custom Virtual Appliances. A full description of the ICCT application is beyond the scope of this document.

We will assume that the ICCT has already been configured to communicate directly with your PureFlex or SCE environment and we will concentrate solely on the configuration elements required to build a custom appliance. These include: Managing ISO Resources, Managing Software Bundles, and Managing Images.

ISO Resources

An ISO resource is simply an ISO containing a compatible Operation System image. The ISO can be used to deploy new images from scratch. In terms of Stingray, the only PureFlex/SCE supported Operating Systems are Red Hat Enterprise Linux, SuSE Enterprise Linux.

Software Bundles

Along with this document, you should have been provided a prebuilt Stingray Software Bundle (a RAS file). The RAS file contains a number of scripts which are used by PureFlex or SCE in building and deploying custom appliances. A software Bundle includes four main configuration items: the installation script, the configuration script, a reset script, and some firewall configuration.

Images

An image is essentially a Virtual Machine. An image appears in ICCT either when it is created by deployment from an ISO, when it is imported from a connected SCE or PureFlex system, or when an existing image is extended.

Build Process

The process of building a custom appliance will be explained in detail in the section “Creating a custom Stingray appliance” below. As a quick overview the process is as follows:

  1. Take an image of a BaseOS and extend it.
  2. Add the software bundle to the extended image and configure the installer parameters.
  3. Deploy the new image (installer script is executed).
  4. Log on to running virtual machine and check installation succeeded.
  5. Capture the image.
  6. Export/deploy the image into PureFlex Manager/Smart Cloud Entry as an appliance
  7. Deploy an instance from the appliance image (the configure script is executed).

The Stingray Software Bundle (RAS)

The software bundle provided has everything you need to build a custom Stingray appliance for use in PureFlex or (with a little tweaking) Smart Cloud Enterprise. The RAS file includes a number of scripts which we discuss in turn.

Installation Script

The installation script “install.sh” is executed when the image is deployed for the first time. Its purpose is to download the Stingray software and Kernel modules from a HTTP repository and install them in to the image. The installer takes two arguments:

stmUrl

The URI for the Stingray software installer. Default version 9.1 from support.riverbed.com

modsUrl

The URI for the Stingray Kernel Modules installer

Default: Version 2.5 from splash.riverbed.com

The stingray installation needs nothing more than a Base OS install, however you will need to ensure that you have the development tools and kernel headers available in order to install the kernel modules.

Note: It is recommended that you check the installer output in /var/log/provision.log after the initial deployment to ensure that everything worked. This is also a good opportunity to apply the latest security patches and bug fixes to the underlying OS.

Configure Script

The configuration script “configure.sh” is executed each time an instance is deployed from the appliance image. The configure script has the task of configuring the Stingray software in the appliance according to the parameters provided in the deployment form.

The configure script in the provided RAS takes the following arguments:

password

The password for the Stingray admin user. Set password to “RANDOM” to have one generated for you. Default: “”

accept_license

Set to “Accept” if you agree to Stingray licensing terms. The configure script will not continue if this has not been set. Default: “No”

license_key

Should be “none” or a HTTP URI from where a license can be downloaded. Default: “none”

join_cluster

Should be “No” or “Yes”. Default: “No”

cluster_host

Should be “none” or an IP address or hostname of a Stingray to cluster with. Default: “none”

cluster_tips

Should be “No” or “Yes”. Default: “No”

cluster_location

The id of the location to join if we are joining a MSM cluster. Default: 0

cluster_external_ip

If we are joining a cluster on the other side of a NAT device, then this should be our external IP Address. Default: “none”

Reset Script

The reset script “reset.sh” is executed whenever the appliance needs to be cleaned up and returned to an unconfigured state. I don’t believe it is ever actually used, but a reset script is provided. It takes no arguments.

Firewall Configuration

The final piece of configuration in a software bundle is the firewall configuration. This allows you to specify which ports should be open on the firewall. The Stingray bundle currently opens port 9090 and 9080 for cluster communications and administration. You will want to add all of the service ports you expect to use on your Stingray appliance. For example HTTP (80), HTTPS (443), etc.

Miscellaneous

All scripts write their output to /var/log/provision.log so you can always check that to see if there were any problems with the install, configure or reset steps.

The software bundle includes AutoScaling drivers for Smart Cloud Enterprise, and also Smart Cloud Entry provisioning APIs. If you do not join a cluster during the deployment of an instance then the configure script will drop them into the extra files catalogue. However if you do join a cluster, then they will be copied into the root users home directory “/root”.

Creating a custom Stingray Appliance

Step 1: Upload your ISO

The first step is to provide ICCT with an ISO containing the Operating System you wish to use. At the time of writing PureFlex and SmartCloud support RedHat Enterprise Linux and SuSE Enterprise Linux Operating Systems. Navigate to the “Manage ISO Resources” section and upload the ISO you wish to use as the base OS of your appliance.

icct1.png

icct2.png

Step 2: Upload the Stingray RAS file

The next step is to upload the Software Bundle (RAS file) to the ICCT server. Navigate to the “Build and Manage software Bundles” section and click on the import icon. The RAS file will need to be available either at a URL accessible by the ICCT server, or uploaded to the local file system of the ICCT server itself.

icct3.png

Step 3: Create your new BaseOS Image

At this point we have an ISO and our software bundle imported. However before we can use the software bundle we must have an image imported into ICCT which we can extend. We’re going to create a new image from the ISO; however you may chose to import a pre-existing Linux image if you have one. If you import a pre-exising image then you can skip to step 4. Navigate to “Build and Manage Images”. Click on the “New Image” icon and then select create from ISO

icct4.png

On the next screen you will need to enter some information about the new image we are creating.

You can give it a name such as “RHEL BaseOS”, A universal ID such as com.riverbed.rhel62.baseOS, a version (eg 6.2.0), and a description.

icct5.png

You will next need to provide the ISO resource which we uploaded earlier, and a kickstart or AutoYAST file. You can download the default KickStart file from ICCT and then extend it. If you intend to make use of the Stingray kernel modules then I would recommend adding the following applications:  gcc, make, perl, kernel-devel.

icct6.png

Next you can pick the hardware parameters for the new image. A summary is displayed on the final screen, click done to complete the image creation process.

icct8.png

Step 4: Extend the BaseOS Image

Now that we have a Base OS configuration, the next step is to add our software bundle and set the installer parameters. Select your new Base OS image in the left hand pane and then click the Extend icon

icct9.png

Enter appropriate information for your Stingray Virtual Appliance: Name, Universal ID, Version and Description, and then click Create.

icct10.png

Select the new Image in the left hand pane. Click the “Start Editing” Button. Scroll down to the “Software Bundles” and click the “Add” button. Add the Stingray software bundle.

icct12.png

Once you have added the bundle you have the option of chosing a different version of the software to install. Expand the properties and change the locations of the installers to the desired versions.

icct13.png

The Deploy options can be ignored as they are used at instance deployment not in the initial install phase.

Once you are happy with your installation options, Click “Done Editing” and “Save”. Click on the “Synchronize” button to have ICCT deploy your new image and run through the installation process.

icct14.png

Once the image is synchronized you will be able to see the details in the “Virtual System” section of the image details pane. At this point you can log into the Virtual System via SSH and confirm that the installer completed successfully by viewing the “/var/log/provision.log” file. This is also a good time to apply any OS patches and/or add additional software.

Note:  On RHEL 6.2 the modules may fail to install because the shipped gcc does not match the compiler used to build the kernel (not on the original disc). Feel free to run a yum update at this point and rerun the Stingray modules installer. The provision log will tell you the temporary directory where they were downloaded.

icct16.png

Once you are happy with the system, return to ICCT and click “Capture”. ICCT will shut down the VM and capture it as an appliance image, once this step completes you can export the image into PureFlex System Manager or Smart Cloud Entry. Your custom Stingray appliance is ready.