Installation requirements and recommendations
This section describes software requirements, hardware recommendations, and
network recommendations for running OpenStack in a production environment.
Ensure that all hosts within an OpenStack-Ansible (OSA) environment meet the
following minimum requirements:
- Ubuntu 16.04 LTS (Xenial Xerus)
- Linux kernel version
3.13.0-34-generic or later is required.
- CentOS (support is experimental)
- Centos 7, fully updated.
- Linux kernel verison
3.10.0 or later.
- Secure Shell (SSH) client and server that support public key
- Network Time Protocol (NTP) client for time synchronization (such as
- Python 2.7.*x*
- en_US.UTF-8 as the locale
- Compute hosts should have multicore processors with hardware-assisted
virtualization extensions. These extensions provide a
significant performance boost and improve security in virtualized
- Infrastructure (control plane) hosts should have multicore processors for
best performance. Some services, such as MySQL, benefit from
additional CPU cores and other technologies, such as Hyper-threading.
Different hosts have different disk space requirements based on the
services running on each host:
- Deployment hosts
- Ten GB of disk space is sufficient for holding the OpenStack-Ansible
repository content and additional required software.
- Compute hosts
- Disk space requirements depend on the total number of instances
running on each host and the amount of disk space allocated to each instance.
Compute hosts must have a minimum of 1 TB of disk space available. Consider
disks that provide higher I/O throughput with lower latency, such as SSD
drives in a RAID array.
- Storage hosts
- Hosts running the Block Storage (cinder) service often consume the most disk
space in OpenStack environments. Storage hosts must have a minimum of 1 TB
of disk space. As with Compute hosts, choose disks that provide the highest
I/O throughput with the lowest latency.
- Infrastructure (control plane) hosts
- The OpenStack control plane contains storage-intensive services, such as the
Image service (glance), and MariaDB. These hosts must have a minimum of
100 GB of disk space.
- Logging hosts
- An OpenStack-Ansible deployment generates a significant amount of log
information. Logs come from a variety of sources, including services running
in containers, the containers themselves, and the physical hosts. Logging
hosts need sufficient disk space to hold live and rotated (historical) log
files. In addition, the storage performance must be able to keep pace with
the log traffic coming from various hosts and containers within the OpenStack
environment. Reserve a minimum of 50 GB of disk space for storing logs on
the logging hosts.
Hosts that provide Block Storage volumes must have Logical Volume
Manager (LVM) support. Ensure that hosts have a
group that OpenStack-Ansible can configure for use with Block Storage.
Each infrastructure (control plane) host runs services inside LXC containers.
The container file systems are deployed by default on the root file system of
each control plane host. You have the option to deploy those container file
systems into logical volumes by creating a volume group called lxc.
OpenStack-Ansible creates a 5 GB logical volume for the file system of each
container running on the host.
You can deploy an OpenStack environment with only one physical
network interface. This works for small environments, but it can cause
problems when your environment grows.
For the best performance, reliability, and scalability in a production
environment, consider a network configuration that contains
the following features:
- Bonded network interfaces, which increase performance, reliability, or both
(depending on the bonding architecture)
- VLAN offloading, which increases performance by adding and removing VLAN tags
in hardware, rather than in the server’s main CPU
- Gigabit or 10 Gigabit Ethernet, which supports higher network speeds and can
also improve storage performance when using the Block Storage service
- Jumbo frames, which increase network performance by allowing more data to
be sent in each packet