Tag Archives: xen cloud control system

Announcing the Xen Cloud Control System virtual appliance for Xen Cloud platform!


Announcing Xen Cloud Control System ver 0.5.4.3

Virtual Appliance for Xen Cloud Platform

We’re pleased to announce the release of XCCS ver 0.5.4.3 for Xen Cloud Platform! XCCS is a lightweight front end package for the excellent Xen Cloud Platform cloud computing system. Version 0.5.4.3 is a slightly modified release for our pre-configured and simple to install virtual appliance.

Download the virtual appliance, import it to your XCP cloud and be up and running XCCS in just minutes!

Features:

Full cloud administration

Load balancing

Multi-tenant

Fully automatic disaster recovery

High availability and low latency features

Xen Cloud Control System is available for download from www.xencloudcontrol.com!

Vern

swiftwater telecom rcs cloud computing logo

High availability, bulletproofing the cloud.


This year has seen some very high profile failures of major cloud computing providers. One of the things that stands out for me in these is an almost total inability to restore running customer workloads without major amounts of manual intervention, usually by the customer themselves.

Silly human caused outages aside, data center infrastructure is almost guaranteed to suffer outages, despite the best efforts to the contrary. physical equipment is fallible, all the way from the data center back up power generators to the fanciest server. This is magnified a lot by cloud computing, since the same infrastructure supports 10-20 times the amount of customers.

What’s giving cloud computing a bad name for reliability isn’t the failures, it’s the lousy response to them. Taking hours or even days to restore customer workloads when the cloud provider still has operating capacity (partial failure) is purely ridiculous. Expecting customers to monitor their virtuals themselves and deal with manually restarting them after a failure is guaranteed to make people even unhappier. This doesn’t even take into account the irritation at the service going down in the first place. I think there’s a WAY better way to handle this.

For quite a while now, our open source project, Xen Cloud Control System for the excellent Xen Cloud Platform, has featured the ability to automatically recover from most cloud failures. Your virtual machine stops running? XCCS automatically restarts it. A physical cloud host fails? XCCS restarts everything that was running on it on the other hosts. No muss, no fuss.

With the release of XCCS ver 0.5.4 today, we’ve introduced the ultimate automated feature to make sure the customer service stays up and running, no matter what. The new “unfriend” feature insures that two virtual servers who are unfriended will never be running on the same physical host server. This means that a partial failure of the cloud or data center infrastructure will NOT take out two redundant virtual servers. Combine this with the automatic restart facility of XCCS and the customer’s service doesn’t even sneeze at the failure.

Want the ultimate in bulletproof web servers? Take two virtual server load balancers, set up heartbeat for failover, and then unfriend them. Add two (or more) virtual web servers and unfriend them. Now you have a self healing web server that will NOT go down for anything short of a total smoking hole disaster. Completely automatic disaster recovery, courtesy of the RELIABLE cloud. This is the way cloud computing should be.

Call me at 207-399-7108 or email me today for bulletproof virtual servers that you can count on to stay up and running through anything!

Vern

swiftwater telecom rcs cloud computing logo

Creating virtual machines with Xen Cloud Control System and Xen Cloud Platform


One of the things that people dipping their toes into Xen Cloud Platform for the first time seem to have trouble with is creating new virtual machines from the command line, assuming they don’t want to run a nice front end like my Xen Cloud Control System :). Here’s a brief tutorial of the steps to create an XCP virtual machine from the command line, along with the XCCS virtual machine creator scripts.

Vern
Xen Cloud Control System
http://www.xencloudcontrol.com

Xen Cloud Control System Programming Notes

Modules centos.cgi, ubuntu.cgi, and debian.cgi are the Linux virtual
machine creators for XCCS. The program steps listed below apply to
all three except where noted.

Program steps:

1. Convert the disk capacity passed from the form from GB to bytes.

2. Convert the memory size passed from the form from GB to bytes.

3. Set the disk size in the template for this Linux type. The template
is set by the XCCS configuration utility and read from the config file.

4. Read in the user profile information from the user file and build
the name label for the VM. The name label is day of the year, year,
hour, minute, second.

5. Install the virtual machine.

6. Build the name description for the virtual machine. The name
description is the user’s user ID and group ID.

7. Set the name description on the new virtual machine.

8. Get the network UUIDs for the first and second Ethernet bridges to
use. The bridges are set by the XCCS configuration utility and read
from the config file.

9. Attach virtual interfaces between the bridges and the virtual
machine. The first virtual interface is eth0 on the virtual machine,
etc.

10. If the kickstart server information is configured and enabled, set
the kickstart parameters in the virtual machine (CentOS, Oracle, and
Red Hat only).

11. Set the memory in the virtual machine.

12. Set the number of vCPUs in the virtual machine.

13. Set the installation respository URL to install the OS over the
network (CentOS and Debian only).

13a. Set the installation repository URL based on whether server load
or desktop load was selected (Ubuntu only).

14. Set the XCCS virtual machine watchdog and activate.

15. Start the new virtual machine on the pool master.

#! /bin/sh
# This software is authored and copyright by Vern Burke (vburke@skow.net)
# and released for public use in accordance with the terms of the
# GNU General Public License, v2 or higher. Any redistribution of original
# or modified versions of this software must contain this copyright notice.
# centos.cgi, ver 0.11
# Input variables are vmtype, memory, label, vCPU
# read variables from cloud.cfg
HOST=$(grep HOST ./cloud.cfg | cut -d” ” -f2)
USER=$(grep USER ./cloud.cfg | cut -d” ” -f2)
PASS=$(grep PASS ./cloud.cfg | cut -d” ” -f2)
ENABLE_KS=$(grep ENABLE_KS cloud.cfg | cut -d” ” -f2)
SR_UUID=$(grep SRUUID cloud.cfg | cut -d” ” -f2)
INSTREP=$(grep RH_REPO cloud.cfg | cut -d” ” -f2)
KSSRV=$(grep KSSRV cloud.cfg | cut -d” ” -f2)
KSDEV=$(grep KSDEV cloud.cfg | cut -d” ” -f2)
RH_TEMP_UUID=$(grep RH_TEMP_UUID cloud.cfg | cut -d” ” -f2)
NETBRIDGE1=$(grep BRIDGE1 cloud.cfg | cut -d” ” -f2)
NETBRIDGE2=$(grep BRIDGE2 cloud.cfg | cut -d” ” -f2)
USEALTPM=$(grep USEALTPM ./cloud.cfg | cut -d” ” -f2)
ALTPMNAME=$(grep ALTPMNAME ./cloud.cfg | cut -d” ” -f2)
# check to see if we’re running from the alternate pool master
if [ “$USEALTPM” = “YES” ]
then
HOST=$ALTPMNAME
fi
# html header
echo ‘Content-type: text/html’
echo
echo ”
echo ”
echo ‘Xen Cloud Control System
echo ”
echo ”
echo ”
# check for no permission
REQ_USER_PERM=$(sh ./user-get-perm.sh $REMOTE_USER)
if [ “$REQ_USER_PERM” != “All” ]
then
echo “Sorry, you do not have permission to execute this action!”
exit
fi
cat ./xccs-header.html
echo ‘


# set actual disk size value
DSK=$(echo “scale=2;$WWW_disk*1073741824” | bc)
# set actual memory size value
MEM=$(echo “scale=2;$WWW_memory*1073741824″ | bc)
# set disk size
echo ‘setting disk size …’
xe template-param-set -s $HOST -pw $PASS -u $USER uuid=$RH_TEMP_UUID other-config:disks=””
# build name-label and name description for the new VM
USER_NAME=$REMOTE_USER
USER_PERM=$(sh ./user-get-perm.sh $USER_NAME)
USER_ID=$(sh ./user-get-user-id.sh $USER_NAME)
GRP_ID=$(sh ./user-get-group-id.sh $USER_NAME)
# build new label
echo ‘Building name label …

VM_LABEL=$(date +%j%Y%H%M%S)
# install VM
echo ‘Installing VM …

VM=$(xe vm-install -s $HOST -pw $PASS -u $USER template=”$RH_TEMP_UUID” new-name-label=$VM_LABEL sr-uuid=$SR_UUID)
# build new description
VM_DESCR=$(echo $USER_ID’-‘$GRP_ID’-1′)
# set new description
echo ‘Setting description …

xe vm-param-set -s $HOST -pw $PASS -u $USER uuid=$VM name-description=$VM_DESCR
# get network UUIDs for first and second Ethernet bridges
NETWORK1=$(xe network-list -s $HOST -pw $PASS -u $USER bridge=$NETBRIDGE1 params=uuid –minimal)
NETWORK2=$(xe network-list -s $HOST -pw $PASS -u $USER bridge=$NETBRIDGE2 params=uuid –minimal)
# create VM vif0 and vif1
echo ‘Creating network interfaces …

VIF0=$(xe vif-create -s $HOST -pw $PASS -u $USER vm-uuid=$VM network-uuid=$NETWORK1 mac=random device=0)
VIF1=$(xe vif-create -s $HOST -pw $PASS -u $USER vm-uuid=$VM network-uuid=$NETWORK2 mac=random device=1)
# set kickstart file
if [ “$ENABLE_KS” = “YES” ]
then
echo ‘Setting kickstart …

xe vm-param-set -s $HOST -pw $PASS -u $USER uuid=$VM PV-args=”ks=$KSSRV ksdevice=$KSDEV”
fi
# set memory maximum
echo ‘Setting memory …

xe vm-param-set -s $HOST -pw $PASS -u $USER uuid=$VM memory-dynamic-max=$MEM
xe vm-param-set -s $HOST -pw $PASS -u $USER uuid=$VM memory-static-max=$MEM
# set number of vCPUs
echo ‘Setting vCPUs …

xe vm-param-set -s $HOST -pw $PASS -u $USER uuid=$VM VPUs-max=$WWW_vCPU
# set install repository to local install server
echo ‘Setting install repository …

xe vm-param-set -s $HOST -pw $PASS -u $USER uuid=$VM other-config:install-repository=”$INSTREP”
# set watchdog priority 3 on this vm
echo ‘Setting watchdog …

xe vm-param-set -s $HOST -pw $PASS -u $USER uuid=$VM ha-restart-priority=3
xe vm-param-set -s $HOST -pw $PASS -u $USER uuid=$VM ha-always-run=true
# get the pool master UUID
PM=$(xe pool-list -s $HOST -pw $PASS -u $USER params=master –minimal)
# start the VM on the pool master
echo ‘Starting the VM …

VM_START=$(xe vm-start -s $HOST -pw $PASS -u $USER uuid=$VM on=$PM)
echo ‘Virtual machine ‘ $WWW_label ‘is complete!’
echo ‘


echo ”
echo ”

Load balancing the Xen Cloud.


One of the strongest benefits of cloud computing is that it gives you the ability to spread workloads over a number of servers that make up the cloud. This is great, but how do you make sure your workloads are spread out evenly and not bunched up on a few or even just one server in the cloud? In this post, I’ll be discussing load balancing the cloud as I do with Xen Cloud Control System and Xen Cloud Platform.

The goal of any load balancer, of course, is to spread the work on the cloud out to use the servers that make up the cloud as efficiently as possible. There are a couple of other considerations as well. The load balancer can’t cause the cloud to oscillate (endless shifting of load) as well as needing to deal with loads that can’t be moved.

With the XCCS load balancer, the first thing I do is make the determination that we’re only going to consider memory usage for a metric. My experience with XCP is that I’m 100% guaranteed to run out of memory long before CPU capacity. The second is that we’re going to set a 10% unbalance limit. If you try to push much closer than this, you run the very real risk of setting the cloud oscillating.

Now that we have the ground rules set, the first thing I do is identify the cloud servers with the highest and lowest amount of free memory. This starts the balancing with the two most extreme.

The next step is to identify the virtual machine with the lowest memory usage on the server with the least free memory. Moving the virtual machine with the smallest footprint is a conservative approach that once again insures that we don’t get things endlessly oscillating. A cloud that’s burdened by constantly shifting virtual machines is bad news.

Next is sanity checking to make sure the virtual machine we chose can be moved and that it can be moved to the server with the highest memory free. If this is the case, then that virtual machine is live migrated to the server with the most memory free.

The final step is for the load balancer to run the rest of its 5 passes and then further balancing waits for the next run of the load balancer. This approach makes sure that the load balancing process itself doesn’t use up all the resources and impact the working virtual machines running on the cloud.

A couple of runs of the XCCS load balancer and even the worst cloud can come out white and fluffy!

For more details on the XCCS load balancer, visit us here!

Vern
SwiftWater Telecom http://www.swiftwatertel.com
Xen Cloud Control System http://www.xencloudcontrol.com

Announcing Xen Cloud Control System for Xen Cloud Platform


xen cloud control system logo

Announcing the release of Xen Cloud Control System ver 0.1 for Xen Cloud Platform! XCCS is a lightweight web based control and operations package for XCP. Since XCCS is web based, there’s no software or client apps to download and it can be run from almost any web browser, including smartphones!

Visit the Xen Cloud Control System web site for more information or to download your copy today!

Uncomplicate the cloud, visit the SwiftWater Telecom web site for cloud computing services!

Vern

swiftwater telecom rcs cloud computing logo