Skip to content

[RFE] Multiple Ironic instances per pod #263

@dtantsur

Description

@dtantsur

The HA architecture already allows running 3 (typically) Ironic instances per cluster. To achieve an even bigger scale, an operator needs to increase the number of control plane nodes. This is because of the Ironic's dependency on host networking and fixed ports.

However, nothing is preventing us from having several Ironic instances per each pod with httpd and dnsmasq. So, imaging we have:

spec:
  extraConductors:
    count: 2

This will produce Ironic pods with httpd, dnsmasq (optionally) and 3 Ironic instances connected via the RPC bus and using the same database. A remote database will be required (not SQLite).

API endpoints

The main instance will still serve it's API on http(s)://provisioning.ip:6385/v1. The secondary instances will be serving on http(s)://provisioning.ip:6385/instance-1/v1 and http(s)://provisioning.ip:6385/instance-2/v1. This is important to avoid reserving even more ports on control plane nodes.

The /instance-*/ part will be handled by the reverse proxy (httpd). Thus, we'll need to enable using a reverse proxy even without HTTPS. Since all instances will have different service_endpoint, they won't be able to share the same /conf volume.

RPC endpoints

Each conductor will use its own RPC port, starting with the default one. In this example, there will be conductors provisioning-ip (on the default port 8089), provisioning-ip:8090 and provisioning-ip:8091.

/kind feature

Metadata

Metadata

Assignees

No one assigned

    Labels

    help wantedDenotes an issue that needs help from a contributor. Must meet "help wanted" guidelines.kind/featureCategorizes issue or PR as related to a new feature.triage/acceptedIndicates an issue is ready to be actively worked on.

    Projects

    Status

    Backlog

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions