You can run different services on dedicated OpenStack nodes depending on needs of your OpenStack environment. Using the Fuel CLI you can move controller node services out of the existing controller role into custom roles and assign these roles to dedicated nodes. This capability may be helpful while managing highly-loaded OpenStack environments.
The services available for decomposition are:
To decompose the controller node services:
Log in to the Fuel Master node console.
Download the controller’s role configuration:
fuel role --release 2 --role controller --file controller.yaml
You will get the configuration file with the following content:
name: controller
meta:
conflicts:
- compute
description: >
The Controller initiates orchestration activities and provides an
external API. Other components like Glance (image storage), Keystone
(identity management), Horizon (OpenStack dashboard) and Nova-Scheduler
are installed on the controller as well.
group: base
has_primary: true
limits:
min: 1
overrides:
- condition: settings:neutron_advanced_configuration.neutron_l3_ha.value == true
message: >
Neutron L3 HA requires at least 2 Controller nodes to function
properly.
min: 2
recommended: 3
name: Controller
public_for_dvr_required: true
public_ip_required: true
tags:
- controller
- rabbitmq
- database
- keystone
- neutron
update_required:
- compute
- cinder
weight: 10
volumes_roles_mapping:
- allocate_size: min
id: os
- allocate_size: min
id: logs
- allocate_size: all
id: image
- allocate_size: min
id: mysql
- allocate_size: min
id: horizon
In controller.yaml
, remove the tag from the tags
section that
corresponds to the service you need to move to a dedicated node and save
the changes.
For example, remove the database
tag and save the changes. Now, your
controller role configuration file does not include the database
tag
in the tags
section, and the mysql
record in
the volumes_roles_mapping
section:
name: controller
meta:
conflicts:
- compute
description: >
The Controller initiates orchestration activities and provides an
external API. Other components like Glance (image storage), Keystone
(identity management), Horizon (OpenStack dashboard) and Nova-Scheduler
are installed on the controller as well.
group: base
has_primary: true
limits:
min: 1
overrides:
- condition: settings:neutron_advanced_configuration.neutron_l3_ha.value == true
message: >
Neutron L3 HA requires at least 2 Controller nodes to function
properly.
min: 2
recommended: 3
name: Controller
public_for_dvr_required: true
public_ip_required: true
tags:
- controller
- rabbitmq
- keystone
- neutron
update_required:
- compute
- cinder
weight: 10
volumes_roles_mapping:
- allocate_size: min
id: os
- allocate_size: min
id: logs
- allocate_size: all
id: image
- allocate_size: min
id: horizon
Upload the updated controller role:
fuel role --release 2 --role controller --update --file controller.yaml
Create a new custom role for the service you need to remove from the controller node:
For example, create and edit database.yaml
specifying the removed
entries from the controller role configuration:
name: database
meta:
name: Database
description: >
Separated DB from controller.
group: base
conflicts:
- controller
- compute
has_primary: true
limits:
min: 1
update_required:
- controller
- database
tags:
- database
weight: 100
volumes_roles_mapping:
- allocate_size: min
id: os
- allocate_size: min
id: mysql
In the Fuel CLI, create the new role based on the database.yaml
configuration file:
fuel role --release 2 --create --file database.yaml
Assign the newly created role using the Fuel web UI or CLI as described in Change the role of a node.
To apply the changes, deploy your OpenStack environment.
See also
Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.