I've been using Rackspace's Cloud Servers for months now and I thought moving some of our standard PHP apps (like wordpress) to Cloud Sites would save me some time as a sysadmin/developer. I also figured I would setup a database there and use it for my Rails application that runs on Cloud servers (instead of building my own or using Amazon's RDS).
I'm sorry to say that after a few days of working with Cloud Sites, I think managing the sites myself on Cloud Servers would be easier. Fortunately, many of the problems I am having can be easily fixed.
My issues
1) No rsync or scp access. Installing a wordpress site via FTP or Rackspaces file manager was just plain painful. The file manager didn't allow me to move files and it always extracted zip files to the root directory. Maybe it works correctly on IE? I only run linux so I have no way of knowing.
2) No easy way to do backups. Cloud Sites allow you to run cron jobs but the example backups build tarballs on the same host that the site is running on. When I saw they had ruby as a cron shell option I assumed they had the CloudFiles gem installed, but they didn't. I want my backups off moved off the host. I don't want to log into my account and download them manually.
3) No access to database binary logs. I like to take a snapshot every 15 minutes or so in case I lose my database but this is not an option with the cloudsites database. You could do a mysql dump from another host but you probably don't want to do this every 15 minutes.
4) For my Cloud Server rails app there was no LAN address to access my Cloud Site database so all my queries incurred bandwidth charges.
Feature Requests (easy to hard)
1) Give people a cron job (or simple backup tab like cloud servers has) that can be used to dump their database daily to Cloud Files. Its a win for everyone. The user gets automated backup and you get more Cloud Files revenue. Here is a script I run from a Cloud Server to back up my Cloud Site database nightly (I can not run it as a Cloud Site job as the CloudFiles gem is not installed on the hosts.. as i mentioned above).
def run(command) result = system(command) raise("error, process exited with status #{$?.exitstatus}") unless result end cf = CloudFiles::Connection.new(@account_name, @cloud_key) container = cf.container(@directory_name) cmd = "mysqldump -C --opt -h #{@mysql_host} -u#{@mysql_user} " cmd += " -p'#{@mysql_password}'" unless @mysql_password.nil? cmd += " #{@mysql_database} | gzip > #{@backup_directory}#{@db_file}" run(cmd) t = container.create_object(@db_file) t.load_from_filename "#{@backup_directory}#{@db_file}"
2) Advertise the LAN address of the Database Hosts... of course the address given now is probably a switch that hits several DB machines.
3) Fix the File Manager. Maybe it's just me but on Firefox/Linux moving files doesn't work. A crippled version of rsync may also be nice. I suspect there are security issues here but shell access sure would be nice.
4) This is probably hard but it would be nice if I could get access to the MySQL binary logs.
Thanks for listening. :-)
Hi Tony, Many of your needs line up with our priorities for Cloud Sites. It's no surprise either. I spend a great deal of time listening to our community of users and making sure their voice is heard when we develop product plans. At the end of the day, we're developing solutions to solve your business problems. Shell access and backup service are two requests I get quite often and we will work to support. I really appreciate your insight and I personally believe this type of feedback is truly the best way to improve our service. Also, we're working on a cool new way you will be able to provide ideas and collaborate with others in The Rackspace Cloud community. More to come soon... If you have additional questions or product requests, feel free to contact me anytime. Ryan Bartley Sr. Product Manager The Rackspace Cloud ryan.bartley@rackspace.com