Cloud Computing Fundamentals
Cloud computing delivers on-demand resources via network access with pay-as-you-go pricing. Deplyoment models include public, private, and hybrid clouds.
Pre-Installation Requirements
For production environments:
- Synchronize system clocks across all nodes
- Confgiure hostnames in advance
- Disable firewalls
Repository Configuration
yum install centos-release-openstack-newton -y
yum install python-openstackclient openstack-selinux -y
Controller Node Setup
Database Installation (MariaDB)
yum install mariadb mariadb-server python2-PyMySQL -y
Configure /etc/my.cnf.d/openstack.cnf:
[mysqld]
bind-address = 192.168.1.102
default-storage-engine = innodb
innodb_file_per_table
max_connections = 4096
collation-server = utf8_general_ci
character-set-server = utf8
systemctl enable mariadb.service
systemctl start mariadb.service
mysql_secure_installation
Message Queue (RabbitMQ)
yum install rabbitmq-server -y
systemctl enable rabbitmq-server.service
systemctl start rabbitmq-server.service
rabbitmqctl add_user openstack openstack
rabbitmqctl set_permissions openstack ".*" ".*" ".*"
rabbitmq-plugins enable rabbitmq_management
Core Services Installation
yum install openstack-keystone httpd mod_wsgi \
openstack-glance \
openstack-nova-api openstack-nova-conductor \
openstack-nova-console openstack-nova-novncproxy \
openstack-nova-scheduler \
openstack-neutron openstack-neutron-ml2 \
openstack-neutron-linuxbridge ebtables -y
Database Configuration
CREATE DATABASE keystone;
CREATE DATABASE glance;
CREATE DATABASE nova;
CREATE DATABASE neutron;
CREATE DATABASE cinder;
GRANT ALL ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'keystone_pass';
GRANT ALL ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'keystone_pass';
GRANT ALL ON glance.* TO 'glance'@'localhost' IDENTIFIED BY 'glance_pass';
GRANT ALL ON glance.* TO 'glance'@'%' IDENTIFIED BY 'glance_pass';
GRANT ALL ON nova.* TO 'nova'@'localhost' IDENTIFIED BY 'nova_pass';
GRANT ALL ON nova.* TO 'nova'@'%' IDENTIFIED BY 'nova_pass';
GRANT ALL ON neutron.* TO 'neutron'@'localhost' IDENTIFIED BY 'neutron_pass';
GRANT ALL ON neutron.* TO 'neutron'@'%' IDENTIFIED BY 'neutron_pass';
GRANT ALL ON cinder.* TO 'cinder'@'localhost' IDENTIFIED BY 'cinder_pass';
GRANT ALL ON cinder.* TO 'cinder'@'%' IDENTIFIED BY 'cinder_pass';
Keystone Configuration
vim /etc/keystone/keystone.conf
Update database connection:
[database]
connection = mysql+pymysql://keystone:keystone_pass@192.168.1.102/keystone