From 36233bd205960416d338f2d9b4b5daf452936760 Mon Sep 17 00:00:00 2001 From: Rached Ben Mustapha Date: Tue, 6 Sep 2022 23:42:04 +0000 Subject: [PATCH 1/8] ZENKO-4641: render more mongodb shard manifests --- solution-base/build.sh | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/solution-base/build.sh b/solution-base/build.sh index c7d637c063..bedb7d700c 100755 --- a/solution-base/build.sh +++ b/solution-base/build.sh @@ -31,6 +31,14 @@ SOLUTION_REGISTRY=metalk8s-registry-from-config.invalid/${PRODUCT_LOWERNAME}-${V MONGODB_SHARDED_SINGLE_NODE_PATH=${ISO_ROOT}/deploy/mongodb-sharded-1-node.yaml MONGODB_SHARDED_THREE_NODE_PATH=${ISO_ROOT}/deploy/mongodb-sharded-3-nodes.yaml +MONGODB_SHARDED_THREE_NODE_THREE_SHARDS_PATH=${ISO_ROOT}/deploy/mongodb-sharded-3-nodes-3-shards.yaml +MONGODB_SHARDED_SIX_NODE_PATH=${ISO_ROOT}/deploy/mongodb-sharded-6-nodes.yaml +MONGODB_SHARDED_SIX_NODE_THREE_SHARDS_PATH=${ISO_ROOT}/deploy/mongodb-sharded-6-nodes-3-shards.yaml +MONGODB_SHARDED_SIX_NODE_SIX_SHARDS_PATH=${ISO_ROOT}/deploy/mongodb-sharded-6-nodes-6-shards.yaml +MONGODB_SHARDED_NINE_NODE_PATH=${ISO_ROOT}/deploy/mongodb-sharded-9-nodes.yaml +MONGODB_SHARDED_NINE_NODE_THREE_SHARDS_PATH=${ISO_ROOT}/deploy/mongodb-sharded-9-nodes-3-shards.yaml +MONGODB_SHARDED_NINE_NODE_SIX_SHARDS_PATH=${ISO_ROOT}/deploy/mongodb-sharded-9-nodes-6-shards.yaml +MONGODB_SHARDED_NINE_NODE_NINE_SHARDS_PATH=${ISO_ROOT}/deploy/mongodb-sharded-9-nodes-9-shards.yaml SOLUTION_ENV='SOLUTION_ENV' @@ -121,7 +129,15 @@ function render_mongodb_sharded_yamls() function mongodb_sharded_yamls() { render_mongodb_sharded_yamls "${MONGODB_SHARDED_SINGLE_NODE_PATH}" 1 1 - render_mongodb_sharded_yamls "${MONGODB_SHARDED_THREE_NODE_PATH}" 1 3 + render_mongodb_sharded_yamls "${MONGODB_SHARDED_THREE_NODE_PATH}" 1 3 + render_mongodb_sharded_yamls "${MONGODB_SHARDED_THREE_NODE_THREE_SHARDS_PATH}" 3 3 + render_mongodb_sharded_yamls "${MONGODB_SHARDED_SIX_NODE_PATH}" 1 6 + render_mongodb_sharded_yamls "${MONGODB_SHARDED_SIX_NODE_THREE_SHARDS_PATH}" 3 6 + render_mongodb_sharded_yamls "${MONGODB_SHARDED_SIX_NODE_SIX_SHARDS_PATH}" 6 6 + render_mongodb_sharded_yamls "${MONGODB_SHARDED_NINE_NODE_PATH}" 1 9 + render_mongodb_sharded_yamls "${MONGODB_SHARDED_NINE_NODE_THREE_SHARDS_PATH}" 3 9 + render_mongodb_sharded_yamls "${MONGODB_SHARDED_NINE_NODE_SIX_SHARDS_PATH}" 6 9 + render_mongodb_sharded_yamls "${MONGODB_SHARDED_NINE_NODE_NINE_SHARDS_PATH}" 9 9 } function gen_manifest_yaml() From 069caeebcc95816d4c60ff7a186f35f9910152f6 Mon Sep 17 00:00:00 2001 From: Rached Ben Mustapha Date: Mon, 14 Aug 2023 09:51:44 -0700 Subject: [PATCH 2/8] ZENKO-4641: add shard selector to pvc templates --- .../shard/shard-data-statefulset.yaml | 6 +++- .../mongodb-sharded-add-pv-selector.patch | 30 ------------------- .../patches/shard-data-statefulset.patch | 18 +++++++++++ 3 files changed, 23 insertions(+), 31 deletions(-) delete mode 100644 solution-base/mongodb/patches/mongodb-sharded-add-pv-selector.patch create mode 100644 solution-base/mongodb/patches/shard-data-statefulset.patch diff --git a/solution-base/mongodb/charts/mongodb-sharded/templates/shard/shard-data-statefulset.yaml b/solution-base/mongodb/charts/mongodb-sharded/templates/shard/shard-data-statefulset.yaml index 3f04c43d19..091b57ba7f 100644 --- a/solution-base/mongodb/charts/mongodb-sharded/templates/shard/shard-data-statefulset.yaml +++ b/solution-base/mongodb/charts/mongodb-sharded/templates/shard/shard-data-statefulset.yaml @@ -410,7 +410,11 @@ spec: {{- end }} {{- if $.Values.shardsvr.persistence.selector }} selector: -{{ toYaml $.Values.shardsvr.persistence.selector | indent 10 }} + matchLabels: + {{- if gt $.Values.shards 1 }} + shard: {{ $i | quote }} + {{- end }} +{{ toYaml $.Values.shardsvr.persistence.selector.matchLabels | indent 12 }} {{- end }} resources: requests: diff --git a/solution-base/mongodb/patches/mongodb-sharded-add-pv-selector.patch b/solution-base/mongodb/patches/mongodb-sharded-add-pv-selector.patch deleted file mode 100644 index b24d3e54be..0000000000 --- a/solution-base/mongodb/patches/mongodb-sharded-add-pv-selector.patch +++ /dev/null @@ -1,30 +0,0 @@ -diff --git a/solution-base/mongodb/charts/mongodb-sharded/templates/config-server/config-server-statefulset.yaml b/solution-base/mongodb/charts/mongodb-sharded/templates/config-server/config-server-statefulset.yaml -index 6a45fed9..37ec1712 100644 ---- a/solution-base/mongodb/charts/mongodb-sharded/templates/config-server/config-server-statefulset.yaml -+++ b/solution-base/mongodb/charts/mongodb-sharded/templates/config-server/config-server-statefulset.yaml -@@ -407,6 +407,10 @@ spec: - {{- range .Values.configsvr.persistence.accessModes }} - - {{ . | quote }} - {{- end }} -+ {{- if .Values.configsvr.persistence.selector }} -+ selector: -+{{ toYaml .Values.configsvr.persistence.selector | indent 10 }} -+ {{- end }} - resources: - requests: - storage: {{ .Values.configsvr.persistence.size | quote }} -diff --git a/solution-base/mongodb/charts/mongodb-sharded/templates/shard/shard-data-statefulset.yaml b/solution-base/mongodb/charts/mongodb-sharded/templates/shard/shard-data-statefulset.yaml -index 3827a7de..180dda87 100644 ---- a/solution-base/mongodb/charts/mongodb-sharded/templates/shard/shard-data-statefulset.yaml -+++ b/solution-base/mongodb/charts/mongodb-sharded/templates/shard/shard-data-statefulset.yaml -@@ -414,6 +414,10 @@ spec: - {{- range $.Values.shardsvr.persistence.accessModes }} - - {{ . | quote }} - {{- end }} -+ {{- if $.Values.shardsvr.persistence.selector }} -+ selector: -+{{ toYaml $.Values.shardsvr.persistence.selector | indent 10 }} -+ {{- end }} - resources: - requests: - storage: {{ $.Values.shardsvr.persistence.size | quote }} diff --git a/solution-base/mongodb/patches/shard-data-statefulset.patch b/solution-base/mongodb/patches/shard-data-statefulset.patch new file mode 100644 index 0000000000..9c37c6350c --- /dev/null +++ b/solution-base/mongodb/patches/shard-data-statefulset.patch @@ -0,0 +1,18 @@ +diff --git a/solution-base/mongodb/charts/mongodb-sharded/templates/shard/shard-data-statefulset.yaml b/solution-base/mongodb/charts/mongodb-sharded/templates/shard/shard-data-statefulset.yaml +index 3f04c43d..091b57ba 100644 +--- a/solution-base/mongodb/charts/mongodb-sharded/templates/shard/shard-data-statefulset.yaml ++++ b/solution-base/mongodb/charts/mongodb-sharded/templates/shard/shard-data-statefulset.yaml +@@ -410,7 +410,11 @@ spec: + {{- end }} + {{- if $.Values.shardsvr.persistence.selector }} + selector: +-{{ toYaml $.Values.shardsvr.persistence.selector | indent 10 }} ++ matchLabels: ++ {{- if gt $.Values.shards 1 }} ++ shard: {{ $i | quote }} ++ {{- end }} ++{{ toYaml $.Values.shardsvr.persistence.selector.matchLabels | indent 12 }} + {{- end }} + resources: + requests: +mongodb-sharded-fix-podmonitor \ No newline at end of file From 02a6c9bce3761a5d59dec368e7eb737b943e6501 Mon Sep 17 00:00:00 2001 From: williamlardier Date: Fri, 27 Dec 2024 14:20:22 +0100 Subject: [PATCH 3/8] Add the patch for configsvr pvc selector Issue: ZENKO-4641 --- .../patches/config-server-statefulset.patch | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 solution-base/mongodb/patches/config-server-statefulset.patch diff --git a/solution-base/mongodb/patches/config-server-statefulset.patch b/solution-base/mongodb/patches/config-server-statefulset.patch new file mode 100644 index 0000000000..8f1d420c29 --- /dev/null +++ b/solution-base/mongodb/patches/config-server-statefulset.patch @@ -0,0 +1,15 @@ +diff --git a/solution-base/mongodb/charts/mongodb-sharded/templates/config-server/config-server-statefulset.yaml b/solution-base/mongodb/charts/mongodb-sharded/templates/config-server/config-server-statefulset.yaml +index 2e4f2b25..aba11021 100644 +--- a/solution-base/mongodb/charts/mongodb-sharded/templates/config-server/config-server-statefulset.yaml ++++ b/solution-base/mongodb/charts/mongodb-sharded/templates/config-server/config-server-statefulset.yaml +@@ -401,6 +401,10 @@ spec: + {{- range .Values.configsvr.persistence.accessModes }} + - {{ . | quote }} + {{- end }} ++ {{- if .Values.configsvr.persistence.selector }} ++ selector: ++{{ toYaml .Values.configsvr.persistence.selector | indent 10 }} ++ {{- end }} + resources: + requests: + storage: {{ .Values.configsvr.persistence.size | quote }} From e534b5be491265b48be1157afd1597fe1be7b670 Mon Sep 17 00:00:00 2001 From: williamlardier Date: Fri, 27 Dec 2024 14:20:49 +0100 Subject: [PATCH 4/8] Add 6 node 2 shards mode Issue: ZENKO-4641 --- solution-base/build.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/solution-base/build.sh b/solution-base/build.sh index bedb7d700c..98feca9e62 100755 --- a/solution-base/build.sh +++ b/solution-base/build.sh @@ -33,6 +33,7 @@ MONGODB_SHARDED_SINGLE_NODE_PATH=${ISO_ROOT}/deploy/mongodb-sharded-1-node.yaml MONGODB_SHARDED_THREE_NODE_PATH=${ISO_ROOT}/deploy/mongodb-sharded-3-nodes.yaml MONGODB_SHARDED_THREE_NODE_THREE_SHARDS_PATH=${ISO_ROOT}/deploy/mongodb-sharded-3-nodes-3-shards.yaml MONGODB_SHARDED_SIX_NODE_PATH=${ISO_ROOT}/deploy/mongodb-sharded-6-nodes.yaml +MONGODB_SHARDED_SIX_NODE_TWO_SHARDS_PATH=${ISO_ROOT}/deploy/mongodb-sharded-6-nodes-2-shards.yaml MONGODB_SHARDED_SIX_NODE_THREE_SHARDS_PATH=${ISO_ROOT}/deploy/mongodb-sharded-6-nodes-3-shards.yaml MONGODB_SHARDED_SIX_NODE_SIX_SHARDS_PATH=${ISO_ROOT}/deploy/mongodb-sharded-6-nodes-6-shards.yaml MONGODB_SHARDED_NINE_NODE_PATH=${ISO_ROOT}/deploy/mongodb-sharded-9-nodes.yaml @@ -132,6 +133,7 @@ function mongodb_sharded_yamls() render_mongodb_sharded_yamls "${MONGODB_SHARDED_THREE_NODE_PATH}" 1 3 render_mongodb_sharded_yamls "${MONGODB_SHARDED_THREE_NODE_THREE_SHARDS_PATH}" 3 3 render_mongodb_sharded_yamls "${MONGODB_SHARDED_SIX_NODE_PATH}" 1 6 + render_mongodb_sharded_yamls "${MONGODB_SHARDED_SIX_NODE_TWO_SHARDS_PATH}" 2 6 render_mongodb_sharded_yamls "${MONGODB_SHARDED_SIX_NODE_THREE_SHARDS_PATH}" 3 6 render_mongodb_sharded_yamls "${MONGODB_SHARDED_SIX_NODE_SIX_SHARDS_PATH}" 6 6 render_mongodb_sharded_yamls "${MONGODB_SHARDED_NINE_NODE_PATH}" 1 9 From 8202c4ffdeec4af26d05aed64710b2ff7783cc52 Mon Sep 17 00:00:00 2001 From: williamlardier Date: Fri, 27 Dec 2024 15:12:11 +0100 Subject: [PATCH 5/8] Support multiple shards in CI Issue: ZENKO-4641 --- .github/scripts/end2end/configs/zenko.yaml | 2 +- .github/scripts/end2end/deploy-zenko.sh | 11 +++ .../scripts/end2end/generate-kustomization.sh | 79 +++++++++++++++++++ .../end2end/install-kind-dependencies.sh | 17 ++-- .github/scripts/end2end/kustomization.yaml | 39 --------- .github/workflows/end2end.yaml | 43 ++++++++++ solution-base/build.sh | 2 + 7 files changed, 148 insertions(+), 45 deletions(-) create mode 100644 .github/scripts/end2end/generate-kustomization.sh delete mode 100644 .github/scripts/end2end/kustomization.yaml diff --git a/.github/scripts/end2end/configs/zenko.yaml b/.github/scripts/end2end/configs/zenko.yaml index 9ac52e9793..4ad9acee37 100644 --- a/.github/scripts/end2end/configs/zenko.yaml +++ b/.github/scripts/end2end/configs/zenko.yaml @@ -5,7 +5,7 @@ metadata: name: ${ZENKO_NAME} ${ZENKO_ANNOTATIONS} zenko.io/x-backbeat-oneshard-replicaset: data-db-mongodb-sharded-shard-0 - zenko.io/x-backbeat-oneshard-replicaset-hosts: data-db-mongodb-sharded-shard0-data-0.data-db-mongodb-sharded-headless.default.svc.cluster.local:27017 + zenko.io/x-backbeat-oneshard-replicaset-hosts: ${ZENKO_BACKBEAT_SHARD_HOSTS} spec: version: ${ZENKO_VERSION_NAME} replicas: 1 diff --git a/.github/scripts/end2end/deploy-zenko.sh b/.github/scripts/end2end/deploy-zenko.sh index ec6d31ab8b..590ed6ce0f 100755 --- a/.github/scripts/end2end/deploy-zenko.sh +++ b/.github/scripts/end2end/deploy-zenko.sh @@ -17,6 +17,7 @@ export ZENKO_STS_INGRESS=${ZENKO_STS_INGRESS:-'sts.zenko.local'} export ZENKO_MANAGEMENT_INGRESS=${ZENKO_MANAGEMENT_INGRESS:-'management.zenko.local'} export ZENKO_S3_INGRESS=${ZENKO_S3_INGRESS:-'s3.zenko.local'} export ZENKO_UI_INGRESS=${ZENKO_UI_INGRESS:-'ui.zenko.local'} +export MONGODB_SHARD_COUNT=${MONGODB_SHARD_COUNT:-1} export BACKBEAT_LCC_CRON_RULE=${BACKBEAT_LCC_CRON_RULE:-'*/5 * * * * *'} @@ -128,7 +129,17 @@ create_encryption_secret() export AZURE_SECRET_KEY_ENCRYPTED } +generate_shard_hosts() { + local hosts="" + for ((i=0; i "$kustomization_file" << EOF +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +resources: +- ${DIR}/_build/root/deploy/${base_yaml} +patchesStrategicMerge: +EOF + + # Add configsvr patch with correct path to add volumeClaimTemplates + cat >> "$kustomization_file" << EOF +- |- + apiVersion: apps/v1 + kind: StatefulSet + metadata: + name: data-db-mongodb-sharded-configsvr + spec: + volumeClaimTemplates: + - metadata: + name: datadir + spec: + accessModes: + - "ReadWriteOnce" + resources: + requests: + storage: "8Gi" + storageClassName: standard +EOF + + # Add shard patches for N shards with correct path to add volumeClaimTemplates + for ((i=0; i> "$kustomization_file" << EOF +- |- + apiVersion: apps/v1 + kind: StatefulSet + metadata: + name: data-db-mongodb-sharded-shard${i}-data + spec: + volumeClaimTemplates: + - metadata: + name: datadir + spec: + accessModes: + - "ReadWriteOnce" + resources: + requests: + storage: "8Gi" + storageClassName: standard +EOF + done +} diff --git a/.github/scripts/end2end/install-kind-dependencies.sh b/.github/scripts/end2end/install-kind-dependencies.sh index 4300063488..32e1f6709f 100755 --- a/.github/scripts/end2end/install-kind-dependencies.sh +++ b/.github/scripts/end2end/install-kind-dependencies.sh @@ -24,6 +24,10 @@ MONGODB_APP_PASSWORD=datapass MONGODB_APP_DATABASE=${ZENKO_MONGODB_DATABASE:-datadb} MONGODB_RS_KEY=0123456789abcdef +MONGODB_SHARD_COUNT=${MONGODB_SHARD_COUNT:-1} + +source "${DIR}/generate-kustomization.sh" && generate_kustomization "${NODE_COUNT:-1}" "${MONGODB_SHARD_COUNT}" + ENABLE_KEYCLOAK_HTTPS=${ENABLE_KEYCLOAK_HTTPS:-'false'} KAFKA_CHART=banzaicloud-stable/kafka-operator @@ -186,7 +190,7 @@ mongodb_wait_for_shards() { --eval "db.runCommand({ listshards: 1 }).shards.length" ) - [ $count == "1" ] + [ $count == "$MONGODB_SHARD_COUNT" ] } mongodb_sharded() { @@ -197,11 +201,14 @@ mongodb_sharded() { $SOLUTION_REGISTRY/os-shell=$(get_image_from_deps mongodb-shell) \ $SOLUTION_REGISTRY/mongodb-exporter=$(get_image_from_deps mongodb-sharded-exporter) - kubectl apply -k . + kubectl apply -k "${DIR}" - kubectl rollout status statefulset data-db-mongodb-sharded-mongos - kubectl rollout status statefulset data-db-mongodb-sharded-configsvr - kubectl rollout status statefulset data-db-mongodb-sharded-shard0-data + kubectl rollout status statefulset data-db-mongodb-sharded-mongos --timeout=5m + kubectl rollout status statefulset data-db-mongodb-sharded-configsvr --timeout=5m + + for ((i=0; i Date: Fri, 3 Jan 2025 09:20:42 +0100 Subject: [PATCH 6/8] Have one podmonitor per shard Issue: ZENKO-4641 --- .../shard/shard-data-podmonitor.yaml | 8 ++++++- .../mongodb-sharded-fix-podmonitor.patch | 22 ------------------- .../patches/shard-data-podmonitor.patch | 0 3 files changed, 7 insertions(+), 23 deletions(-) delete mode 100644 solution-base/mongodb/patches/mongodb-sharded-fix-podmonitor.patch create mode 100644 solution-base/mongodb/patches/shard-data-podmonitor.patch diff --git a/solution-base/mongodb/charts/mongodb-sharded/templates/shard/shard-data-podmonitor.yaml b/solution-base/mongodb/charts/mongodb-sharded/templates/shard/shard-data-podmonitor.yaml index 657764ac98..aa74ef3731 100644 --- a/solution-base/mongodb/charts/mongodb-sharded/templates/shard/shard-data-podmonitor.yaml +++ b/solution-base/mongodb/charts/mongodb-sharded/templates/shard/shard-data-podmonitor.yaml @@ -4,7 +4,8 @@ SPDX-License-Identifier: APACHE-2.0 */}} {{- if and .Values.shards .Values.metrics.enabled .Values.metrics.podMonitor.enabled }} -{{- $i := 0 }} +{{- $replicas := .Values.shards | int }} +{{- range $i, $e := until $replicas }} apiVersion: monitoring.coreos.com/v1 kind: PodMonitor metadata: @@ -35,4 +36,9 @@ spec: selector: matchLabels: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 6 }} app.kubernetes.io/component: shardsvr + shard: {{ $i | quote }} +{{- if lt $i (sub $replicas 1) }} +--- +{{- end }} +{{- end }} {{- end }} diff --git a/solution-base/mongodb/patches/mongodb-sharded-fix-podmonitor.patch b/solution-base/mongodb/patches/mongodb-sharded-fix-podmonitor.patch deleted file mode 100644 index e6d7143650..0000000000 --- a/solution-base/mongodb/patches/mongodb-sharded-fix-podmonitor.patch +++ /dev/null @@ -1,22 +0,0 @@ -diff --git a/solution-base/mongodb/charts/mongodb-sharded/templates/shard/shard-data-podmonitor.yaml b/solution-base/mongodb/charts/mongodb-sharded/templates/shard/shard-data-podmonitor.yaml -index d2c9c0cb..657764ac 100644 ---- a/solution-base/mongodb/charts/mongodb-sharded/templates/shard/shard-data-podmonitor.yaml -+++ b/solution-base/mongodb/charts/mongodb-sharded/templates/shard/shard-data-podmonitor.yaml -@@ -4,8 +4,7 @@ SPDX-License-Identifier: APACHE-2.0 - */}} - - {{- if and .Values.shards .Values.metrics.enabled .Values.metrics.podMonitor.enabled }} --{{- $replicas := .Values.shards | int }} --{{- range $i, $e := until $replicas }} -+{{- $i := 0 }} - apiVersion: monitoring.coreos.com/v1 - kind: PodMonitor - metadata: -@@ -36,7 +35,4 @@ spec: - selector: - matchLabels: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 6 }} - app.kubernetes.io/component: shardsvr -- shard: {{ $i | quote }} ----- --{{- end }} - {{- end }} diff --git a/solution-base/mongodb/patches/shard-data-podmonitor.patch b/solution-base/mongodb/patches/shard-data-podmonitor.patch new file mode 100644 index 0000000000..e69de29bb2 From 058ddd5b9fb07bf83aed40912cc4926e83231e1a Mon Sep 17 00:00:00 2001 From: williamlardier Date: Fri, 3 Jan 2025 10:35:06 +0100 Subject: [PATCH 7/8] Switch to hard anti affinity preset for mongos This will help not having two mongos servers on the same node. Issue: ZENKO-4641 --- solution-base/mongodb/charts/mongodb-sharded/values.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/solution-base/mongodb/charts/mongodb-sharded/values.yaml b/solution-base/mongodb/charts/mongodb-sharded/values.yaml index b55ebd4090..7e531b4744 100644 --- a/solution-base/mongodb/charts/mongodb-sharded/values.yaml +++ b/solution-base/mongodb/charts/mongodb-sharded/values.yaml @@ -680,7 +680,7 @@ mongos: ## @param mongos.podAntiAffinityPreset Mongos Pod anti-affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard` ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity ## - podAntiAffinityPreset: soft + podAntiAffinityPreset: hard ## Node affinity preset ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity ## From a9bd6f904ff6891294ae65ecc5e9d98e2a3147f7 Mon Sep 17 00:00:00 2001 From: williamlardier Date: Fri, 3 Jan 2025 18:07:02 +0100 Subject: [PATCH 8/8] Force P-S-S topology We do not want to have N shard server for N nodes, because it would divide the total available resources per shard, reducing the available memory: we should reduce the need to rely on the disks as much as possible to improve the performances, as per official recommendations. Issue: ZENKO-4641 --- solution-base/build.sh | 32 +++++++++++++++++--------------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/solution-base/build.sh b/solution-base/build.sh index 6c78719d43..024a33c791 100755 --- a/solution-base/build.sh +++ b/solution-base/build.sh @@ -84,7 +84,7 @@ function render_mongodb_sharded_yamls() local OUTPUT_PATH=${1:-${OPERATOR_PATH}} local SHARD_COUNT=${2:-1} local NODE_COUNT=${3:-1} - local ADD_OPTIONS=${4:-""} + local REPLICA_COUNT=${3:-${NODE_COUNT}} echo creating mongodb-sharded ${NODE_COUNT}-node yamls CHART_PATH="$SOLUTION_BASE_DIR/mongodb/charts/mongodb-sharded" @@ -97,10 +97,10 @@ function render_mongodb_sharded_yamls() --set shards=${SHARD_COUNT} \ --set mongos.replicaCount=${NODE_COUNT} \ --set mongos.useStatefulSet=true \ - --set shardsvr.dataNode.replicaCount=${NODE_COUNT} \ + --set shardsvr.dataNode.replicaCount=${REPLICA_COUNT} \ --set shardsvr.persistence.enabled=true \ --set shardsvr.persistence.storageClass=${MONGODB_STORAGE_CLASS} \ - --set configsvr.replicaCount=${NODE_COUNT} \ + --set configsvr.replicaCount=${REPLICA_COUNT} \ --set configsvr.persistence.enabled=true \ --set configsvr.persistence.storageClass=${MONGODB_STORAGE_CLASS} \ --set metrics.enabled=true \ @@ -130,18 +130,20 @@ function render_mongodb_sharded_yamls() function mongodb_sharded_yamls() { - render_mongodb_sharded_yamls "${MONGODB_SHARDED_SINGLE_NODE_PATH}" 1 1 - render_mongodb_sharded_yamls "${MONGODB_SHARDED_SINGLE_NODE_TWO_SHARDS_PATH}" 2 1 - render_mongodb_sharded_yamls "${MONGODB_SHARDED_THREE_NODE_PATH}" 1 3 - render_mongodb_sharded_yamls "${MONGODB_SHARDED_THREE_NODE_THREE_SHARDS_PATH}" 3 3 - render_mongodb_sharded_yamls "${MONGODB_SHARDED_SIX_NODE_PATH}" 1 6 - render_mongodb_sharded_yamls "${MONGODB_SHARDED_SIX_NODE_TWO_SHARDS_PATH}" 2 6 - render_mongodb_sharded_yamls "${MONGODB_SHARDED_SIX_NODE_THREE_SHARDS_PATH}" 3 6 - render_mongodb_sharded_yamls "${MONGODB_SHARDED_SIX_NODE_SIX_SHARDS_PATH}" 6 6 - render_mongodb_sharded_yamls "${MONGODB_SHARDED_NINE_NODE_PATH}" 1 9 - render_mongodb_sharded_yamls "${MONGODB_SHARDED_NINE_NODE_THREE_SHARDS_PATH}" 3 9 - render_mongodb_sharded_yamls "${MONGODB_SHARDED_NINE_NODE_SIX_SHARDS_PATH}" 6 9 - render_mongodb_sharded_yamls "${MONGODB_SHARDED_NINE_NODE_NINE_SHARDS_PATH}" 9 9 + # For now we maximize the number of replicas to 3, so each shard is a P-S-S + # Do we want to support more combinations that is, N replicas? + render_mongodb_sharded_yamls "${MONGODB_SHARDED_SINGLE_NODE_PATH}" 1 1 1 + render_mongodb_sharded_yamls "${MONGODB_SHARDED_SINGLE_NODE_TWO_SHARDS_PATH}" 2 1 1 + render_mongodb_sharded_yamls "${MONGODB_SHARDED_THREE_NODE_PATH}" 1 3 3 + render_mongodb_sharded_yamls "${MONGODB_SHARDED_THREE_NODE_THREE_SHARDS_PATH}" 3 3 3 + render_mongodb_sharded_yamls "${MONGODB_SHARDED_SIX_NODE_PATH}" 1 6 3 + render_mongodb_sharded_yamls "${MONGODB_SHARDED_SIX_NODE_TWO_SHARDS_PATH}" 2 6 3 + render_mongodb_sharded_yamls "${MONGODB_SHARDED_SIX_NODE_THREE_SHARDS_PATH}" 3 6 3 + render_mongodb_sharded_yamls "${MONGODB_SHARDED_SIX_NODE_SIX_SHARDS_PATH}" 6 6 3 + render_mongodb_sharded_yamls "${MONGODB_SHARDED_NINE_NODE_PATH}" 1 9 3 + render_mongodb_sharded_yamls "${MONGODB_SHARDED_NINE_NODE_THREE_SHARDS_PATH}" 3 9 3 + render_mongodb_sharded_yamls "${MONGODB_SHARDED_NINE_NODE_SIX_SHARDS_PATH}" 6 9 3 + render_mongodb_sharded_yamls "${MONGODB_SHARDED_NINE_NODE_NINE_SHARDS_PATH}" 9 9 3 } function gen_manifest_yaml()