5.3 KiB
Decompose the controller node services
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:
- Neutron (including L3 agents, LBaaS, and others)
- Keystone
- MySQL DB
- RabbitMQ
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 thetags
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 thedatabase
tag in thetags
section, and themysql
record in thevolumes_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-roles
.To apply the changes, deploy your OpenStack environment.
cli-roles