Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

AWS peer discovery: add multi-hostname path support #14705

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
BenAtAmazon wants to merge 2 commits into rabbitmq:main
base: main
Choose a base branch
Loading
from BenAtAmazon:aws/add-peer-discovery-multi-hostname-path

Conversation

@BenAtAmazon
Copy link
Contributor

@BenAtAmazon BenAtAmazon commented Oct 7, 2025
edited
Loading

Proposed Changes

This PR adds support for multiple hostname paths in the AWS peer discovery plugin to enable zero-downtime rolling upgrades during hostname migration scenarios. The implementation allows RabbitMQ nodes to discover peers using multiple hostname paths, ensuring cluster formation succeeds even when nodes are configured with different hostname paths during rolling upgrades.

Backward Compatibility

Existing single hostname_path configuration continues to work (unchanged).
We fallback to single path behavior when no numbered paths are configured.

Configuration Examples

Multiple paths for zero-downtime migration
cluster_formation.aws.hostname_path.1 = networkInterfaceSet,2,privateIpAddressesSet,1,privateDnsName
cluster_formation.aws.hostname_path.2 = privateDnsName
cluster_formation.aws.hostname_path.3 = networkInterfaceSet,1,privateIpAddressesSet,2,privateIpAddress

Note: This follows the existing pattern we have for classic_config:

cluster_formation.classic_config.nodes.1 = rabbit@<hostnameA>
cluster_formation.classic_config.nodes.2 = rabbit@<hostnameB>
cluster_formation.classic_config.nodes.3 = rabbit@<hostnameC>
Single path (backward compatible)
cluster_formation.aws.hostname_path = privateDnsName

Types of Changes

What types of changes does your code introduce to this project?
Put an x in the boxes that apply

  • Bug fix (non-breaking change which fixes issue #NNNN)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause an observable behavior change in existing systems)
  • Documentation improvements (corrections, new content, etc)
  • Cosmetic change (whitespace, formatting, etc)
  • Build system and/or CI

Checklist

Put an x in the boxes that apply.
You can also fill these out after creating the PR.
This is simply a reminder of what we are going to look for before merging your code.

  • Mandatory: I (or my employer/client) have have signed the CA (see https://github.com/rabbitmq/cla)
  • I have read the CONTRIBUTING.md document
  • I have added tests that prove my fix is effective or that my feature works
  • All tests pass locally with my changes
  • If relevant, I have added necessary documentation to https://github.com/rabbitmq/rabbitmq-website
  • If relevant, I have added this change to the first version(s) in release-notes that I expect to introduce it

Copy link
Collaborator

@lukebakken lukebakken left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please be aware that the genie is extremely lazy with whitespace and will gladly add space characters on blank lines, at the end of lines, etc.

BenAtAmazon reacted with thumbs up emoji
@BenAtAmazon BenAtAmazon force-pushed the aws/add-peer-discovery-multi-hostname-path branch from ca6b404 to 175a956 Compare October 10, 2025 03:06
@BenAtAmazon BenAtAmazon force-pushed the aws/add-peer-discovery-multi-hostname-path branch 2 times, most recently from b75758a to 7cdb505 Compare October 15, 2025 19:53
@lukebakken lukebakken force-pushed the aws/add-peer-discovery-multi-hostname-path branch from 7cdb505 to a384336 Compare October 22, 2025 14:16
Adds support for multiple hostname paths in the AWS peer discovery plugin to enable zero-downtime rolling upgrades during hostname migration scenarios.
The implementation allows RabbitMQ nodes to discover peers using multiple hostname paths, ensuring cluster formation succeeds even when nodes are configured with different hostname paths during rolling upgrades.
Example usage:
cluster_formation.aws.hostname_path.1 = privateDnsName
cluster_formation.aws.hostname_path.2 = privateIpAddress
Move tests that need per-test init and end to dedicated file.
@lukebakken lukebakken force-pushed the aws/add-peer-discovery-multi-hostname-path branch from b67ffb1 to c0c79bf Compare October 22, 2025 15:18
Copy link
Collaborator

@lukebakken lukebakken left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍 thanks!

@lukebakken lukebakken self-assigned this Oct 22, 2025
Copy link
Collaborator

@the-mikedavis the-mikedavis left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks good to me, I just have a minor suggestion about being more assertive in the schema for this config

...covery_aws.schema
Co-authored-by: Michael Davis <mcarsondavis@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

@lukebakken lukebakken lukebakken approved these changes

@the-mikedavis the-mikedavis the-mikedavis approved these changes

@SimonUnge SimonUnge Awaiting requested review from SimonUnge

Labels

None yet

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

AltStyle によって変換されたページ (->オリジナル) /