
The development and production environments
One of the requirements of deploying OpenStack in a production environment is to continuously test and improve the setup. This means we need to have a test environment that closely resembles the deployment architecture of the production environment and yet is not too complex to be easily implemented by inpidual developers. OpenStack Ansible provides a developer mode with All-in-One (AIO) node installation. We will look into the details of setting up a development environment later in this chapter.
The production environment, on the other hand, needs to be very robust, provide redundancy of services and service isolation, and be extensible. OSA's recommended architecture groups the target hosts into the following:
- Infrastructure and control plane host
- Logging host
- Compute hosts
- Optional storage hosts
The recommended architecture recommends at least three infrastructure and control plane hosts for providing service redundancy. We will also need a deployment host that will run the OSA playbooks.
The infrastructure hosts are installed with common services such as the following:
- Database server with MySQL Galera cluster
- RabbitMQ messaging server
- Memcached
- Repository servers
They also host the OpenStack control plane services, such as the following:
- Identity server (Keystone)
- Image server (Glance)
- Compute management service (Nova)
- Networking (Neutron)
- Other API services such as Heat, Ceilometer, and so on
The logging server hosts a centralized log server, such as rsyslog, and a log analyzer using Logstash and Elasticsearch. The compute hosts run the Nova compute service, along with the networking and logging agents:

For the production environment, separate storage hosts that run the Cinder scheduler and the Cinder volume services must provide storage services.