OpenStack: 7 Core Projects You Should Know
Last week I took a two day boot camp on OpenStack, which is increasingly popular these days. The project was initially created at Rackspace in answering Amazon Web Services, and open sourced to the community.
Not only service providers and software vendors showed interests in the project, but also hardware vendors tried to pre-install OpenStack as one of key differentiators (inside most, if not all, of hardware boxes are Intel therefore not much difference).
On a high level, OpenStack is very similar to Amazon Web Services, but different in that it allows you to create your own services for private clouds or public clouds. There are actually open source implementations after Amazon Web Services, like Eucalyptus, CloudStack (part of Citrix and under Apache foundation now). These open source projects are in direct competition. VMware vCloud Director fits in this category but more sophisticated than these open source implementations. Although VMware has its own cloud product, it also grabbed a seat on OpenStack board.
Like many open source projects, OpenStack has several sub-projects, each of which represent a components in the overall system. If you are familiar with Amazon Web Services, most of them can be mapped to Amazon therefore easy to understand.
- Nova. This is compute service like Amazon EC2. It’s responsible for creating and managing new virtual machines. To work with hypervisors, it use libvirt which does support VMware.
- Glance. This is a virtual machine image catalog services that can be backed up by other storage services like Swift which comes soon.
- Swift. This is an object store like Amazon S3.
- Keystone. This is an authentication service. The way it works is like single sign on service.
- Horizon. This is the dashboard for the project implemented with Django Web framework. Note that this has nothing to do with VMware Horizon which is a single sign on for SaaS applications.
- Quantum. This network service that takes care of virtual L2, IP pools & DHCP, etc.
- Cinder. This is block storage service like Amazon EBS.
To glue them together, OpenStack uses RabbitMQ with JSON messages. As expected, it can do either synchronous or asynchronous messaging among components. With its critical role in the whole system, it can well be a single point of failure therefore it should be HAed in real production environment. Note that messaging is not the only SPOF, and you want to take care of others as well in production.