23.09 20131

Running Cloudstack 4.1.1 on Raspberry Pi

Cloud is not a software, It is a device!

It sounds too good to be true. What if we no more had to worry about the data center design and software installations and configurations to run our private cloud? What if we could just buy a Cloud device (like we purchase a switch or a firewall) and put it into a rack, turn on all hypervisors and configure our network and storage using a web GUI or command line interface?
I’d like to call this device EPIC (Embedded Private Integrated Cloud), but the only problem is that such a device does not exist in the today’s market yet.

Our journey began from the Schuberg Philis smoking room, when we talked about the amazingly small footprint of the Cloudstack management on the running head and exceptional characteristics of the Cloudstack software design to do so, and it’s power to run almost 100% efficient on the hardware resources. The question raises: can we run Cloudstack on ARM processor? what is the smallest device that can run Cloudstack?

Raspberry Pi?! You’re kidding right? A credit card sized ARM board with 512MB RAM and an SD card as the primary storage?
When Gerard told me “it is theoretically possible!” There happened something in my mind that didn’t let me sleep well for 2 weeks, until we got it working. It took me 11 times compiling Cloudstack on Raspberry Pi and each time for 3 hours and 15 minutes waiting. Every time ended up with a compile failure for another dependency, until I learned how to do it and create a repository at:
http://www.claspi.com/cloudstack/repo.
Theoretically I could just copy the jar files and run it on tomcat6, but I didn’t take that path because the compiled code is not optimized for ARMHF and creating the repo and deb packages becomes unnecessary complex and difficult to trouble shoot.

You can read the whole journey at www.claspi.com. I need to thank Funs for all his support on configuration and memory allocation. Cloudstack is now running on Raspberry Pi, the interface is functioning normally and it is remarkably usable.

Try it yourself:
http://catalina.claspi.com:8080/client
Username: admin
Password: bluemonkey
- Please skip the Cloudstack configuration wizard, there is nothing to configure yet.
- Be social, don’t change the admin password.

I took the demo Raspi offline, it seems in spite of my request not to change the admin password, the first thing many folks do is changing the admin password and not resetting it back, making the demo unusable for others. This cost me each time 5 minutes to reset it, so I decided not to it anymore. If you really need the demo, please let me know by mail or comment. (this is also a good excuse for me because now I can use my Raspi for other interesting stuff ;)

Don’t worry if you break something. This Raspberry Pi is not connected anywhere inside, and there is only one outside connection, you can test the interface, configure it as you like, break things, and then send me an email to aahmadi@schubergphilis.com to re-image the SD Card if needed. It just meant to be a demo for testing the interface response and performance. Please note that MySql is also running on the same Raspi.

This installation and all tests on Raspberry Pi does not mean anything by itself, except having so much fun. But it opens the possibility to run Cloudstack on embedded devices in general. There is no other Cloud solution in the community that is able to do so. Openstack is at least 3 years far from this idea, and talking about running Microsoft Azure on embedded devices sounds like a bad joke.

However, if you want to install Cloudstack on your own Raspberry Pi, please follow these steps. In case of any issues, let me know by email or comment.

———————————————————————–
CLOUDSTACK INSTALLATION ON RASPBERRY PI
———————————————————————–
Read the installation manual:

https://cloudstack.apache.org/docs/en-US/Apache_CloudStack/4.1.1/html/Installation_Guide

Overclock Raspi on 900Mhz and set 16Mb for GPU

# vi /etc/apt/sources.list.d/cloudstack.list

Add:
deb http://www.claspi.com/cloudstack/repo binary ./

# apt-get update
# apt-get install python-software-properties
# apt-get install cloudstack-management

memory alloc:
# vi /etc/cloudstack/management/tomcat6.conf
Don’t copy paste the line, your JAVA_OPTS may differ, just change the memory reservation (in bold) in the existing JAVA_OPTS.
JAVA_OPTS=”-Djava.awt.headless=true -Dcom.sun.management.jmxremote.port=45219 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Xmx384m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/log/cloudstack/management/ -X:PermSize=128M -XX:MaxPermSize=256m

JVM:
# vi /etc/cloudstack/management/tomcat6.conf
JAVA_HOME=”/usr/lib/jvm/java-1.6.0-openjdk-armhf”

Follow the Cloudstack installation manual for the rest of the installation.