OpenStack is a system for creating clouds. It provides a single interface to allow the user to distribute computing, storage, and networking over a number of computers.
What is different about OpenStack is that it is an open source solution that allows individuals and groups to create their own clouds.
This is important because in the past, when companies wanted to create their own clouds, they had two choices. Some, like Twitter, built their own clouds. Most, however, chose to use other company's proprietary clouds. For example, Pinterest uses Amazon Simple Storage Service (S3) for all its storage needs.
While Amazon's cloud computing options make heavy use of Linux, as the rest of the web hosting industry does, OpenStack is completely open source. You're not stuck with anyone's service. You can use a public cloud while being able to set up your own private clouds if you want.
You can mix and match different components: computing, storage, networking, whatever you want. It's like cloud computing Lego.
Back in 2008, Rackspace Hosting had created a cloud-based storage system. They were looking to expand it, so they ventured into virtual hosting.
At the same time, NASA was working on a system that allowed it to join together large numbers of computers to solve the kind of CPU intensive problems that astronomers have to deal with. In 2010, Rackspace and NASA decided to combine their projects into a single one that dealt with computing, storage, and networking. That was OpenStack.
Eventually, hundreds of other companies would join the project. These include some of the biggest technology companies in the world: AMD, AT&T, IBM, Intel, and even Cisco, which has traditionally been resistant to open source projects.
OpenStack has really caught on in the hardware and hosting worlds. It's also caught on with the usual suspects in the open source world. Canonical, the makers of the popular Ubuntu Linux distribution as well as Red Hat were early backers of the project.
OpenStack's ideas are so powerful that they've caused bitter rivals to come together.
There are many components of OpenStack, but they can be put in three broad categories: computing, storage, and networking. In addition to these, there are components that allow users and developers to interact with OpenStack.
The computing functions of OpenStack are the core of anything that a user does in the cloud. It is the brains of the operation.
And it is correct to use the plural, because it is broadly two different things. One is Image Service: Glace. It manages images.
But note that these are not images on a disk as you would find on Instagram. Rather they are images of disks: executable code and virtual machines. But Glance doesn't store the images itself. That is done by other components of OpenStack.
The other part of OpenStack computing system is more of what we think of as a traditional operating system: Nova. It manages the instances that are running.
But whereas in a traditional operating system, the instances would be processed on a single machine, Nova controls whole virtual machines potentially distributed over thousands of computers.
There are several other types of computing components that are less frequently used.
- Ironic, bare metal provisioning service
- Magnum, a container orchestration imaging tool
- Storlet, a computable object store
- Zun, a container management service
There are two parts to OpenStack storage. The most obvious part is Object Storage: Swift. It is the standard system for storing data distributed in a redundant form (think: RAID).
This is generally how Glance stores images (although they can be stored on a single drive in a traditional way). Swift stores data in "blobs," hosted across large numbers of physical machines.
A single proxy server keeps track of all the data that's stored across the different servers. The key difference from traditional block devices is that the data in blobs is less structured. The system keeps all the data consistent for later retrieval.
The second component of OpenStack storage is Block Storage: Cinder. It provides storage for the virtual machines to use. So, just as you might mount a hard drive on a traditional Unix system, Cinder allows virtual machines to mount virtual drives.
This is the main way that virtual machines have of storing information between instances — more or less the virtual machine equivalent of power cycling.
Block storage works more like the hard drive on your machine does: it divides a volume into blocks of data of a fixed amount. For example, four kilobytes. The downside of a block storage system is that it's not as efficient because data doesn't always fit neatly into these blocks.
The model is still well understood and many OpenStack virtual machines depend on it.
Cinder uses a Logical Volume Manager, where a virtual drive can be spread out across different physical devices.
Networking is done to some extent in the computing portions of OpenStack, but primarily done with the Neutron component. It manages networks and IP addresses.
For example, it can give a virtual machine a static IP address or use DHCP for dynamic addressing. It also provides for load balancing and the creation of private networks. Designate handles DNS addresses, and Octavia is the load balancer.
There are three ways to interface with OpenStack. The primary way is with the OpenStack Dashboard: Horizon.
It is a graphical interface that allows administrators to manage the cloud, and users to access and use their parts of the cloud. OpenStack also provides a command-line interface and an API.
|OpenStack Dashboard||Easy to understand, graphical way to manage OpenStack machines|
|Command-Line Client||Very efficient, can be used in scripts easily, less easy to understand|
|API||Allows Developers to create custom programs to manage OpenStack resources|
What About Amazon?
Amazon offers cloud computing — and has since the end of 2006. But it is a proprietary system. It allows users to do much the same kind of stuff like create distributed virtual machines.
But it does not allow people to set up their own clouds or take part in improving or advancing the software.
While both systems offer cloud computing, OpenStack is a lot more flexible.
You can find an OpenStack public cloud or set it up across as many of your machines as you like. You can have virtual machines made from datacenters spanning different continents. You can make as many contributions to the code as you can.
Does this sound too good to be true? It might, but that's the magic of the open source community. OpenStack has the backing of many major players in the tech world for a very good reason.
There are three ways that you can use OpenStack:
- Using an existing public cloud based on OpenStack, such as the one from HP.
- Set up your own cloud with OpenStack.
- If you have the coding skills, joining the OpenStack development team.
OpenStack clouds can be subdivided into regions, availability zones, and host aggregates.
A Region has a full OpenStack Deployment, Availability Zones handle virtual machines, and Host Aggregates can organize systems according to different criteria, such as sharing one physical drive.
Find The Best OpenStack Hosting For You
If you're looking to dip your toe into OpenStack, it's best to try it out for yourself.
You might have a spare machine to try to install OpenStack, but you might also experiment with virtual machines if you don't want to experiment with a public cloud.
The OpenStack project offers instructions for setting up a local development environment, dubbed DevStack, on the project home page.
You need an existing Linux distribution to use OpenStack. It's easy and fun to set up.
You can use a partition but a virtual machine on VMware or VirtualBox will be a lot more convenient, as you can keep working with your existing setup without having to reboot.
We'll go with Ubuntu for this example, because it's very easy to set up and it's one of the backers of the OpenStack project. It involves several steps.
- Add the "stack" user
- Download the DevStack software
- Install DevStack
The DevStack is intended to create a development environment and let new users familiarize themselves with the Dashboard.
If you want to install OpenStack on a production server, you're better off using a distribution. An OpenStack installation has many moving parts. There's all the storage, computation, and networking tools mentioned earlier.
All of these are developed separately under the OpenStack umbrella. You could download them piecemeal using apt-get but it would be too time-consuming to get them all to work together.
It would be like trying to install a Linux system with just a kernel. There are several OpenStack distributions available, including a special version of Ubuntu with the OpenStack components pre-installed.
Here's What Your OpenStack Hosting Needs To Offer
OpenStack is a system for creating clouds. With it, you can distribute computing, storage, and networking over any number of computers from a single interface. This is something you could do with your computers at home. But most people use OpenStack with hosted dedicated servers. Making OpenStack work will require that you be fairly technical. Make sure any host you use doesn't have a problem with OpenStack. We recommend LiquidWeb for OpenStack hosting.
OpenStack Hosting Options
In terms of hosting, you'll either use someone else's public clouds are set up your own private clouds with your own private servers.
There are a number of web hosting providers offering either public clouds or supporting OpenStack. Try to pick one that offers the complete OpenStack distribution on their servers, if you can. It will make your life that much easier when you go to set up your machines.
Fortunately, with the wide support that Linux and OpenStack have in the industry, it's not hard to find a hosting provider that will accommodate your needs.
Of course, price is a consideration, but you should always look at support. Will they help you if you get seriously stuck?
A good hosting company will help you 24/7, because crashes always happen at an inopportune time.
Is an OpenStack installation overkill? It might be in some cases, but you can be proud that you're hosting your website on the same platform that CERN does to analyze data from the Large Hadron Collider.
Pros and Cons
OpenStack has positives and negatives.
- Free and open source
- Support from lots of vendors
- Quick deployment
- Extremely flexible
- Code is available
- Can be complicated to set up
- Designed for large cloud server installations
Top 3 OpenStack Hosts
OpenStack is an amazing cloud computing platform that puts you in control. With the support of major players like HP, RackSpace, and IBM, it's taken the hosting world by storm.
You can build your own cloud using a VPS. It's not as cheap as using a public cloud, but the flexibility might be well worth it depending on your needs.
Image courtesy Liquid Web
Liquid Web is one VPS provider. It's hardly the cheapest one of the bunch at the price of a fairly good restaurant meal per month.
The VPS plans give you enough storage space and transfers to get you to dip your toe into the world of OpenStack with their "heroic support."
Image courtesy Atlantic.net
Atlantic.net offers a cheaper plan with similar amounts of storage, but the prices are more within the average user's budget.
Both public and private clouds are available. The servers run on SSD so they're much faster than whirling hard drives.
Image courtesy DigitalOcean
DigitalOcean is well-known for catering to developers wanting to deploy clusters of virtual machines. This makes them well-suited to deploying private clouds.
You have a choice of Linux distributions on their "droplets," or what they call cloud servers. They have good support, with extensive documentation and opportunities for users to help each other out by answering questions.
OpenStack is an extremely exciting system that can be used by anyone who has great demands for computation, storage, or networking. Only you can know if it is an appropriate tool for your needs. But it is easy to try out and use — whether you want to host it locally or on a remote server.
Get started today!