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.
|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)|
|Orchestration||(Heat)||Provides orchestration function|
|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|
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
|NETWORK NODE||192.168.12.22 / 24 GW=192.168.12.2
|192.168.11.22 / 24
|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
|192.168.11.23 / 24
* 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.
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.
Restart the NTP service.
# service ntp restart
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
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.