After reading about the cloud platform from Ravello Systems on twitter and was triggered by their announcement of Inception (beta), as I really like the movie with the same title. I decided to give it a go for myself and write a small blog article about it.
About Ravello Systems
Ravello Systems is best at explaining who they are and what they do:
Ravello was founded in early 2011 with the sole purpose of changing the way companies, large and small consume the public cloud. Ravello is brought to you by the team that introduced the KVM hypervisor (now the standard virtualization technology in Linux). We have deep expertise in virtualization, cloud, networking and storage technologies.
Ravello’s Smart Labs have self-contained capsules to run your VMware/KVM development, test, training and demo environments in the cloud without migration. Smart Labs on AWS or Google powered by nested virtualization
Cloud Infrastructure As a Service (HVX)
Ravello calls the technology behind it’s Cloud Infrastructure As a Service: HVX. This technology allows the user to encapsulate existing workloads and run it on ‘any’ cloud platform (currently Ravello supports Google Compute Platform & Amazon AWS). This allows the users to copy/clone existing (unmodified) workloads to a public cloud for dev/testing purposes and Q&A.
HVX is highly optimized for running workloads inside a single cloud virtual machine (nested). The nested virtualization uses Dynamic Binary Translation with direct execution, implements Block Chaining and allows for nested hypervisors (Inception). It’s designed to run existing (virtual) workloads unchanged. HVX exposes VMware- (like i.e. VMXNET3/PVSCI) or KVM- (i.e. VirtIO) devices to the virtual machine. By the recent addition of implementing virtualization hardware extensions (Intel VT and AMD-V) in software, allowing for running hypervisors on top of the platform besides ‘plain’-virtual machines.
By using software defined networking (and overlaying the cloud provider network) HVX allows running multi-VM applications unchanged on a public cloud platform and allows the user to define multiple networks, routers and services (DNS, DHCP, Firewalling, Load Balancers, VPN Gateways). HVX implements a fully distributed switch and distributed virtual router and let’s VM’s running in separate cloud VM’s to communicate via this network overlay between these cloud VM’s (P2P tunnels over UDP, VXLAN perhaps?) as if they where on the same network.
HVX abstracts the provided cloud storage by the public cloud provider and presents them as local block devices to the VM, optimizes the storage traffic for best performance by using adaptive caching with multiple strategies. The local block devices are backed by a CoW (Copy on Write) filesystems which adds the ability for multi-vm incremental snapshotting.
Virtual CDROM presents a CDROM drive to the virtual machine on which images from the Ravello Image stores can be connected.
Nested ESXi lab
Ravello Systems announced the beta launch of Inception on 14 April 2015, which makes it possible to run VMware ESXi on AWS or Google Cloud. I wanted to see if this cloud platform could function as an expansion for our homelabs @ Cloudfix, so we could use this in case we needed more resources than we have in our own labs. This is why I decided to build a basic vSphere 6 platform with 3 ESXi6 hosts and an VCSA6-appliance. The user interface is very easy to use so this was done in a few clicks.
First I created a ESX Ravello Template by following the steps defined in the following document : http://www.ravellosystems.com/blog/create-esxi-5.5-iso-image/ and saved it as a template to reuse it for the other ESX hosts.
After building the lab, I ran into trouble with the virtual ESX machines keep throwing TSC Sync Error PSOD’s, so I decided to contact Ravello to check if this is a known issue and what I could to about it. When I published the lab to a specific Cloud location (Amazon / Virginia) the problems went away, so I guess it had something to do with the specific cloud provider / location. Waiting for a response of the Ravello team what this problem could have been caused by. Will blog about this when I get the issue resolved.
[Update 21-4-2015]. As seen in the comments to this blog article the problem was in software module when spinning up instances on Google Compute Engine. These are currently being resolved. Thanks to Manisha@RavelloSystems for providing feedback on this issue.
By defining which services a VM exposes externally we can choose which services are exposed to the outside world. For this lab for example i published HTTPS (port 443) and RDP (3389) for the vCenter to the outside world. After setting up the Windows Firewall of the (windows-based) vSphere vCenter server to allow this traffic, the VM is now reachable via HTTPS and RDP on the public IP. The rest of the ports are only reachable within the fenced network of the application.
When the blueprint of the lab is finished, it’s time to publish to the cloud. At this point you’re given the choice to publish it to the best-price provider or the best-performance provider. When the best-performance provider is chosen you’re also given the choice on which location you want to publish the application.
You can also immediately see what this setup is gonna cost you per hour (including AWS/Google costs). According to Ravello when the application is stopped you only pay for the storage used for your stored VM images and blueprints ($0.12/Gb/month).
Couldn’t find a dashboard which show me what the currently incurred costs are for the running application (there is a billing tab in the UI, but it isn’t showing anything, probably because this is a free trial 🙂 ). Ravello support tells me the billing information is not shown in real time but is updated every couple of hours.
After publishing the application, I installed vCenter Server 6 on a Windows 2012 R2 template and created a lab successfully. Because i created the ESX 6 images as a VM in the Ravello Library it is now very easy to expand the application with more ESX servers.
So what can we use Ravello Systems Smart Labs for. It’s main use cases at the moment are:
- ‘Home’-lab / Virtual Labs / Training
- PoC (Proof on concept)
In general I was really impressed by the ease of use of the interface to Ravello and the functionality it’s cloud platform currently has. Also the performance during the building the vSphere 6 lab was fine. Also really liked the speed Ravello Support and Manisha Arora responded to my questions about the service. But there’s always room for improvement.
Some things I think would be nice to have in the future:
- Moving applications between clouds (best-price to best-performance or other locations) without unpublish/publish-cycle (or a button te republish or something)
- Improve editing and updating VM’s (sometimes had to double-click, where it should be sufficient to single-click)
- Publishing does only allow me to select 3 of the cloud locations available when selecting best performance? [Update 21-4-2015] The other locations can be enabled by sending an email to support.
- SSO between the different components of the solution (i.e. Ravello VM Uploader, Support site all popup a login screen in which you have to enter the same credentials)
- Real-time cost information of a running application (and alerting/warning when this reaches a certain threshold)
I’m really excited to know what Ravello will add to this platform in the future and will keep you updated.
You can try it yourself for free (no CC required). You can sign up here: http://www.ravellosystems.com/ravello-free-signup/
The trial limits:
- 6 Concurrent running VM’s
- 6 Public IP’s
- Max. 7 GB RAM per VM (Ravello was so nice to increase this for us to 8GB to allows us for vCenter to install on our Windows 2012 R2 VM)
- 5 Mbit/s Network Traffic Out
- Unlimited Network Traffic In
- 5 conn/s outgoing TCP connections
- 20 pkt/s outgoing UDP packets