Building Storage Services in OpenStack on NetApp - Part I of III

12 minute read

Welcome to part one of the three-part series on creating storage services in OpenStack on NetApp. In this post we will give a brief overview of OpenStack, discuss distribution options and setup a OpenStack environment using Red Hat RDO. In part two of this series we will look at how to configure NetApp storage for OpenStack environments. In part three we will create storage services in OpenStack built on NetApp storage.

Overview

OpenStack is an interrelated set of software components that enable you to build, manage and provision private or public cloud computing platforms. OpenStack pools compute, storage and networking resources together and allows virtual machines or other instances to be deployed using those resources on the fly enabling horizontal scaling.

openstack-software-diagram-737x305

OpenStack Projects

Each OpenStack software component is considered its own project or program. It has its own development team, resources and project schedule.

There are two important OpenStack project types:

  • Core projects - official projects with full access to OpenStack brand and assets
  • Incubation projects - projects on an official track to become core projects with partial access to OpenStack branding and assets

The core projects for OpenStack are as follows:

  • Nova (compute)
  • Cinder (block storage)
  • Swift (object storage)
  • Glance (images service)
  • Keystone (identity and authentication)
  • Horizon (dashboard and UI)
  • Neutron (networking)
  • Ceilometer (telemetry and stats)
  • Heat (orchestration)
  • Trove (database services)
  • Sahara (data processing)
  • Ironic (bare metal)
  • Zaqar (queue services)
  • Barbican (key management services)
  • Designate (DNS services)
  • Oslo (common libraries)
  • TripleO (deployment)

Incubation projects such as Manilla which offers shared file services to OpenStack are very interesting to follow, however for deployments we should focus on the official core projects.

OpenStack Distributions

There is a lot of variation with OpenStack since it is a culmination of interrelated projects that form a cloud computing platform. You can certainly do your own custom deployment and just install the projects you need and define your own distribution however I would not recommend this, especially for production environments. The purpose of a distribution is to leverage the vendors expertise, wrap projects or dependencies together and give you a platform which can be supported. There are of course a plethora of distributions to choose from, even distribution methods. If you are interested in reviewing the distributions and support options visit the OpenStack marketplace. I would recommend choosing a distribution which supports the dependencies and someone who has a lot of experience as well as success in providing support for open source software.

In addition to the supported distributions there is a very interesting option from Red Hat called RDO. The concept is very similar to what Red Hat does in regards to Fedora actually. RDO allows you to run either Fedora, Red Hat Enterprise Linux (RHEL) or CentOS and combines those platforms with the most current release of OpenStack.

Deploying OpenStack using RDO

The first step to building a cloud computing platform is a proof of concept. Moving your infrastructure to a cloud computing platform changes everything, including your business processes. It is definitely not something that happens over night. RDO is the perfect thing to use to standup a OpenStack environment using production Linux with production OpenStack software releases. Red Hat does not offer commercial support for RDO so once a decision is made to deploy a production OpenStack environment you will most likely want to use a distribution from the OpenStack marketplace. One can deploy RDO with either a manual or automatic configuration, we will discuss both.

Steps for deploying RDO with manual configuration

  • Install Fedora 20 on bare metal
    • Note: I have tested Fedora 20 running on ESXi 5.5, just make sure you have virtual machine hardware version 10 (required for nested virtualization support)
  • Configure networking so that you have outbound access to the Internet
  • Update current packages
  • sudo yum update -y
  • Setup RDO repositories
  • sudo yum install -y https://rdo.fedorapeople.org/rdo-release.rpm
  • Install packstack installer
  • sudo yum install -y openstack-packstack
  • Run packstack to install OpenStack
  • packstack --allinone

OpenStack takes a while to install, usually around 30 minutes, once the installation is done you can login into the horizon dashboard http://<IP>/dashboard. If you come across any issues check the workarounds.

Steps for deploying RDO with automatic configuration of NetApp Cinder Backend

Automatic configuration allows us to generate an answers file that we can then customize. The advantage is that we are able to do some of the configuration during installation and in case we ever need to repeat the installation we have a blueprint. Using the answers file is the recommended way to install RDO. In this case we will configure Cinder to use NetApp storage backend through RDO packstack installer.

packstack --gen-answer-file=~/packstack-answer.txt

[code language="text"]

CONFIG_CINDER_BACKEND=netapp

CONFIG_CINDER_NETAPP_STORAGE_FAMILY=ontap_cluster

CONFIG_CINDER_NETAPP_STORAGE_PROTOCOL=nfs

CONFIG_CINDER_NETAPP_VSERVER=<storage virtual machine>

CONFIG_CINDER_NETAPP_HOSTNAME=<cluster mgmt vserver>

CONFIG_CINDER_NETAPP_SERVER_PORT=80

CONFIG_CINDER_NETAPP_LOGIN=<username>

CONFIG_CINDER_NETAPP_PASSWORD=<password>

CONFIG_CINDER_NETAPP_NFS_SHARES_CONFIG=/etc/cinder/cdotNfs_exports.conf

CONFIG_CINDER_NETAPP_COPYOFFLOAD_TOOL_PATH=/usr/bin/na_copyoffload_64

[/code]

Note: before proceeding with the next step you need to make sure you have defined NFS exports in the /etc/cinder/cdotNfs_exports.conf and configured NetApp storage. These steps are explained in part II and part III of this series.

packstack --answer-file=~/packstack-answer.txt

For more information check the detailed guide on using packstack to install Cinder with NetApp storage backends.

Authenticating to OpenStack environment

After installation completes two tenants are created: admin and demo. Keystone will create two files under /root which provide credentials for both tenants.

  • cat /root/keystonerc_admin

[code language="text"]

export OS_USERNAME=admin
export OS_TENANT_NAME=admin
export OS_PASSWORD=d96c4ad2c6aa55af
export OS_AUTH_URL=http://<IP>:5000/v2.0/
export PS1='[\u@\h \W(keystone_admin)]\$ '

[/code]

You can use the admin user and password in the keystone source file to authenticate to Horizon or the OpenStack CLI.

Create Private Network

By default RDO will create a public network but for creating instances we need to use a private network. Since we would eventually like to connect instances to NetApp storage this network should be an internal private network that can reach our NetApp Storage Virtual Machines (SVMs). In my environment I used the same network for instances and SVM.

  • Under project->network->networks select the "Create Network" option to start the wizard
  • Enter a name for network, I suggest private
  • Add CIDR for network

Screen Shot 2014-12-04 at 14.27.52

 

  • Add IP pool to be used for DHCP

Screen Shot 2014-12-04 at 14.34.59

Once our private network exists we are ready for instance creation

Launch Instance

At this point RDO has configured KVM as the hypervisor, installed OpenStack and configured OpenStack services. In order to verify things are working the best thing to do is to provision an instance. RDO configures one image called "cirros" and we can use this to test our installation.

  • In the Horizon dashboard under project->compute->instances select the "Launch Instance" button
  • Give instance a name, select "boot from image" as boot source and select the "cirros" image

Screen Shot 2014-12-04 at 14.23.01

  • Select the "networking" tab and add the private network

Screen Shot 2014-12-04 at 14.51.54

 

  • Launch the instance

The instance should start and be running shortly. This tests that the main core functionality between Nova (compute), Glance (images service) and Cinder (block storage). If things are working we are ready to configure NetApp storage for our OpenStack environment.

Troubleshooting

There are a few things I have run into and if you are having problems you should check them.

  • Disable "SE Linux", I have seen issues with "SE Linux" and OpenStack
    • setenforce 0
    • To make change permanent edit /etc/selinux/config
  • Check hostname resolution
    • make sure hostname can be resolved
    • if dns is not configured check /etc/hosts and /etc/sysconfig/network
  • Check networking make sure you can ping out to the private networks and management networks
  • If you are having network issues, temporarily shutdown firewall and iptables until you have things working and then turn them back on
  • Check to make sure your hardware supports virtualization
    • Intel: grep --color vmx /proc/cpuinfo
    • AMD: grep --color svm /proc/cpuinfo
  • Check the Nova, Glance and Cinder logs
    • /var/log/nova
    • /var/log/glance
    • /var/log/cinder

The next post in the series will take a look at how to configure the NetApp storage system for OpenStack environments.

(c) 2014 Keith Tenzer