Learn how to – Install OpenStack on Rocky Linux 8 – Setup Pre-reqs (Step 1).
OpenStack is a very powerful, and widely adopted solution used to deploy infrastructure resources within the shortest time possible similar to commercially available cloud environments. The software production is managed by Openstack foundation, with the support of thousands of community developers and users. Openstack can control large pools of networking, compute, and storage resources distributed across multiple systems in an efficient manner. OpenStack remains an essential technology to many organisations since applications still need an infrastructure to run on.
This article will be our first series on the installation of OpenStack on Rocky Linux 8 system. The same process should work on AlmaLinux 8 systems, and any other RHEL 8 based system. In this first part we shall install and configure MariaDB database server, NTP server, RabbitMQ and Memcached.
After completing the steps in this guide, open the link given at the end to access the content needed for the next actions. If you prefer an easier method for an all-in-one setup check out our RDP Packstack guide:
Step 1: Update System
Put SELinux in Permissive mode if this is allowed in your Infrastructure
sudo setenforce 0
sudo sed -i 's/^SELINUX=.*/SELINUX=permissive/g' /etc/selinux/config
Ensure the system has been updated and is working fine.
sudo dnf -y update
Install basic management utilities
sudo dnf -y install git tmux vim wget curl bash-completion
After system updated let’s reboot it.
sudo reboot
Step 2: Install MariaDB database server
We’ll install the latest stable release of MariaDB database server using the steps shared below.
Download installer script to your system.
curl -LsS -O https://downloads.mariadb.com/MariaDB/mariadb_repo_setup
Execute the script after download to configure MariaDB repository.
sudo bash mariadb_repo_setup
Disable and reset MariaDB AppStream module
sudo dnf -qy module disable mariadb
sudo dnf module reset mariadb -y
Execute the following commands to install MariaDB server and client packages.
sudo dnf install vim MariaDB-server MariaDB-client MariaDB-backup -y
Increase database maximum connections to accommodate OpenStack requirements.
sudo tee /etc/my.cnf.d/openstack.cnf<<EOF
[mysqld]
max_connections=600
EOF
Start and enable mariadb database service
sudo systemctl enable --now mariadb
Confirm status is running
$ systemctl status mariadb
● mariadb.service - MariaDB 10.9.3 database server
Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled)
Drop-In: /etc/systemd/system/mariadb.service.d
└─migrated-from-my.cnf-settings.conf
Active: active (running) since Wed 2022-10-19 22:50:46 EAT; 17s ago
Docs: man:mariadbd(8)
https://mariadb.com/kb/en/library/systemd/
Process: 9131 ExecStartPost=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS)
Process: 9107 ExecStartPre=/bin/sh -c [ ! -e /usr/bin/galera_recovery ] && VAR= || VAR=`cd /usr/bin/..; /usr/bin/galera_recovery`; [ $? -eq 0 ] && systemctl set-environment _WSREP_START_POSIT>
Process: 9105 ExecStartPre=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS)
Main PID: 9117 (mariadbd)
Status: "Taking your SQL requests now..."
Tasks: 14 (limit: 408287)
Memory: 82.9M
CGroup: /system.slice/mariadb.service
└─9117 /usr/sbin/mariadbd
Oct 19 22:50:46 osp01.home.cloudlabske.io mariadbd[9117]: 2022-10-19 22:50:46 0 [Note] InnoDB: File './ibtmp1' size is now 12.000MiB.
Oct 19 22:50:46 osp01.home.cloudlabske.io mariadbd[9117]: 2022-10-19 22:50:46 0 [Note] InnoDB: log sequence number 46590; transaction id 14
Oct 19 22:50:46 osp01.home.cloudlabske.io mariadbd[9117]: 2022-10-19 22:50:46 0 [Note] Plugin 'FEEDBACK' is disabled.
Oct 19 22:50:46 osp01.home.cloudlabske.io mariadbd[9117]: 2022-10-19 22:50:46 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool
Oct 19 22:50:46 osp01.home.cloudlabske.io mariadbd[9117]: 2022-10-19 22:50:46 0 [Note] Server socket created on IP: '0.0.0.0'.
Oct 19 22:50:46 osp01.home.cloudlabske.io mariadbd[9117]: 2022-10-19 22:50:46 0 [Note] Server socket created on IP: '::'.
Oct 19 22:50:46 osp01.home.cloudlabske.io mariadbd[9117]: 2022-10-19 22:50:46 0 [Note] InnoDB: Buffer pool(s) load completed at 221019 22:50:46
Oct 19 22:50:46 osp01.home.cloudlabske.io mariadbd[9117]: 2022-10-19 22:50:46 0 [Note] /usr/sbin/mariadbd: ready for connections.
Oct 19 22:50:46 osp01.home.cloudlabske.io mariadbd[9117]: Version: '10.9.3-MariaDB' socket: '/var/lib/mysql/mysql.sock' port: 3306 MariaDB Server
Oct 19 22:50:46 osp01.home.cloudlabske.io systemd[1]: Started MariaDB 10.9.3 database server.
Secure your database server
$ sudo mariadb-secure-installation
Switch to unix_socket authentication [Y/n] n
Change the root password? [Y/n] y
Remove anonymous users? [Y/n] y
Disallow root login remotely? [Y/n] y
Remove test database and access to it? [Y/n] y
Reload privilege tables now? [Y/n] y
If this will be OpenStack Controller and other server connect to this database then allow the port in the firewall.
sudo firewall-cmd --add-service=mysql --permanent
sudo firewall-cmd --reload --permanent
Step 3: Install and Configure NTP Server
Set your server hostname correctly
sudo hostnamectl set-hostname osp01.home.cloudlabske.io
Set correct timezone
sudo timedatectl set-timezone Africa/Nairobi
Ensure chrony package is installed
sudo dnf -y install chrony
Enable chronyd service
sudo systemctl enable --now chronyd
Confirm service status using the commands:
systemctl status chronyd.service
Next do initial time sync to confirm this works.
$ sudo chronyc sources
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^- time.cloudflare.com 3 6 17 48 +225us[ +225us] +/- 77ms
^- 41.175.51.165 2 6 17 50 -3294us[-3005us] +/- 67ms
^- time.cloudflare.com 3 6 17 50 +345us[ +663us] +/- 77ms
^* ntp0.icolo.io 2 6 17 50 +48us[ +385us] +/- 11ms
Enable network time synchronization using hostnamectl
timedatectl set-ntp yes
List your settings
$ timedatectl
Local time: Wed 2022-10-19 23:00:14 EAT
Universal time: Wed 2022-10-19 20:00:14 UTC
RTC time: Wed 2022-10-19 20:00:14
Time zone: Africa/Nairobi (EAT, +0300)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
Step 4: Enable required repositories
As of the time this article is updated, the latest OpenStack release is Yoga. If you need more details on this OpenStack release refer to its official documentation.
Install Openstack repository on Rocky server by running the commands shared below.
sudo dnf -y install https://repos.fedorapeople.org/repos/openstack/openstack-yoga/rdo-release-yoga-1.el8.noarch.rpm
Enable PowerTools repository as well.
sudo dnf config-manager --set-enabled powertools
Confirm the repository has been added and usable on the system.
$ sudo dnf repolist
repo id repo name
advanced-virtualization CentOS-8 - Advanced Virtualization
appstream Rocky Linux 8 - AppStream
baseos Rocky Linux 8 - BaseOS
centos-nfv-openvswitch CentOS-8 - NFV OpenvSwitch
centos-rabbitmq-38 CentOS-8 - RabbitMQ 38
ceph-pacific CentOS-8 - Ceph Pacific
extras Rocky Linux 8 - Extras
mariadb-main MariaDB Server
mariadb-maxscale MariaDB MaxScale
mariadb-tools MariaDB Tools
openstack-yoga OpenStack Yoga Repository
powertools Rocky Linux 8 - PowerTools
Check if there are any updated to be applied.
sudo dnf update -y
Step 5: Install RabbitMQ, Memcached, and Nginx
Install RabbitMQ and Memcached packages on the system.
sudo dnf install rabbitmq-server nginx-mod-stream memcached
Accept to proceed with package installation.
Transaction Summary
======================================================================================================================================================================================================
Install 115 Packages
Total download size: 70 M
Installed size: 153 M
Is this ok [y/N]: y
Update Memcached Listen address
sudo sed -i 's/127.0.0.1,::1/0.0.0.0,::/g' /etc/sysconfig/memcached
Backup default Nginx configuration file.
sudo mv /etc/nginx/nginx.conf /etc/nginx/nginx.conf.orig
Create a new configuration file using the contents provided here.
$ sudo vim /etc/nginx/nginx.conf
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
include /usr/share/nginx/modules/*.conf;
events {
worker_connections 1024;
}
http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;
include /etc/nginx/conf.d/*.conf;
}
Enable and start RabbitMQ, Memcached, and Nginx services
sudo systemctl enable --now rabbitmq-server memcached nginx
Check above services current status:
systemctl status rabbitmq-server memcached nginx
Allow memcache and rabbitmq services access in your firewalld. This should not be performed in Public IP setup, use firewalld rich rules for this.
sudo firewall-cmd --add-service=memcache --permanent
sudo firewall-cmd --add-port=5672/tcp --permanent
sudo firewall-cmd --reload
Step 6: Add OpenStack Rabbitmq user
Add an openstack user on RabbitMQ. We’re adding a user called openstack with the password OpenStackMQPassw0rd
sudo rabbitmqctl add_user openstack OpenStackMQPassw0rd
Grant privileges to the user created
sudo rabbitmqctl set_permissions openstack ".*" ".*" ".*"
This marks the end of our first article on OpenStack installation and configurations on Rocky Linux 8 servers. Proceed to next part using the link below.
Leave a Reply
You must be logged in to post a comment.