Scale Undercloud with a Minion

https://blueprints.launchpad.net/tripleo/undercloud-minion

In order to improve our scale, we have identified heat-engine and possibly ironic-conductor as services that we can add on to an existing undercloud deployment. Adding heat-engine allows for additional processing capacity when creating and updating stacks for deployment. By adding a new light weight minion node, we can scale the Heat capacity horizontally.

Additionally since these nodes could be more remote, we could add an ironic-conductor instance to be able to manage hosts in a remote region while still having a central undercloud for the main management.

Problem Description

Currently we use a single heat-engine on the undercloud for the deployment. According to the Heat folks, it can be beneficial for processing to have additional heat-engine instances for scale. The recommended scaling is out rather than up. Additionally by being able to deploy a secondary host, we can increase our capacity for the undercloud when additional scale capacity is required.

Proposed Change

Overview

We are proposing to add a new undercloud “minion” configuration that can be used by operators to configure additional instances of heat-engine and ironic-conductor when they need more processing capacity. We would also allow the operator to disable heat-engine from the main undercloud to reduce the resource usage of the undercloud. By removing the heat-engine from the regular undercloud, the operator could possibly avoid timeouts on other services like keystone and neutron that can occur when the system is under load.

Alternatives

An alternative would be to make the undercloud deployable in a traditional HA capacity where we share the services across multiple nodes. This would increase the overall capacity but adds additional complexity to the undercloud. Additionally this does not let us target specific services that are resource heavy.

Security Impact

The new node would need to have access to the the main undercloud’s keystone, database and messaging services.

Upgrade Impact

The new minion role would need to be able to be upgraded by the user.

Other End User Impact

None.

Performance Impact

  • This additional minion role may improve heat processing due to the additional resource capacity being provided.

  • Locating an ironic-conductor closer to the nodes being managed can improve performance by being closer to the systems (less latency, etc).

Other Deployer Impact

Additional undercloud role and a new undercloud-minion.conf configuration file will be created. Additionally a new option may be added to the undercloud.conf to manage heat-engine instalation.

Developer Impact

None.

Implementation

Assignee(s)

Primary assignee:

mwhahaha

Other contributors:

slagle EmilienM

Work Items

Work items or tasks – break the feature up into the things that need to be done to implement it. Those parts might end up being done by different people, but we’re mostly trying to understand the timeline for implementation.

python-tripleoclient

  • New ‘openstack undercloud minion deploy’ command for installation

  • New ‘openstack undercloud minion upgrade’ command for upgrades

  • New configuration file ‘undercloud-minion.conf’ to drive the installation and upgrades.

  • New configuration option in ‘undercloud.conf’ to provide ability to disable the heat-engine on the undercloud.

tripleo-heat-templates

  • New ‘UndercloudMinion’ role file

  • New environment file for the undercloud minion deployment

  • Additional environment files to enable or disable heat-engine and ironic-conductor.

Dependencies

None.

Testing

We would add a new CI job to test the deployment of the minion node. This job will likely be a new multinode job.

Documentation Impact

We will need to document the usage of the undercloud minion installation and the specific use cases where this can be beneficial.

References

See the notes from the Train PTG around Scaling.