I’ve always preferred hosting my own services on my own servers. At home I have 5 desktop computers running as headless servers, each one with it’s own purpose. A couple of them even running a few virtual machines. However, over time I’ve needed more and more servers for either testing purposes or for running live services and I just can’t justify adding more desktops and more heat and power consumption in my home. I also had to shut my websites down for a few days during a move a little over a year ago, not to mention the times that I have power outages that also result in downtime.
These scenarios ultimately lead me to embrace cloud hosting. A lot of people immediately think of services like Dropbox or Google Drive when they hear mention of cloud hosting. But there are many providers out there that offer much more than that. Services like Amazon and Google offer a variety of hosting services including virtual machines, database servers, web hosting, storage and much more. What I’m primarily focusing on in this post is virtual machine hosting.
When I first moved my website to the cloud, I immediately went to Amazon EC2 (Elastic Compute Cloud). EC2 allows you to select a virtual machine size depending on how much memory and CPU power that you need. You can also select the OS that you want to run in the VM. And you don’t have to install anything. In the marketplace, you just find the image that you want. Some of these are free and some will have a licensing cost, usually charged by the hour that the machine is powered on. Speaking of charges, the machine itself is billed by the hour and the rate is determined by the virtual machine size that you select. You can also specify the disk size that you need, and even add additional storage if needed.
I started out with one server and eventually added a few more including Windows Servers and Linux servers. After a few months, I realized I was spending almost $150 per month, mostly for servers that I didn’t really need. Amazon also has a few drawbacks. The biggest one for me was not having console access to virtual machines. This proved to be an issue in times when I couldn’t get network connectivity to my machine, which happened on occasion. Another drawback is that Amazon limits you to 5 static IP addresses per region. You can request more with a valid reason and all machines also can be assigned a dynamic IP which changes on every system boot. Amazon also charges for data transfers out to the internet (data transfers in from the internet are free).
A few weeks ago, one of the engineers that I work with turned me onto a service called Linode (http://www.linode.com) that he has been using for many years for his own personal hosting. I immediately setup a machine and played around with it. I was pleased by the simplicity of the machine size options as well as the complete flexibility of the machine configuration available. Each plan includes a set amount of memory, CPU size, disk space and transfer quota. Where Amazon’s total costs ended up fluctuating from month to month, Linode seems to be more of a static cost. Like Amazon, you can change machine sizes at anytime, so you aren’t permanently locked into the original machine size that you chose.
My favorite thing about Linode so far, though, is that they offer console access to your VM’s. Through your Linode management portal in a browser you can access your machine’s console using what they call “lish” (Linode Shell). Lish connects to your Linode account and from there you simply type the name of the machine you want to connect to and you are connected to the machine’s console. This is excellent for troubleshooting a machine that isn’t remotely accessible or for those times when you make a firewall configuration mistake and lock yourself out.
Each Linode machine is automatically assigned a static public IP address. With a valid reason, you can request additional IPs if you really need them. You can also change the IP address if you ever need to. If you have more than one Linode, you can also add a static private IP to your machine so that they can communicate internally without using the public IP connections.
When you create a Linode machine, you first select the size of machine that you want. The smallest machine includes 2 GB RAM, 1 CPU, 24 GB SSD and 2 TB transfer quota with 40 Gbps download and 125 Mbps upload speeds. This machine costs $10/mo. After you select the machine size, you then configure the machine. You can divvy up your storage however you’d like or use all of it for 1 disk, depending on your needs. Once you have your machine configured with all of the boot up and networking options, you can then “rebuild” your machine by selecting an OS to have installed and a root password. They offer the latest (and legacy) versions of Debian, CentOS, Ubuntu, Fedora and a few others. Within a few minutes, your machine will be prepared and ready to boot for the first time. You then just click on the “Boot” button and you’re machine will spin up. You can then either SSH in using the system’s public IP or use ‘lish’ to access the console.
This website, as well as all my others, and my DNS zones are actually all being hosted on machines that I’ve started running on Linode. So far, I’ve been impressed and overall pleased with Linode’s capabilities over Amazon. Whether you are looking for virtual machine cloud hosting or just looking to spin up a low-cost machine for testing or learning purposes, I’d highly recommend Linode. You can use my referral link here to check them out.