Decompose the controller node services

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:

  1. Log in to the Fuel Master node console.

  2. 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
    
  3. 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
    
  4. Upload the updated controller role:

    fuel role --release 2 --role controller --update --file controller.yaml
    
  5. Create a new custom role for the service you need to remove from the controller node:

    1. 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
      
    2. In the Fuel CLI, create the new role based on the database.yaml configuration file:

      fuel role --release 2 --create --file database.yaml
      
  6. Assign the newly created role using the Fuel web UI or CLI as described in Change the role of a node.

  7. To apply the changes, deploy your OpenStack environment.

Creative Commons Attribution 3.0 License

Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.

Contents