Skip to content

Support N MongoDB shards #2219

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
wants to merge 19 commits into
base: development/2.12
Choose a base branch
from

Conversation

williamlardier
Copy link
Contributor

Here, we only support deployment of multiple shards. Upgrades is managed by upper layers for now.

Issue: ZENKO-4641

@bert-e
Copy link
Contributor

bert-e commented May 6, 2025

Hello williamlardier,

My role is to assist you with the merge of this
pull request. Please type @bert-e help to get information
on this process, or consult the user documentation.

Available options
name description privileged authored
/after_pull_request Wait for the given pull request id to be merged before continuing with the current one.
/bypass_author_approval Bypass the pull request author's approval
/bypass_build_status Bypass the build and test status
/bypass_commit_size Bypass the check on the size of the changeset TBA
/bypass_incompatible_branch Bypass the check on the source branch prefix
/bypass_jira_check Bypass the Jira issue check
/bypass_peer_approval Bypass the pull request peers' approval
/bypass_leader_approval Bypass the pull request leaders' approval
/approve Instruct Bert-E that the author has approved the pull request. ✍️
/create_pull_requests Allow the creation of integration pull requests.
/create_integration_branches Allow the creation of integration branches.
/no_octopus Prevent Wall-E from doing any octopus merge and use multiple consecutive merge instead
/unanimity Change review acceptance criteria from one reviewer at least to all reviewers
/wait Instruct Bert-E not to run until further notice.
Available commands
name description privileged
/help Print Bert-E's manual in the pull request.
/status Print Bert-E's current status in the pull request TBA
/clear Remove all comments from Bert-E from the history TBA
/retry Re-start a fresh build TBA
/build Re-start a fresh build TBA
/force_reset Delete integration branches & pull requests, and restart merge process from the beginning.
/reset Try to remove integration branches unless there are commits on them which do not appear on the source branch.

Status report is not available.

@williamlardier williamlardier changed the base branch from development/2.11 to development/2.12 May 6, 2025 11:05
@scality scality deleted a comment from bert-e May 6, 2025
@scality scality deleted a comment from bert-e May 6, 2025
@bert-e
Copy link
Contributor

bert-e commented May 6, 2025

Waiting for approval

The following approvals are needed before I can proceed with the merge:

  • the author

  • 2 peers

@williamlardier williamlardier force-pushed the feature/ZENKO-4641-v2 branch 5 times, most recently from 365e3d4 to b1d1cdc Compare May 19, 2025 10:08
@williamlardier williamlardier force-pushed the feature/ZENKO-4641-v2 branch 3 times, most recently from eaac5b7 to 87c3664 Compare May 23, 2025 07:56
We add support for multiple shards.
The Kustomization file is thus removed, and we instead generate it
based on the current configuration.

Issue: ZENKO-4641
Added to Zenko as an annotation, but now compatible with multiple
shards.

Issue: ZENKO-4641
This implementation tries to use a single MongoDB mongod process
per instance so that we maximize RAM usage and performances.

Issue: ZENKO-4641
Selectors should now be updated to consider the current shard

Issue: ZENKO-4641
- Mutualize http tests in a single CI run.
- All deployments must now be sharded, hence testing separately
  http endpoints is not enough.
- We also mutualize the runner to enable HTTPs after the initial
  deployments. This reduces costs, and ensure basic set of tests
  are executed when using 2 shards.

Issue: ZENKO-4641
We useed to re-run Vault functional tests in Zenko.
This is not needed, as covered by CTST test suite now.

Issue: ZENKO-4641
- We want to support one P-S-S topology ever 3 servers.
- With 6+ nodes support added, we now need to ensure the replicas
  of configsvr & shardsvr are not exceeding 3.

Issue: ZENKO-4641
Will be useful for CI testing only

Issue: ZENKO-4641
The previous alert was not properly accounting for multiple
shards, leading to alerts with multi shards even if we have
a nominal state.

Issue: ZENKO-4641
@williamlardier williamlardier force-pushed the feature/ZENKO-4641-v2 branch 5 times, most recently from 0db4b65 to d3be7fc Compare May 26, 2025 14:04
@williamlardier williamlardier force-pushed the feature/ZENKO-4641-v2 branch from d3be7fc to d3f8a9d Compare May 26, 2025 14:25
@@ -137,24 +191,6 @@ build_solution_base_manifests() {
sed -i "s/MONGODB_SHARDSERVER_RAM_LIMIT/${MONGODB_SHARDSERVER_RAM_LIMIT}/g" $DIR/_build/root/deploy/*
sed -i "s/MONGODB_SHARDSERVER_RAM_REQUEST/${MONGODB_SHARDSERVER_RAM_REQUEST}/g" $DIR/_build/root/deploy/*
sed -i "s/MONGODB_MONGOS_RAM_REQUEST/${MONGODB_MONGOS_RAM_REQUEST}/g" $DIR/_build/root/deploy/*

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Note for reviewers: this was removed because we had this logic twice in the function, maybe a rebase issue at some point. See above.

# MongoDB selectors are not supported in the CI.
# So we remove them and let the provisioner handle the
# volume provisioning.
patch_mongodb_selector() {
Copy link
Contributor

Choose a reason for hiding this comment

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

this does the same as the original kustomize, with a few differences:

  • handles multiple shards seamlessly (as was your goal i guess)
  • does not overwrite/set the storageclass to standard (not sure if it is needed)
  • does not set the requested storage to 8Gi (how much gets requested? is it enough?)

Copy link
Contributor Author

@williamlardier williamlardier May 27, 2025

Choose a reason for hiding this comment

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

The base has 10Gi, which is enough, no need to change it.

does not overwrite/set the storageclass to standard (not sure if it is needed)

It's done but elsewhere (it was the case already before, we were doing it twice):

    sed -i 's/MONGODB_STORAGE_CLASS/standard/g' $DIR/_build/root/deploy/*

handles multiple shards seamlessly (as was your goal i guess)

yes!

@williamlardier williamlardier force-pushed the feature/ZENKO-4641-v2 branch from f1098b9 to fa66847 Compare May 27, 2025 09:21
@williamlardier williamlardier force-pushed the feature/ZENKO-4641-v2 branch from fa66847 to 9062ee2 Compare May 27, 2025 09:43
@williamlardier williamlardier force-pushed the feature/ZENKO-4641-v2 branch from 9062ee2 to 440c8b5 Compare June 5, 2025 07:21
@williamlardier
Copy link
Contributor Author

Added a commit to remove the matchLabel for the shard0, so that we do not require any downtime during shard expansion.

@williamlardier williamlardier force-pushed the feature/ZENKO-4641-v2 branch from 440c8b5 to 8944786 Compare June 5, 2025 09:23
To avoid having to delete the STS for existing
deployments, we must avoid changing the matchSelectors
for the shard 0. Removing only the shard selector is
not enough, as we risk selecting volumes from other
shards.

Instead, we choose to modify the app name to include,
only for new shards, the new shard ID. Shard 0 won't
be updated, and the new shards will have their own
labels.

Issue: ZENKO-4641
@williamlardier williamlardier force-pushed the feature/ZENKO-4641-v2 branch from 8944786 to ed4be0c Compare June 5, 2025 09:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants