OpenStack not only provides the software building blocks to build a private cloud, it’s also licensed under Apache 2.0, which means there are no software licensing costs. Major industry vendors such as Rackspace, Citrix, Dell, Cisco and Microsoft participate in the OpenStack project. The OpenStack development team is committed to an open, modular design that supports open standards and all major virtualization platforms -- Microsoft Hyper-V, Citrix XenServer, KVM and VMware ESX.
Building and maintaining an open source private cloud isn’t for every company; however, if you have the infrastructure and development staff, it’s worth the effort.
A common concern with moving corporate data to a public cloud involves the multi-tenant structure and often is a driver behind building a private stack or cloud. The OpenStack project has a vulnerability management team as well as teams to address audits and cloud security improvements, a definite indication that security is a priority to the project. While these are all positive aspects of OpenStack, the most important elements are the software components it provides.
Understanding OpenStack cloud components
The OpenStack architecture includes several high-level components, including compute servers, a message queue, a relational database, networking services, application programming interfaces (APIs) and a management dashboard. Redundant copies of components are used for resiliency and availability; persistent data is kept in a distributed data store.
A cloud controller that’s accessed via the API server coordinates cloud services. And an authentication server provides authentication and authorization services while an object store component enables persistent storage services.
OpenStack is a shared-nothing system and components communicate using a messaging queue based on Advanced Message Queue Protocol (AMQP) and implemented with RabbitMQ. Cloud controllers use SQLAlchemy, a Python toolkit for relational databases, so any compatible relational database can provide persistent storage for cloud controllers. The OpenStack architecture provides three network configurations based on subnets, DHCP and VLANs, which allow users to have virtual private network access to projects.
Installing and configuring OpenStack
When you are ready to install OpenStack, you have the option to use ISO images; scripts; or a manual, step-by-step installation method. The step-by-step method assumes you are familiar with tools like git-hub and apt-get as well as with configuring a relational database like MySQL or PostgresSQL.
Once you have the software installed, you’ll need to configure OpenStack using a series of configuration files, most important of which is nova.conf. (Nova refers to the compute services within OpenStack.) It’s in this configuration file that you would specify your settings for virtualization, networking, relational database, image server information, directory services and API connection parameters. You’ll also need to configure the Identity Service, known as Keystone, and define users and roles.
OpenStack’s storage service, or Swift, is installed as a separate component. Remember: OpenStack developers recommend as least five nodes for a production cluster. An optional component, the OpenStack Dashboard, provides a Web interface to the OpenStack API.
Remaining error-free when building an OpenStack cloud
If you think there are a lot of moving parts in OpenStack, you’re right. Each time you install a component or configure a setting, you are open to error. Setting configuration parameters is a common source of problems; admins often misconfigure network settings, improperly authenticate credentials, disable daemons on compute servers or run the wrong type of image for the system.
If you think there are a lot of moving parts in OpenStack, you’re right. Each time you install a component or configure a setting, you are open to error.
Other problems can occur with instances; for example, an instance stuck in a pending state can be caused by a missing or corrupt file that supports the virtual machine, disk, kernel or ramdisk. By setting the logging option to debug, you might be able to gather enough details about the problematic process to isolate the root cause.
The OpenStack cloud system also has a complex set of dependencies. The documentation provides detailed descriptions of which packages are required for particular components and how to obtain them by using package management utilities such as apt-get. Following this should help mitigate the risk of creating unmet dependencies.
Running a private cloud requires a substantial amount of effort, time and infrastructure know-how. OpenStack is a well-supported open source cloud project that provides a robust platform complete with the compute, storage, image and identity management components.
Dan Sullivan, M.Sc., is an author, systems architect and consultant with over 20 years of IT experience with engagements in advanced analytics, systems architecture, database design, enterprise security and business intelligence. He has worked in a broad range of industries, including financial services, manufacturing, pharmaceuticals, software development, government, retail and education, among others. Dan has written extensively about topics ranging from data warehousing, cloud computing and advanced analytics to security management, collaboration, and text mining.
This was first published in March 2012