Sep 072015
 
OpenStack Logo
OpenStack Logo

OpenStack is an open source cloud computing platform, provides solution for infrastructure as a service. OpenStack consists of multiple component put together for providing IaaS, components are listed below with its use.

Components:

COMPONENT NAME USE
Compute (Nova) Manages virtual machines
Object Storage (Swift) Manages storage across cloud
Block Storage (Cinder) Manages storage to compute instance
Networking (Neutron) Manages networking and ip addresses
Dashboard (Horizon) Provide graphical web interface to manage resources
Identity Service (Keystone) Manages authentication system across cloud
Image Service (Glance) Provides disk and server images (Template)
Telemetry (Ceilometer) Billing system
Orchestration (Heat) Provides orchestration function
Database (Trove) Database engine
Bare Metal Provisioning (Ironic) Provisions bare-metal system instead of virtual machine
Multiple Tenant Cloud Messaging (Zaqar) Cloud messaging service for Web developers
Elastic Map Reduce (Sahara) Provisions Hadoop clusters

Infrastructure Design:

As for as infrastructure is concern, we are going to use OpenStack networking (neutron), total of three Ubuntu instance will be used here, will act as Controller, Network and Compute Node.

OpenStack recommends below configurations for each node, with 64 bit host operating system.

• Controller Node: 1 processor, 2 GB memory, and 5 GB storage
• Network Node: 1 processor, 512 MB memory, and 5 GB storage
• Compute Node: 1 processor, 2 GB memory, and 10 GB storage

The following is the network configuration of each node.

ROLE NW CARD 1 NW CARD 2 NW CARD 3
CONTROLLER NODE 192.168.12.21 / 24, GW=192.168.12.2
(MANAGEMENT NETWORK)
NA NA
NETWORK NODE 192.168.12.22 / 24 GW=192.168.12.2
(MANAGEMENT NETWORK)
192.168.11.22 / 24
(TUNNEL NETWORK)
192.168.0.10 / 24 GW=192.168.0.1
(EXTERNAL NETWORK – DHCP ENABLED)
COMPUTE NODE 192.168.12.23 / 24 GW=192.168.12.2
(MANAGEMENT NETWORK)
192.168.11.23 / 24
(TUNNEL NETWORK)
NA

* Tunnel Network wont have a gateway ip in the configuration file, this network is used for internal communication between Network Node and Compute Node.

Add a host entry, so that nodes can use hostname to communicate instead of ip address. Place it on all nodes.

# nano ./etc/hosts

# controller
192.168.12.21 controller
# network
192.168.12.22 network
# compute
192.168.12.23 compute

Once you have done with configuring ip address, ping between nodes to verify the connectivity.

NTP Server:

Install and configure NTP on Controller Node so that all other nodes can do time sync.

# apt-get install ntp
# service ntp restart

Client NTP Configuration

Install NTP package on both Network and Compute node

# apt-get install ntp

Edit the below configuration file.

# nano /etc/ntp.conf

Remove other ntp servers from the file, just hash out the lines that are starts with word server. Add below entry to get our nodes sync with controller node.

server controller

Restart the NTP service.

# service ntp restart

OpenStack packages:

Install the Ubuntu Cloud archive keyring and repository.

# apt-get install ubuntu-cloud-keyring

# echo "deb http://ubuntu-cloud.archive.canonical.com/ubuntu" "trusty-updates/kilo main" > /etc/apt/sources.list.d/cloudarchive-kilo.list

Upgrade your system.

# apt-get update && apt-get dist-upgrade

Do the above two steps on all nodes.

Install MySQL database:

OpenStack components uses MySQL database to store information, so install MySQL on the Controller Node.

# apt-get install mariadb-server python-mysqldb

Installer invokes a command line tui to set MySQL root password.

# nano /etc/mysql/conf.d/mysqld_openstack.cnf

Add the following values and ensure bind-address value is set to management ip address of controller node to allow other node can access MySQL instance.

[mysqld]
## Set to Management IP
bind-address = 192.168.12.21
default-storage-engine = innodb
innodb_file_per_table
collation-server = utf8_general_ci
init-connect = 'SET NAMES utf8'
character-set-server = utf8

Restart the MySQL.

# service mysql restart

Install RabbitMQ:

RabbitMQ is used by OpenStack to coordinate operations and status information among services. Install it on controller node.

# apt-get install rabbitmq-server

Add openstack user.

# rabbitmqctl add_user openstack password

* Replace password with your own password.

Allow openstack user to read, write and configuration access.

# rabbitmqctl set_permissions openstack ".*" ".*" ".*"

Next is to configure KeyStone (OpenStack identity) service.