From d9f58cbc1ab88405fe315863d965f656d2ddfaab Mon Sep 17 00:00:00 2001 From: travagliad <215686151+travagliad@users.noreply.github.com> Date: Wed, 22 Oct 2025 13:11:49 +0100 Subject: [PATCH 01/21] Update PMM admin commands to include 'valkey-server' for monitoring setup --- pmm_qa/valkey/valkey.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pmm_qa/valkey/valkey.yml b/pmm_qa/valkey/valkey.yml index eeaa4b80..f2842170 100644 --- a/pmm_qa/valkey/valkey.yml +++ b/pmm_qa/valkey/valkey.yml @@ -202,19 +202,19 @@ - name: Add the primary to monitoring community.docker.docker_container_exec: container: "valkey-primary" - command: pmm-admin add valkey --cluster=valkey-cluster --replication-set=valkey-repl --environment=valkey-test --username=default --password="{{ valkey_password }}" --service-name=valkey-primary-svc-{{ random_number }} --host=valkey-primary --port=6379 --custom-labels='role=primary' + command: pmm-admin add valkey valkey-server --cluster=valkey-cluster --replication-set=valkey-repl --environment=valkey-test --username=default --password="{{ valkey_password }}" --service-name=valkey-primary-svc-{{ random_number }} --host=valkey-primary --port=6379 --custom-labels='role=primary' ignore_errors: yes - name: Add the replicas to monitoring community.docker.docker_container_exec: container: "valkey-replica-{{ item }}" - command: pmm-admin add valkey --cluster=valkey-cluster --replication-set=valkey-repl --environment=valkey-test --username=default --password="{{ valkey_password }}" --service-name=valkey-replica{{ item }}-svc-{{ random_number }} --host=valkey-replica-{{ item }} --port=6379 --custom-labels='role=replica' + command: pmm-admin add valkey valkey-server --cluster=valkey-cluster --replication-set=valkey-repl --environment=valkey-test --username=default --password="{{ valkey_password }}" --service-name=valkey-replica{{ item }}-svc-{{ random_number }} --host=valkey-replica-{{ item }} --port=6379 --custom-labels='role=replica' loop: "{{ range(1, valkey_replica_count + 1) | list }}" ignore_errors: yes - name: Add Sentinels to monitoring community.docker.docker_container_exec: container: "sentinel-{{ item }}" - command: pmm-admin add valkey --cluster=valkey-cluster --environment=valkey-test --username=default --password="{{ valkey_password }}" --service-name=sentinel{{ item }}-svc-{{ random_number }} --host=sentinel-{{ item }} --port={{ sentinel_start_port }} --custom-labels='role=sentinel' + command: pmm-admin add valkey valkey-server --cluster=valkey-cluster --environment=valkey-test --username=default --password="{{ valkey_password }}" --service-name=sentinel{{ item }}-svc-{{ random_number }} --host=sentinel-{{ item }} --port={{ sentinel_start_port }} --custom-labels='role=sentinel' loop: "{{ range(1, sentinel_count + 1) | list }}" ignore_errors: yes From 4aeaf05ea3dee08e665dab987704bceef69c0be2 Mon Sep 17 00:00:00 2001 From: travagliad <215686151+travagliad@users.noreply.github.com> Date: Wed, 22 Oct 2025 13:11:49 +0100 Subject: [PATCH 02/21] Update PMM admin commands to include 'valkey-server' for monitoring setup --- pmm_qa/valkey/valkey.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pmm_qa/valkey/valkey.yml b/pmm_qa/valkey/valkey.yml index eeaa4b80..39c625dc 100644 --- a/pmm_qa/valkey/valkey.yml +++ b/pmm_qa/valkey/valkey.yml @@ -202,19 +202,19 @@ - name: Add the primary to monitoring community.docker.docker_container_exec: container: "valkey-primary" - command: pmm-admin add valkey --cluster=valkey-cluster --replication-set=valkey-repl --environment=valkey-test --username=default --password="{{ valkey_password }}" --service-name=valkey-primary-svc-{{ random_number }} --host=valkey-primary --port=6379 --custom-labels='role=primary' + command: pmm-admin add valkey --cluster=valkey-cluster --replication-set=valkey-repl --environment=valkey-test --username=default --password="{{ valkey_password }}" --service-name=valkey-primary-svc-{{ random_number }} --host=valkey-primary --port=6379 --custom-labels='role=primary' valkey-node ignore_errors: yes - name: Add the replicas to monitoring community.docker.docker_container_exec: container: "valkey-replica-{{ item }}" - command: pmm-admin add valkey --cluster=valkey-cluster --replication-set=valkey-repl --environment=valkey-test --username=default --password="{{ valkey_password }}" --service-name=valkey-replica{{ item }}-svc-{{ random_number }} --host=valkey-replica-{{ item }} --port=6379 --custom-labels='role=replica' + command: pmm-admin add valkey --cluster=valkey-cluster --replication-set=valkey-repl --environment=valkey-test --username=default --password="{{ valkey_password }}" --service-name=valkey-replica{{ item }}-svc-{{ random_number }} --host=valkey-replica-{{ item }} --port=6379 --custom-labels='role=replica' valkey-node loop: "{{ range(1, valkey_replica_count + 1) | list }}" ignore_errors: yes - name: Add Sentinels to monitoring community.docker.docker_container_exec: container: "sentinel-{{ item }}" - command: pmm-admin add valkey --cluster=valkey-cluster --environment=valkey-test --username=default --password="{{ valkey_password }}" --service-name=sentinel{{ item }}-svc-{{ random_number }} --host=sentinel-{{ item }} --port={{ sentinel_start_port }} --custom-labels='role=sentinel' + command: pmm-admin add valkey --cluster=valkey-cluster --environment=valkey-test --username=default --password="{{ valkey_password }}" --service-name=sentinel{{ item }}-svc-{{ random_number }} --host=sentinel-{{ item }} --port={{ sentinel_start_port }} --custom-labels='role=sentinel' valkey-node loop: "{{ range(1, sentinel_count + 1) | list }}" ignore_errors: yes From bb6f883af3eb0d4689f27f44819c2e5b5f0fc7d5 Mon Sep 17 00:00:00 2001 From: travagliad <215686151+travagliad@users.noreply.github.com> Date: Thu, 23 Oct 2025 14:23:34 +0100 Subject: [PATCH 03/21] PMM-7 Change role name --- pmm_qa/valkey/valkey.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pmm_qa/valkey/valkey.yml b/pmm_qa/valkey/valkey.yml index 39c625dc..04af06d4 100644 --- a/pmm_qa/valkey/valkey.yml +++ b/pmm_qa/valkey/valkey.yml @@ -202,7 +202,7 @@ - name: Add the primary to monitoring community.docker.docker_container_exec: container: "valkey-primary" - command: pmm-admin add valkey --cluster=valkey-cluster --replication-set=valkey-repl --environment=valkey-test --username=default --password="{{ valkey_password }}" --service-name=valkey-primary-svc-{{ random_number }} --host=valkey-primary --port=6379 --custom-labels='role=primary' valkey-node + command: pmm-admin add valkey --cluster=valkey-cluster --replication-set=valkey-repl --environment=valkey-test --username=default --password="{{ valkey_password }}" --service-name=valkey-primary-svc-{{ random_number }} --host=valkey-primary --port=6379 --custom-labels='role=master' valkey-node ignore_errors: yes - name: Add the replicas to monitoring From 70a1aace3f695460d1c334c63519d9fb351e9d11 Mon Sep 17 00:00:00 2001 From: travagliad <215686151+travagliad@users.noreply.github.com> Date: Thu, 23 Oct 2025 14:25:19 +0100 Subject: [PATCH 04/21] PMM-7 Fix node name --- pmm_qa/valkey/valkey.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pmm_qa/valkey/valkey.yml b/pmm_qa/valkey/valkey.yml index 04af06d4..5e555e9a 100644 --- a/pmm_qa/valkey/valkey.yml +++ b/pmm_qa/valkey/valkey.yml @@ -202,19 +202,19 @@ - name: Add the primary to monitoring community.docker.docker_container_exec: container: "valkey-primary" - command: pmm-admin add valkey --cluster=valkey-cluster --replication-set=valkey-repl --environment=valkey-test --username=default --password="{{ valkey_password }}" --service-name=valkey-primary-svc-{{ random_number }} --host=valkey-primary --port=6379 --custom-labels='role=master' valkey-node + command: pmm-admin add valkey --cluster=valkey-cluster --replication-set=valkey-repl --environment=valkey-test --username=default --password="{{ valkey_password }}" --service-name=valkey-primary-svc-{{ random_number }} --host=valkey-primary --port=6379 --custom-labels='role=master' master-node ignore_errors: yes - name: Add the replicas to monitoring community.docker.docker_container_exec: container: "valkey-replica-{{ item }}" - command: pmm-admin add valkey --cluster=valkey-cluster --replication-set=valkey-repl --environment=valkey-test --username=default --password="{{ valkey_password }}" --service-name=valkey-replica{{ item }}-svc-{{ random_number }} --host=valkey-replica-{{ item }} --port=6379 --custom-labels='role=replica' valkey-node + command: pmm-admin add valkey --cluster=valkey-cluster --replication-set=valkey-repl --environment=valkey-test --username=default --password="{{ valkey_password }}" --service-name=valkey-replica{{ item }}-svc-{{ random_number }} --host=valkey-replica-{{ item }} --port=6379 --custom-labels='role=replica' valkey-replica-node-{{ item }} loop: "{{ range(1, valkey_replica_count + 1) | list }}" ignore_errors: yes - name: Add Sentinels to monitoring community.docker.docker_container_exec: container: "sentinel-{{ item }}" - command: pmm-admin add valkey --cluster=valkey-cluster --environment=valkey-test --username=default --password="{{ valkey_password }}" --service-name=sentinel{{ item }}-svc-{{ random_number }} --host=sentinel-{{ item }} --port={{ sentinel_start_port }} --custom-labels='role=sentinel' valkey-node + command: pmm-admin add valkey --cluster=valkey-cluster --environment=valkey-test --username=default --password="{{ valkey_password }}" --service-name=sentinel{{ item }}-svc-{{ random_number }} --host=sentinel-{{ item }} --port={{ sentinel_start_port }} --custom-labels='role=sentinel' sentinel-node-{{ item }} loop: "{{ range(1, sentinel_count + 1) | list }}" ignore_errors: yes From 3abd4db7c699c091d47b2b10cec620ceef2666b0 Mon Sep 17 00:00:00 2001 From: travagliad <215686151+travagliad@users.noreply.github.com> Date: Wed, 29 Oct 2025 13:51:29 +0000 Subject: [PATCH 05/21] Fix --- pmm_qa/valkey/valkey.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pmm_qa/valkey/valkey.yml b/pmm_qa/valkey/valkey.yml index 5e555e9a..8964d33b 100644 --- a/pmm_qa/valkey/valkey.yml +++ b/pmm_qa/valkey/valkey.yml @@ -202,19 +202,19 @@ - name: Add the primary to monitoring community.docker.docker_container_exec: container: "valkey-primary" - command: pmm-admin add valkey --cluster=valkey-cluster --replication-set=valkey-repl --environment=valkey-test --username=default --password="{{ valkey_password }}" --service-name=valkey-primary-svc-{{ random_number }} --host=valkey-primary --port=6379 --custom-labels='role=master' master-node + command: pmm-admin add valkey superNodeNamePrimary --cluster=valkey-cluster --replication-set=valkey-repl --environment=valkey-test --username=default --password="{{ valkey_password }}" --service-name=valkey-primary-svc-{{ random_number }} --host=valkey-primary --port=6379 --custom-labels='role=primary' ignore_errors: yes - name: Add the replicas to monitoring community.docker.docker_container_exec: container: "valkey-replica-{{ item }}" - command: pmm-admin add valkey --cluster=valkey-cluster --replication-set=valkey-repl --environment=valkey-test --username=default --password="{{ valkey_password }}" --service-name=valkey-replica{{ item }}-svc-{{ random_number }} --host=valkey-replica-{{ item }} --port=6379 --custom-labels='role=replica' valkey-replica-node-{{ item }} + command: pmm-admin add valkey superNodeNameReplica{{ item }} --cluster=valkey-cluster --replication-set=valkey-repl --environment=valkey-test --username=default --password="{{ valkey_password }}" --service-name=valkey-replica{{ item }}-svc-{{ random_number }} --host=valkey-replica-{{ item }} --port=6379 --custom-labels='role=replica' valkey-replica-node{{ item }} loop: "{{ range(1, valkey_replica_count + 1) | list }}" ignore_errors: yes - name: Add Sentinels to monitoring community.docker.docker_container_exec: container: "sentinel-{{ item }}" - command: pmm-admin add valkey --cluster=valkey-cluster --environment=valkey-test --username=default --password="{{ valkey_password }}" --service-name=sentinel{{ item }}-svc-{{ random_number }} --host=sentinel-{{ item }} --port={{ sentinel_start_port }} --custom-labels='role=sentinel' sentinel-node-{{ item }} + command: pmm-admin add valkey superNodeNameSentinel{{ item }} --cluster=valkey-cluster --environment=valkey-test --username=default --password="{{ valkey_password }}" --service-name=sentinel{{ item }}-svc-{{ random_number }} --host=sentinel-{{ item }} --port={{ sentinel_start_port }} --custom-labels='role=sentinel' loop: "{{ range(1, sentinel_count + 1) | list }}" ignore_errors: yes From b23e691717bb5fce90b04ee2fbace5c1035e4fe8 Mon Sep 17 00:00:00 2001 From: travagliad <215686151+travagliad@users.noreply.github.com> Date: Wed, 29 Oct 2025 22:39:16 +0000 Subject: [PATCH 06/21] fix --- pmm_qa/valkey/valkey.yml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/pmm_qa/valkey/valkey.yml b/pmm_qa/valkey/valkey.yml index 8964d33b..5a279c6d 100644 --- a/pmm_qa/valkey/valkey.yml +++ b/pmm_qa/valkey/valkey.yml @@ -203,12 +203,16 @@ community.docker.docker_container_exec: container: "valkey-primary" command: pmm-admin add valkey superNodeNamePrimary --cluster=valkey-cluster --replication-set=valkey-repl --environment=valkey-test --username=default --password="{{ valkey_password }}" --service-name=valkey-primary-svc-{{ random_number }} --host=valkey-primary --port=6379 --custom-labels='role=primary' + environment: + PMM_AGENT_SETUP_NODE_NAME: "valkey-primary-node" ignore_errors: yes - name: Add the replicas to monitoring community.docker.docker_container_exec: container: "valkey-replica-{{ item }}" - command: pmm-admin add valkey superNodeNameReplica{{ item }} --cluster=valkey-cluster --replication-set=valkey-repl --environment=valkey-test --username=default --password="{{ valkey_password }}" --service-name=valkey-replica{{ item }}-svc-{{ random_number }} --host=valkey-replica-{{ item }} --port=6379 --custom-labels='role=replica' valkey-replica-node{{ item }} + command: pmm-admin add valkey superNodeNameReplica{{ item }} --cluster=valkey-cluster --replication-set=valkey-repl --environment=valkey-test --username=default --password="{{ valkey_password }}" --service-name=valkey-replica{{ item }}-svc-{{ random_number }} --host=valkey-replica-{{ item }} --port=6379 --custom-labels='role=replica' + environment: + PMM_AGENT_SETUP_NODE_NAME: "valkey-replica-{{ item }}-node" loop: "{{ range(1, valkey_replica_count + 1) | list }}" ignore_errors: yes @@ -216,5 +220,7 @@ community.docker.docker_container_exec: container: "sentinel-{{ item }}" command: pmm-admin add valkey superNodeNameSentinel{{ item }} --cluster=valkey-cluster --environment=valkey-test --username=default --password="{{ valkey_password }}" --service-name=sentinel{{ item }}-svc-{{ random_number }} --host=sentinel-{{ item }} --port={{ sentinel_start_port }} --custom-labels='role=sentinel' + environment: + PMM_AGENT_SETUP_NODE_NAME: "valkey-sentinel-{{ item }}-node" loop: "{{ range(1, sentinel_count + 1) | list }}" ignore_errors: yes From 300c61c564c80cf21cbc79e3b1b8586d22d9819f Mon Sep 17 00:00:00 2001 From: travagliad <215686151+travagliad@users.noreply.github.com> Date: Thu, 30 Oct 2025 00:02:10 +0000 Subject: [PATCH 07/21] fix --- pmm_qa/valkey/valkey.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pmm_qa/valkey/valkey.yml b/pmm_qa/valkey/valkey.yml index 5a279c6d..203eb7cf 100644 --- a/pmm_qa/valkey/valkey.yml +++ b/pmm_qa/valkey/valkey.yml @@ -203,7 +203,7 @@ community.docker.docker_container_exec: container: "valkey-primary" command: pmm-admin add valkey superNodeNamePrimary --cluster=valkey-cluster --replication-set=valkey-repl --environment=valkey-test --username=default --password="{{ valkey_password }}" --service-name=valkey-primary-svc-{{ random_number }} --host=valkey-primary --port=6379 --custom-labels='role=primary' - environment: + env: PMM_AGENT_SETUP_NODE_NAME: "valkey-primary-node" ignore_errors: yes @@ -211,7 +211,7 @@ community.docker.docker_container_exec: container: "valkey-replica-{{ item }}" command: pmm-admin add valkey superNodeNameReplica{{ item }} --cluster=valkey-cluster --replication-set=valkey-repl --environment=valkey-test --username=default --password="{{ valkey_password }}" --service-name=valkey-replica{{ item }}-svc-{{ random_number }} --host=valkey-replica-{{ item }} --port=6379 --custom-labels='role=replica' - environment: + env: PMM_AGENT_SETUP_NODE_NAME: "valkey-replica-{{ item }}-node" loop: "{{ range(1, valkey_replica_count + 1) | list }}" ignore_errors: yes @@ -220,7 +220,7 @@ community.docker.docker_container_exec: container: "sentinel-{{ item }}" command: pmm-admin add valkey superNodeNameSentinel{{ item }} --cluster=valkey-cluster --environment=valkey-test --username=default --password="{{ valkey_password }}" --service-name=sentinel{{ item }}-svc-{{ random_number }} --host=sentinel-{{ item }} --port={{ sentinel_start_port }} --custom-labels='role=sentinel' - environment: + env: PMM_AGENT_SETUP_NODE_NAME: "valkey-sentinel-{{ item }}-node" loop: "{{ range(1, sentinel_count + 1) | list }}" ignore_errors: yes From c2e134f105132f3412aa755ae77ee301bd953bbe Mon Sep 17 00:00:00 2001 From: travagliad <215686151+travagliad@users.noreply.github.com> Date: Thu, 30 Oct 2025 10:33:11 +0000 Subject: [PATCH 08/21] fix --- pmm_qa/valkey/valkey.yml | 32 +++++++++++++++++++++++--------- 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/pmm_qa/valkey/valkey.yml b/pmm_qa/valkey/valkey.yml index 203eb7cf..0b21aee1 100644 --- a/pmm_qa/valkey/valkey.yml +++ b/pmm_qa/valkey/valkey.yml @@ -199,28 +199,42 @@ vars: container_name: "{{ current_container_name }}" + - name: Configure pmm-agent on primary + community.docker.docker_container_exec: + container: "valkey-primary" + command: pmm-admin config valkey-primary-svc-{{ random_number }} generic valkey-primary-node-{{ random_number }} + ignore_errors: yes + - name: Add the primary to monitoring community.docker.docker_container_exec: container: "valkey-primary" - command: pmm-admin add valkey superNodeNamePrimary --cluster=valkey-cluster --replication-set=valkey-repl --environment=valkey-test --username=default --password="{{ valkey_password }}" --service-name=valkey-primary-svc-{{ random_number }} --host=valkey-primary --port=6379 --custom-labels='role=primary' - env: - PMM_AGENT_SETUP_NODE_NAME: "valkey-primary-node" + command: pmm-admin add valkey --cluster=valkey-cluster --replication-set=valkey-repl --environment=valkey-test --username=default --password="{{ valkey_password }}" --service-name=valkey-primary-svc-{{ random_number }} --host=valkey-primary --port=6379 --custom-labels='role=primary' + ignore_errors: yes + + - name: Configure pmm-agent on replicas + community.docker.docker_container_exec: + container: "valkey-replica-{{ item }}" + command: pmm-admin config valkey-replica{{ item }}-svc-{{ random_number }} generic valkey-replica-{{ item }}-node-{{ random_number }} + loop: "{{ range(1, valkey_replica_count + 1) | list }}" ignore_errors: yes - name: Add the replicas to monitoring community.docker.docker_container_exec: container: "valkey-replica-{{ item }}" - command: pmm-admin add valkey superNodeNameReplica{{ item }} --cluster=valkey-cluster --replication-set=valkey-repl --environment=valkey-test --username=default --password="{{ valkey_password }}" --service-name=valkey-replica{{ item }}-svc-{{ random_number }} --host=valkey-replica-{{ item }} --port=6379 --custom-labels='role=replica' - env: - PMM_AGENT_SETUP_NODE_NAME: "valkey-replica-{{ item }}-node" + command: pmm-admin add valkey --cluster=valkey-cluster --replication-set=valkey-repl --environment=valkey-test --username=default --password="{{ valkey_password }}" --service-name=valkey-replica{{ item }}-svc-{{ random_number }} --host=valkey-replica-{{ item }} --port=6379 --custom-labels='role=replica' loop: "{{ range(1, valkey_replica_count + 1) | list }}" ignore_errors: yes + - name: Configure pmm-agent on sentinels + community.docker.docker_container_exec: + container: "sentinel-{{ item }}" + command: pmm-admin config sentinel{{ item }}-svc-{{ random_number }} generic sentinel-{{ item }}-node-{{ random_number }} + loop: "{{ range(1, sentinel_count + 1) | list }}" + ignore_errors: yes + - name: Add Sentinels to monitoring community.docker.docker_container_exec: container: "sentinel-{{ item }}" - command: pmm-admin add valkey superNodeNameSentinel{{ item }} --cluster=valkey-cluster --environment=valkey-test --username=default --password="{{ valkey_password }}" --service-name=sentinel{{ item }}-svc-{{ random_number }} --host=sentinel-{{ item }} --port={{ sentinel_start_port }} --custom-labels='role=sentinel' - env: - PMM_AGENT_SETUP_NODE_NAME: "valkey-sentinel-{{ item }}-node" + command: pmm-admin add valkey --cluster=valkey-cluster --environment=valkey-test --username=default --password="{{ valkey_password }}" --service-name=sentinel{{ item }}-svc-{{ random_number }} --host=sentinel-{{ item }} --port={{ sentinel_start_port }} --custom-labels='role=sentinel' loop: "{{ range(1, sentinel_count + 1) | list }}" ignore_errors: yes From afc3475782060ee66b18f7684a1860c3b76581d1 Mon Sep 17 00:00:00 2001 From: travagliad <215686151+travagliad@users.noreply.github.com> Date: Thu, 30 Oct 2025 12:53:42 +0000 Subject: [PATCH 09/21] fix --- pmm_qa/valkey/sentinel.conf.j2 | 5 +++++ pmm_qa/valkey/valkey-primary.conf.j2 | 5 +++++ pmm_qa/valkey/valkey-replica.conf.j2 | 5 +++++ 3 files changed, 15 insertions(+) diff --git a/pmm_qa/valkey/sentinel.conf.j2 b/pmm_qa/valkey/sentinel.conf.j2 index d8d75365..6799659f 100644 --- a/pmm_qa/valkey/sentinel.conf.j2 +++ b/pmm_qa/valkey/sentinel.conf.j2 @@ -20,3 +20,8 @@ protected-mode no # Logging loglevel notice logfile "" + +cluster-enabled yes +cluster-config-file nodes.conf +cluster-node-timeout 5000 +appendonly yes \ No newline at end of file diff --git a/pmm_qa/valkey/valkey-primary.conf.j2 b/pmm_qa/valkey/valkey-primary.conf.j2 index d4923875..18ef23ca 100644 --- a/pmm_qa/valkey/valkey-primary.conf.j2 +++ b/pmm_qa/valkey/valkey-primary.conf.j2 @@ -25,3 +25,8 @@ logfile "" # Memory management maxmemory-policy allkeys-lru + +cluster-enabled yes +cluster-config-file nodes.conf +cluster-node-timeout 5000 +appendonly yes \ No newline at end of file diff --git a/pmm_qa/valkey/valkey-replica.conf.j2 b/pmm_qa/valkey/valkey-replica.conf.j2 index c1667dae..93091f06 100644 --- a/pmm_qa/valkey/valkey-replica.conf.j2 +++ b/pmm_qa/valkey/valkey-replica.conf.j2 @@ -26,3 +26,8 @@ logfile "" # Memory management maxmemory-policy allkeys-lru + +cluster-enabled yes +cluster-config-file nodes.conf +cluster-node-timeout 5000 +appendonly yes \ No newline at end of file From 9f0527eb15625bd45301910d75dc487d8ec4198b Mon Sep 17 00:00:00 2001 From: travagliad <215686151+travagliad@users.noreply.github.com> Date: Thu, 30 Oct 2025 13:33:37 +0000 Subject: [PATCH 10/21] add cluster --- pmm_qa/pmm-framework.py | 11 ++- pmm_qa/valkey/sentinel.conf.j2 | 7 +- pmm_qa/valkey/valkey-cluster.yml | 152 +++++++++++++++++++++++++++++++ 3 files changed, 161 insertions(+), 9 deletions(-) create mode 100644 pmm_qa/valkey/valkey-cluster.yml diff --git a/pmm_qa/pmm-framework.py b/pmm_qa/pmm-framework.py index 24f4b769..33f15352 100755 --- a/pmm_qa/pmm-framework.py +++ b/pmm_qa/pmm-framework.py @@ -800,6 +800,7 @@ def setup_valkey(db_type, db_version=None, db_config=None, args=None): # Gather Version details valkey_version = os.getenv('VALKEY_VERSION') or db_version or database_configs[db_type]["versions"][-1] + setup_type_value = get_value('SETUP_TYPE', db_type, args, db_config).lower() # Define environment variables for playbook env_vars = { @@ -807,11 +808,15 @@ def setup_valkey(db_type, db_version=None, db_config=None, args=None): 'VALKEY_VERSION': valkey_version, 'CLIENT_VERSION': get_value('CLIENT_VERSION', db_type, args, db_config), 'ADMIN_PASSWORD': os.getenv('ADMIN_PASSWORD') or args.pmm_server_password or 'admin', - 'PMM_QA_GIT_BRANCH': os.getenv('PMM_QA_GIT_BRANCH') or 'v3' + 'PMM_QA_GIT_BRANCH': os.getenv('PMM_QA_GIT_BRANCH') or 'v3', + 'SETUP_TYPE': setup_type_value } - # Ansible playbook filename - playbook_filename = 'valkey/valkey.yml' + # Choose playbook based on SETUP_TYPE (default sentinel/replication vs cluster) + if setup_type_value in ("cluster"): + playbook_filename = 'valkey/valkey-cluster.yml' + else: + playbook_filename = 'valkey/valkey.yml' # Call the function to run the Ansible playbook run_ansible_playbook(playbook_filename, env_vars, args) diff --git a/pmm_qa/valkey/sentinel.conf.j2 b/pmm_qa/valkey/sentinel.conf.j2 index 6799659f..9137777e 100644 --- a/pmm_qa/valkey/sentinel.conf.j2 +++ b/pmm_qa/valkey/sentinel.conf.j2 @@ -19,9 +19,4 @@ protected-mode no # Logging loglevel notice -logfile "" - -cluster-enabled yes -cluster-config-file nodes.conf -cluster-node-timeout 5000 -appendonly yes \ No newline at end of file +logfile "" \ No newline at end of file diff --git a/pmm_qa/valkey/valkey-cluster.yml b/pmm_qa/valkey/valkey-cluster.yml new file mode 100644 index 00000000..057a5601 --- /dev/null +++ b/pmm_qa/valkey/valkey-cluster.yml @@ -0,0 +1,152 @@ +--- +- name: Deploy Valkey Native Cluster + hosts: localhost + gather_facts: false + vars: + pmm_server_ip: "{{ lookup('vars', 'extra_pmm_server_ip', default=lookup('env','PMM_SERVER_IP') | default('127.0.0.1', true) ) }}" + metrics_mode: "{{ lookup('env', 'metrics_mode') }}" + client_version: "{{ lookup('vars', 'extra_client_version', default=lookup('env','CLIENT_VERSION') | default('3-dev-latest', true) ) }}" + admin_password: "{{ lookup('vars', 'extra_admin_password', default=lookup('env','ADMIN_PASSWORD') | default('admin', true) ) }}" + valkey_version: "{{ lookup('env', 'VALKEY_VERSION') | default('7', true) }}" + valkey_image: "valkey/valkey:{{ valkey_version }}" + valkey_network_name: "pmm-qa" + valkey_password: "VKvl41568AsE" + valkey_cluster_node_count: 6 # 3 masters + 3 replicas + valkey_cluster_replicas: 1 # --cluster-replicas value + valkey_cluster_start_port: 6379 # Base host port to map sequentially + valkey_config_dir: "{{ lookup('env', 'HOME') }}/valkey/cluster-config" + valkey_data_prefix: "valkey-cluster-node" # Volume/container naming prefix + pmm_server_name: "pmm-server" + + tasks: + - name: Set Random Number Fact + set_fact: + random_number: "{{ (10000 | random) | int }}" + + - name: Create Docker network + community.docker.docker_network: + name: "{{ valkey_network_name }}" + driver: bridge + state: present + + - name: Create cluster config directory + file: + path: "{{ valkey_config_dir }}" + state: directory + mode: "0755" + + - name: Create per-node config subdirectories + file: + path: "{{ valkey_config_dir }}/{{ valkey_data_prefix }}-{{ item }}" + state: directory + mode: "0755" + loop: "{{ range(1, valkey_cluster_node_count + 1) | list }}" + + - name: Generate base configuration for each cluster node + copy: + dest: "{{ valkey_config_dir }}/{{ valkey_data_prefix }}-{{ item }}/valkey.conf" + mode: "0644" + content: | + port 6379 + requirepass {{ valkey_password }} + masterauth {{ valkey_password }} + protected-mode no + appendonly yes + cluster-enabled yes + cluster-config-file nodes.conf + cluster-node-timeout 5000 + # Minimal persistence & logging + save 900 1 + save 300 10 + save 60 10000 + loglevel notice + loop: "{{ range(1, valkey_cluster_node_count + 1) | list }}" + + - name: Create docker volumes for nodes + community.docker.docker_volume: + name: "{{ valkey_data_prefix }}-{{ item }}-data" + state: present + loop: "{{ range(1, valkey_cluster_node_count + 1) | list }}" + + - name: Start cluster node containers + community.docker.docker_container: + name: "{{ valkey_data_prefix }}-{{ item }}" + image: "{{ valkey_image }}" + state: started + restart_policy: unless-stopped + networks: + - name: "{{ valkey_network_name }}" + ports: + - "{{ valkey_cluster_start_port + item - 1 }}:6379" + volumes: + - "{{ valkey_data_prefix }}-{{ item }}-data:/data" + - "{{ valkey_config_dir }}/{{ valkey_data_prefix }}-{{ item }}/valkey.conf:/usr/local/etc/valkey/valkey.conf:ro" + command: ["valkey-server", "/usr/local/etc/valkey/valkey.conf"] + healthcheck: + test: ["CMD", "valkey-cli", "-a", "{{ valkey_password }}", "ping"] + interval: 10s + timeout: 5s + retries: 5 + loop: "{{ range(1, valkey_cluster_node_count + 1) | list }}" + + - name: Wait for cluster node ports + wait_for: + host: localhost + port: "{{ valkey_cluster_start_port + item - 1 }}" + timeout: 30 + delay: 1 + loop: "{{ range(1, valkey_cluster_node_count + 1) | list }}" + + - name: Build list of internal container addresses + set_fact: + cluster_node_addresses: "{{ range(1, valkey_cluster_node_count + 1) | map('string') | map('regex_replace', '^(.*)$', valkey_data_prefix ~ '-\\1:6379') | list }}" + + - name: Display cluster node addresses + debug: + var: cluster_node_addresses + + - name: Create the cluster (run once) + community.docker.docker_container_exec: + container: "{{ valkey_data_prefix }}-1" + command: >- + bash -c "yes 'yes' | valkey-cli --cluster create {{ cluster_node_addresses | join(' ') }} --cluster-replicas {{ valkey_cluster_replicas }} -a {{ valkey_password }}" + register: cluster_create_output + changed_when: "'[OK]' in cluster_create_output.stdout" + + - name: Show cluster creation output + debug: + msg: "{{ cluster_create_output.stdout_lines }}" + + - name: Check cluster info on first node + community.docker.docker_container_exec: + container: "{{ valkey_data_prefix }}-1" + command: valkey-cli -a "{{ valkey_password }}" cluster info + register: cluster_info + + - name: Display cluster info + debug: + msg: "{{ cluster_info.stdout_lines }}" + + - name: Install PMM Client in each container + ansible.builtin.include_tasks: ../tasks/install_pmm_client.yml + loop: >- + {{ range(1, valkey_cluster_node_count + 1) | map('string') | map('regex_replace', '^(.*)$', valkey_data_prefix ~ '-\1') | list }} + loop_control: + loop_var: current_container_name + vars: + container_name: "{{ current_container_name }}" + + - name: Configure pmm-agent on cluster nodes + community.docker.docker_container_exec: + container: "{{ valkey_data_prefix }}-{{ item }}" + command: pmm-admin config {{ valkey_data_prefix }}-{{ item }}-svc-{{ random_number }} generic {{ valkey_data_prefix }}-{{ item }}-node-{{ random_number }} + loop: "{{ range(1, valkey_cluster_node_count + 1) | list }}" + ignore_errors: yes + + - name: Add cluster nodes to monitoring + community.docker.docker_container_exec: + container: "{{ valkey_data_prefix }}-{{ item }}" + command: >- + pmm-admin add valkey --cluster=valkey-native-cluster --environment=valkey-test --username=default --password="{{ valkey_password }}" --service-name={{ valkey_data_prefix }}-{{ item }}-svc-{{ random_number }} --host={{ valkey_data_prefix }}-{{ item }} --port=6379 --custom-labels='role=cluster-node' + loop: "{{ range(1, valkey_cluster_node_count + 1) | list }}" + ignore_errors: yes From c1fdd80a2ba4152e534dfd87ddf794b92e5b5305 Mon Sep 17 00:00:00 2001 From: travagliad <215686151+travagliad@users.noreply.github.com> Date: Thu, 30 Oct 2025 14:51:03 +0000 Subject: [PATCH 11/21] fix --- pmm_qa/valkey/valkey-cluster.yml | 158 ++++++++++++++++++++++++------- 1 file changed, 124 insertions(+), 34 deletions(-) diff --git a/pmm_qa/valkey/valkey-cluster.yml b/pmm_qa/valkey/valkey-cluster.yml index 057a5601..92e913a9 100644 --- a/pmm_qa/valkey/valkey-cluster.yml +++ b/pmm_qa/valkey/valkey-cluster.yml @@ -11,18 +11,26 @@ valkey_image: "valkey/valkey:{{ valkey_version }}" valkey_network_name: "pmm-qa" valkey_password: "VKvl41568AsE" - valkey_cluster_node_count: 6 # 3 masters + 3 replicas - valkey_cluster_replicas: 1 # --cluster-replicas value + valkey_cluster_node_count: 6 # total nodes + valkey_cluster_primaries: 3 # number of primary nodes + valkey_cluster_replicas: 1 # replicas per primary valkey_cluster_start_port: 6379 # Base host port to map sequentially valkey_config_dir: "{{ lookup('env', 'HOME') }}/valkey/cluster-config" - valkey_data_prefix: "valkey-cluster-node" # Volume/container naming prefix - pmm_server_name: "pmm-server" + valkey_primary_prefix: "valkey-primary-" + valkey_replica_prefix: "valkey-replica-" + pmm_server_name: "pmm-server" tasks: - name: Set Random Number Fact set_fact: random_number: "{{ (10000 | random) | int }}" + - name: Validate cluster counts + assert: + that: + - valkey_cluster_node_count == valkey_cluster_primaries + (valkey_cluster_primaries * valkey_cluster_replicas) + fail_msg: "Mismatch: total nodes must equal primaries + primaries*replicas" + - name: Create Docker network community.docker.docker_network: name: "{{ valkey_network_name }}" @@ -35,16 +43,43 @@ state: directory mode: "0755" - - name: Create per-node config subdirectories + - name: Create per-primary config directories file: - path: "{{ valkey_config_dir }}/{{ valkey_data_prefix }}-{{ item }}" + path: "{{ valkey_config_dir }}/{{ valkey_primary_prefix }}{{ item }}" state: directory mode: "0755" - loop: "{{ range(1, valkey_cluster_node_count + 1) | list }}" + loop: "{{ range(1, valkey_cluster_primaries + 1) | list }}" + + - name: Create per-replica config directories + file: + path: "{{ valkey_config_dir }}/{{ valkey_replica_prefix }}{{ item }}" + state: directory + mode: "0755" + loop: "{{ range(valkey_cluster_primaries + 1, valkey_cluster_node_count + 1) | list }}" + + - name: Generate base configuration for each primary + copy: + dest: "{{ valkey_config_dir }}/{{ valkey_primary_prefix }}{{ item }}/valkey.conf" + mode: "0644" + content: | + port 6379 + requirepass {{ valkey_password }} + masterauth {{ valkey_password }} + protected-mode no + appendonly yes + cluster-enabled yes + cluster-config-file nodes.conf + cluster-node-timeout 5000 + # Minimal persistence & logging + save 900 1 + save 300 10 + save 60 10000 + loglevel notice + loop: "{{ range(1, valkey_cluster_primaries + 1) | list }}" - - name: Generate base configuration for each cluster node + - name: Generate base configuration for each replica copy: - dest: "{{ valkey_config_dir }}/{{ valkey_data_prefix }}-{{ item }}/valkey.conf" + dest: "{{ valkey_config_dir }}/{{ valkey_replica_prefix }}{{ item }}/valkey.conf" mode: "0644" content: | port 6379 @@ -60,17 +95,23 @@ save 300 10 save 60 10000 loglevel notice - loop: "{{ range(1, valkey_cluster_node_count + 1) | list }}" + loop: "{{ range(valkey_cluster_primaries + 1, valkey_cluster_node_count + 1) | list }}" + + - name: Create docker volumes for primary nodes + community.docker.docker_volume: + name: "{{ valkey_primary_prefix }}{{ item }}-data" + state: present + loop: "{{ range(1, valkey_cluster_primaries + 1) | list }}" - - name: Create docker volumes for nodes + - name: Create docker volumes for replica nodes community.docker.docker_volume: - name: "{{ valkey_data_prefix }}-{{ item }}-data" + name: "{{ valkey_replica_prefix }}{{ item }}-data" state: present - loop: "{{ range(1, valkey_cluster_node_count + 1) | list }}" + loop: "{{ range(valkey_cluster_primaries + 1, valkey_cluster_node_count + 1) | list }}" - - name: Start cluster node containers + - name: Start primary node containers community.docker.docker_container: - name: "{{ valkey_data_prefix }}-{{ item }}" + name: "{{ valkey_primary_prefix }}{{ item }}" image: "{{ valkey_image }}" state: started restart_policy: unless-stopped @@ -79,27 +120,58 @@ ports: - "{{ valkey_cluster_start_port + item - 1 }}:6379" volumes: - - "{{ valkey_data_prefix }}-{{ item }}-data:/data" - - "{{ valkey_config_dir }}/{{ valkey_data_prefix }}-{{ item }}/valkey.conf:/usr/local/etc/valkey/valkey.conf:ro" + - "{{ valkey_primary_prefix }}{{ item }}-data:/data" + - "{{ valkey_config_dir }}/{{ valkey_primary_prefix }}{{ item }}/valkey.conf:/usr/local/etc/valkey/valkey.conf:ro" + command: ["valkey-server", "/usr/local/etc/valkey/valkey.conf"] + healthcheck: + test: ["CMD", "valkey-cli", "-a", "{{ valkey_password }}", "ping"] + interval: 10s + timeout: 5s + retries: 5 + loop: "{{ range(1, valkey_cluster_primaries + 1) | list }}" + + - name: Start replica node containers + community.docker.docker_container: + name: "{{ valkey_replica_prefix }}{{ item }}" + image: "{{ valkey_image }}" + state: started + restart_policy: unless-stopped + networks: + - name: "{{ valkey_network_name }}" + ports: + - "{{ (valkey_cluster_start_port + valkey_cluster_primaries - 1) + item }}:6379" + volumes: + - "{{ valkey_replica_prefix }}{{ item }}-data:/data" + - "{{ valkey_config_dir }}/{{ valkey_replica_prefix }}{{ item }}/valkey.conf:/usr/local/etc/valkey/valkey.conf:ro" command: ["valkey-server", "/usr/local/etc/valkey/valkey.conf"] healthcheck: test: ["CMD", "valkey-cli", "-a", "{{ valkey_password }}", "ping"] interval: 10s timeout: 5s retries: 5 - loop: "{{ range(1, valkey_cluster_node_count + 1) | list }}" + loop: "{{ range(valkey_cluster_primaries + 1, valkey_cluster_node_count + 1) | list }}" - - name: Wait for cluster node ports + - name: Wait for primary node ports wait_for: host: localhost port: "{{ valkey_cluster_start_port + item - 1 }}" timeout: 30 delay: 1 - loop: "{{ range(1, valkey_cluster_node_count + 1) | list }}" + loop: "{{ range(1, valkey_cluster_primaries + 1) | list }}" + + - name: Wait for replica node ports + wait_for: + host: localhost + port: "{{ (valkey_cluster_start_port + valkey_cluster_primaries - 1) + item }}" + timeout: 30 + delay: 1 + loop: "{{ range(valkey_cluster_primaries + 1, valkey_cluster_node_count + 1) | list }}" - name: Build list of internal container addresses set_fact: - cluster_node_addresses: "{{ range(1, valkey_cluster_node_count + 1) | map('string') | map('regex_replace', '^(.*)$', valkey_data_prefix ~ '-\\1:6379') | list }}" + primary_nodes: "{{ range(1, valkey_cluster_primaries + 1) | map('string') | map('regex_replace', '^(.*)$', valkey_primary_prefix ~ '\\1') | list }}" + replica_nodes: "{{ range(valkey_cluster_primaries + 1, valkey_cluster_node_count + 1) | map('string') | map('regex_replace', '^(.*)$', valkey_replica_prefix ~ '\\1') | list }}" + cluster_node_addresses: "{{ primary_nodes | map('regex_replace', '^(.*)$', '\\1:6379') | list + replica_nodes | map('regex_replace', '^(.*)$', '\\1:6379') | list }}" - name: Display cluster node addresses debug: @@ -107,7 +179,7 @@ - name: Create the cluster (run once) community.docker.docker_container_exec: - container: "{{ valkey_data_prefix }}-1" + container: "{{ valkey_primary_prefix }}1" command: >- bash -c "yes 'yes' | valkey-cli --cluster create {{ cluster_node_addresses | join(' ') }} --cluster-replicas {{ valkey_cluster_replicas }} -a {{ valkey_password }}" register: cluster_create_output @@ -117,9 +189,9 @@ debug: msg: "{{ cluster_create_output.stdout_lines }}" - - name: Check cluster info on first node + - name: Check cluster info on first primary community.docker.docker_container_exec: - container: "{{ valkey_data_prefix }}-1" + container: "{{ valkey_primary_prefix }}1" command: valkey-cli -a "{{ valkey_password }}" cluster info register: cluster_info @@ -129,24 +201,42 @@ - name: Install PMM Client in each container ansible.builtin.include_tasks: ../tasks/install_pmm_client.yml - loop: >- - {{ range(1, valkey_cluster_node_count + 1) | map('string') | map('regex_replace', '^(.*)$', valkey_data_prefix ~ '-\1') | list }} + loop: "{{ primary_nodes + replica_nodes }}" loop_control: loop_var: current_container_name vars: container_name: "{{ current_container_name }}" - - name: Configure pmm-agent on cluster nodes + - name: Configure pmm-agent on primary nodes community.docker.docker_container_exec: - container: "{{ valkey_data_prefix }}-{{ item }}" - command: pmm-admin config {{ valkey_data_prefix }}-{{ item }}-svc-{{ random_number }} generic {{ valkey_data_prefix }}-{{ item }}-node-{{ random_number }} - loop: "{{ range(1, valkey_cluster_node_count + 1) | list }}" + container: "{{ item }}" + command: pmm-admin config {{ item }}-svc-{{ random_number }} generic {{ item }}-node-{{ random_number }} + loop: "{{ primary_nodes }}" + ignore_errors: yes + + - name: Configure pmm-agent on replica nodes + community.docker.docker_container_exec: + container: "{{ item }}" + command: pmm-admin config {{ item }}-svc-{{ random_number }} generic {{ item }}-node-{{ random_number }} + loop: "{{ replica_nodes }}" + ignore_errors: yes + + - name: Add primary nodes to monitoring + community.docker.docker_container_exec: + container: "{{ item }}" + command: >- + pmm-admin add valkey --cluster=valkey-native-cluster --environment=valkey-test --username=default + --password="{{ valkey_password }}" --service-name={{ item }}-svc-{{ random_number }} + --host={{ item }} --port=6379 --custom-labels='role=primary' + loop: "{{ primary_nodes }}" ignore_errors: yes - - name: Add cluster nodes to monitoring + - name: Add replica nodes to monitoring community.docker.docker_container_exec: - container: "{{ valkey_data_prefix }}-{{ item }}" + container: "{{ item }}" command: >- - pmm-admin add valkey --cluster=valkey-native-cluster --environment=valkey-test --username=default --password="{{ valkey_password }}" --service-name={{ valkey_data_prefix }}-{{ item }}-svc-{{ random_number }} --host={{ valkey_data_prefix }}-{{ item }} --port=6379 --custom-labels='role=cluster-node' - loop: "{{ range(1, valkey_cluster_node_count + 1) | list }}" + pmm-admin add valkey --cluster=valkey-native-cluster --environment=valkey-test --username=default + --password="{{ valkey_password }}" --service-name={{ item }}-svc-{{ random_number }} + --host={{ item }} --port=6379 --custom-labels='role=replica' + loop: "{{ replica_nodes }}" ignore_errors: yes From ad2535c78b27a3c39b2bcc920ebeace3fa5109df Mon Sep 17 00:00:00 2001 From: travagliad <215686151+travagliad@users.noreply.github.com> Date: Thu, 30 Oct 2025 14:55:32 +0000 Subject: [PATCH 12/21] fix --- pmm_qa/pmm-framework.py | 8 ++++---- pmm_qa/valkey/{valkey.yml => valkey-sentinel.yml} | 0 2 files changed, 4 insertions(+), 4 deletions(-) rename pmm_qa/valkey/{valkey.yml => valkey-sentinel.yml} (100%) diff --git a/pmm_qa/pmm-framework.py b/pmm_qa/pmm-framework.py index 33f15352..7b477332 100755 --- a/pmm_qa/pmm-framework.py +++ b/pmm_qa/pmm-framework.py @@ -812,11 +812,11 @@ def setup_valkey(db_type, db_version=None, db_config=None, args=None): 'SETUP_TYPE': setup_type_value } - # Choose playbook based on SETUP_TYPE (default sentinel/replication vs cluster) - if setup_type_value in ("cluster"): - playbook_filename = 'valkey/valkey-cluster.yml' + # Choose playbook based on SETUP_TYPE (cluster is default; sentinel only when explicitly requested) + if setup_type_value in ("sentinel", "sentinels"): + playbook_filename = 'valkey/valkey-sentinel.yml' else: - playbook_filename = 'valkey/valkey.yml' + playbook_filename = 'valkey/valkey-cluster.yml' # Call the function to run the Ansible playbook run_ansible_playbook(playbook_filename, env_vars, args) diff --git a/pmm_qa/valkey/valkey.yml b/pmm_qa/valkey/valkey-sentinel.yml similarity index 100% rename from pmm_qa/valkey/valkey.yml rename to pmm_qa/valkey/valkey-sentinel.yml From fc07d8632fac857c10907f1b283a7345f8c33de8 Mon Sep 17 00:00:00 2001 From: travagliad <215686151+travagliad@users.noreply.github.com> Date: Thu, 30 Oct 2025 15:01:46 +0000 Subject: [PATCH 13/21] fix --- pmm_qa/valkey/valkey-cluster.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pmm_qa/valkey/valkey-cluster.yml b/pmm_qa/valkey/valkey-cluster.yml index 92e913a9..c9e0e619 100644 --- a/pmm_qa/valkey/valkey-cluster.yml +++ b/pmm_qa/valkey/valkey-cluster.yml @@ -16,9 +16,9 @@ valkey_cluster_replicas: 1 # replicas per primary valkey_cluster_start_port: 6379 # Base host port to map sequentially valkey_config_dir: "{{ lookup('env', 'HOME') }}/valkey/cluster-config" - valkey_primary_prefix: "valkey-primary-" - valkey_replica_prefix: "valkey-replica-" - pmm_server_name: "pmm-server" + valkey_primary_prefix: "valkey-primary-" + valkey_replica_prefix: "valkey-replica-" + pmm_server_name: "pmm-server" tasks: - name: Set Random Number Fact From 1eb7b2f21f46d4f443dff6f9d129c921109fe032 Mon Sep 17 00:00:00 2001 From: travagliad <215686151+travagliad@users.noreply.github.com> Date: Thu, 30 Oct 2025 15:08:53 +0000 Subject: [PATCH 14/21] fix --- pmm_qa/valkey/valkey-cluster.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pmm_qa/valkey/valkey-cluster.yml b/pmm_qa/valkey/valkey-cluster.yml index c9e0e619..cb5eb2d2 100644 --- a/pmm_qa/valkey/valkey-cluster.yml +++ b/pmm_qa/valkey/valkey-cluster.yml @@ -171,7 +171,10 @@ set_fact: primary_nodes: "{{ range(1, valkey_cluster_primaries + 1) | map('string') | map('regex_replace', '^(.*)$', valkey_primary_prefix ~ '\\1') | list }}" replica_nodes: "{{ range(valkey_cluster_primaries + 1, valkey_cluster_node_count + 1) | map('string') | map('regex_replace', '^(.*)$', valkey_replica_prefix ~ '\\1') | list }}" - cluster_node_addresses: "{{ primary_nodes | map('regex_replace', '^(.*)$', '\\1:6379') | list + replica_nodes | map('regex_replace', '^(.*)$', '\\1:6379') | list }}" + + - name: Build combined list of internal container addresses + set_fact: + cluster_node_addresses: "{{ (primary_nodes | map('regex_replace', '^(.*)$', '\\1:6379') | list) + (replica_nodes | map('regex_replace', '^(.*)$', '\\1:6379') | list) }}" - name: Display cluster node addresses debug: From fa080c028a95e976f645b17aeee255045650f765 Mon Sep 17 00:00:00 2001 From: travagliad <215686151+travagliad@users.noreply.github.com> Date: Thu, 30 Oct 2025 15:46:20 +0000 Subject: [PATCH 15/21] fix --- pmm_qa/valkey/valkey-cluster.yml | 24 +++--------- pmm_qa/valkey/valkey-sentinel.yml | 61 +++++++++++++------------------ 2 files changed, 31 insertions(+), 54 deletions(-) diff --git a/pmm_qa/valkey/valkey-cluster.yml b/pmm_qa/valkey/valkey-cluster.yml index cb5eb2d2..f63763a4 100644 --- a/pmm_qa/valkey/valkey-cluster.yml +++ b/pmm_qa/valkey/valkey-cluster.yml @@ -112,6 +112,7 @@ - name: Start primary node containers community.docker.docker_container: name: "{{ valkey_primary_prefix }}{{ item }}" + hostname: "{{ valkey_primary_prefix }}{{ item }}-node-{{ random_number }}" image: "{{ valkey_image }}" state: started restart_policy: unless-stopped @@ -133,6 +134,7 @@ - name: Start replica node containers community.docker.docker_container: name: "{{ valkey_replica_prefix }}{{ item }}" + hostname: "{{ valkey_replica_prefix }}{{ item }}-node-{{ random_number }}" image: "{{ valkey_image }}" state: started restart_policy: unless-stopped @@ -210,26 +212,12 @@ vars: container_name: "{{ current_container_name }}" - - name: Configure pmm-agent on primary nodes - community.docker.docker_container_exec: - container: "{{ item }}" - command: pmm-admin config {{ item }}-svc-{{ random_number }} generic {{ item }}-node-{{ random_number }} - loop: "{{ primary_nodes }}" - ignore_errors: yes - - - name: Configure pmm-agent on replica nodes - community.docker.docker_container_exec: - container: "{{ item }}" - command: pmm-admin config {{ item }}-svc-{{ random_number }} generic {{ item }}-node-{{ random_number }} - loop: "{{ replica_nodes }}" - ignore_errors: yes - - name: Add primary nodes to monitoring community.docker.docker_container_exec: container: "{{ item }}" command: >- - pmm-admin add valkey --cluster=valkey-native-cluster --environment=valkey-test --username=default - --password="{{ valkey_password }}" --service-name={{ item }}-svc-{{ random_number }} + pmm-admin add valkey --cluster=valkey-native-cluster --environment=valkey-test --username=default \ + --password="{{ valkey_password }}" --service-name={{ item }}-svc-{{ random_number }} \ --host={{ item }} --port=6379 --custom-labels='role=primary' loop: "{{ primary_nodes }}" ignore_errors: yes @@ -238,8 +226,8 @@ community.docker.docker_container_exec: container: "{{ item }}" command: >- - pmm-admin add valkey --cluster=valkey-native-cluster --environment=valkey-test --username=default - --password="{{ valkey_password }}" --service-name={{ item }}-svc-{{ random_number }} + pmm-admin add valkey --cluster=valkey-native-cluster --environment=valkey-test --username=default \ + --password="{{ valkey_password }}" --service-name={{ item }}-svc-{{ random_number }} \ --host={{ item }} --port=6379 --custom-labels='role=replica' loop: "{{ replica_nodes }}" ignore_errors: yes diff --git a/pmm_qa/valkey/valkey-sentinel.yml b/pmm_qa/valkey/valkey-sentinel.yml index 0b21aee1..37678708 100644 --- a/pmm_qa/valkey/valkey-sentinel.yml +++ b/pmm_qa/valkey/valkey-sentinel.yml @@ -37,39 +37,39 @@ file: path: "{{ valkey_config_dir }}" state: directory - mode: '0755' + mode: "0755" - name: Create a config directory per Sentinel file: path: "{{ valkey_config_dir }}/sentinel-{{ item }}" state: directory - mode: '0755' + mode: "0755" loop: "{{ range(1, sentinel_count + 1) | list }}" - name: Create data directory file: path: "{{ valkey_data_dir }}" state: directory - mode: '0755' + mode: "0755" - name: Generate Valkey primary configuration template: src: valkey-primary.conf.j2 dest: "{{ valkey_config_dir }}/valkey-primary.conf" - mode: '0644' + mode: "0644" - name: Generate Valkey replica configurations template: src: valkey-replica.conf.j2 dest: "{{ valkey_config_dir }}/valkey-replica-{{ item }}.conf" - mode: '0644' + mode: "0644" loop: "{{ range(1, valkey_replica_count + 1) | list }}" - name: Generate Sentinel configurations template: src: sentinel.conf.j2 dest: "{{ valkey_config_dir }}/sentinel-{{ item }}/sentinel.conf" - mode: '0664' + mode: "0664" loop: "{{ range(1, sentinel_count + 1) | list }}" - name: Create Docker volume for primary data @@ -86,6 +86,7 @@ - name: Start Valkey primary container community.docker.docker_container: name: "valkey-primary" + hostname: "valkey-primary-node-{{ random_number }}" image: "{{ valkey_image }}" state: started restart_policy: unless-stopped @@ -113,6 +114,7 @@ - name: Start Valkey replica containers community.docker.docker_container: name: "valkey-replica-{{ item }}" + hostname: "valkey-replica-{{ item }}-node-{{ random_number }}" image: "{{ valkey_image }}" state: started restart_policy: unless-stopped @@ -142,6 +144,7 @@ - name: Start Sentinel containers community.docker.docker_container: name: "sentinel-{{ item }}" + hostname: "sentinel-{{ item }}-node-{{ random_number }}" image: "{{ valkey_image }}" state: started restart_policy: unless-stopped @@ -190,51 +193,37 @@ - name: Install PMM Client in each container ansible.builtin.include_tasks: ../tasks/install_pmm_client.yml loop: >- - {{ ['valkey-primary'] - + (range(1, valkey_replica_count + 1) | map('string') | map('regex_replace', '^(.*)$', 'valkey-replica-\1') | list) - + (range(1, sentinel_count + 1) | map('string') | map('regex_replace', '^(.*)$', 'sentinel-\1') | list) - }} + {{ ['valkey-primary'] + + (range(1, valkey_replica_count + 1) | map('string') | map('regex_replace', '^(.*)$', 'valkey-replica-\1') | list) + + (range(1, sentinel_count + 1) | map('string') | map('regex_replace', '^(.*)$', 'sentinel-\1') | list) + }} loop_control: loop_var: current_container_name vars: container_name: "{{ current_container_name }}" - - - name: Configure pmm-agent on primary - community.docker.docker_container_exec: - container: "valkey-primary" - command: pmm-admin config valkey-primary-svc-{{ random_number }} generic valkey-primary-node-{{ random_number }} - ignore_errors: yes - - name: Add the primary to monitoring community.docker.docker_container_exec: container: "valkey-primary" - command: pmm-admin add valkey --cluster=valkey-cluster --replication-set=valkey-repl --environment=valkey-test --username=default --password="{{ valkey_password }}" --service-name=valkey-primary-svc-{{ random_number }} --host=valkey-primary --port=6379 --custom-labels='role=primary' + command: >- + pmm-admin add valkey --cluster=valkey-cluster --replication-set=valkey-repl --environment=valkey-test \ + --username=default --password="{{ valkey_password }}" --service-name=valkey-primary-svc-{{ random_number }} \ + --host=valkey-primary --port=6379 --custom-labels='role=primary' ignore_errors: yes - - - name: Configure pmm-agent on replicas - community.docker.docker_container_exec: - container: "valkey-replica-{{ item }}" - command: pmm-admin config valkey-replica{{ item }}-svc-{{ random_number }} generic valkey-replica-{{ item }}-node-{{ random_number }} - loop: "{{ range(1, valkey_replica_count + 1) | list }}" - ignore_errors: yes - - name: Add the replicas to monitoring community.docker.docker_container_exec: container: "valkey-replica-{{ item }}" - command: pmm-admin add valkey --cluster=valkey-cluster --replication-set=valkey-repl --environment=valkey-test --username=default --password="{{ valkey_password }}" --service-name=valkey-replica{{ item }}-svc-{{ random_number }} --host=valkey-replica-{{ item }} --port=6379 --custom-labels='role=replica' + command: >- + pmm-admin add valkey --cluster=valkey-cluster --replication-set=valkey-repl --environment=valkey-test \ + --username=default --password="{{ valkey_password }}" --service-name=valkey-replica{{ item }}-svc-{{ random_number }} \ + --host=valkey-replica-{{ item }} --port=6379 --custom-labels='role=replica' loop: "{{ range(1, valkey_replica_count + 1) | list }}" ignore_errors: yes - - - name: Configure pmm-agent on sentinels - community.docker.docker_container_exec: - container: "sentinel-{{ item }}" - command: pmm-admin config sentinel{{ item }}-svc-{{ random_number }} generic sentinel-{{ item }}-node-{{ random_number }} - loop: "{{ range(1, sentinel_count + 1) | list }}" - ignore_errors: yes - - name: Add Sentinels to monitoring community.docker.docker_container_exec: container: "sentinel-{{ item }}" - command: pmm-admin add valkey --cluster=valkey-cluster --environment=valkey-test --username=default --password="{{ valkey_password }}" --service-name=sentinel{{ item }}-svc-{{ random_number }} --host=sentinel-{{ item }} --port={{ sentinel_start_port }} --custom-labels='role=sentinel' + command: >- + pmm-admin add valkey --cluster=valkey-cluster --environment=valkey-test --username=default \ + --password="{{ valkey_password }}" --service-name=sentinel{{ item }}-svc-{{ random_number }} \ + --host=sentinel-{{ item }} --port={{ sentinel_start_port }} --custom-labels='role=sentinel' loop: "{{ range(1, sentinel_count + 1) | list }}" ignore_errors: yes From 6a6da1e1178d01af7076fb9ffc9627dfa5178fbf Mon Sep 17 00:00:00 2001 From: travagliad <215686151+travagliad@users.noreply.github.com> Date: Thu, 30 Oct 2025 16:44:06 +0000 Subject: [PATCH 16/21] fix --- pmm_qa/valkey/valkey-cluster.yml | 10 ++++++---- pmm_qa/valkey/valkey-sentinel.yml | 12 ++++++------ 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/pmm_qa/valkey/valkey-cluster.yml b/pmm_qa/valkey/valkey-cluster.yml index f63763a4..8acee9c6 100644 --- a/pmm_qa/valkey/valkey-cluster.yml +++ b/pmm_qa/valkey/valkey-cluster.yml @@ -95,6 +95,8 @@ save 300 10 save 60 10000 loglevel notice + slowlog-max-len 500 + slowlog-log-slower-than 5000 loop: "{{ range(valkey_cluster_primaries + 1, valkey_cluster_node_count + 1) | list }}" - name: Create docker volumes for primary nodes @@ -216,8 +218,8 @@ community.docker.docker_container_exec: container: "{{ item }}" command: >- - pmm-admin add valkey --cluster=valkey-native-cluster --environment=valkey-test --username=default \ - --password="{{ valkey_password }}" --service-name={{ item }}-svc-{{ random_number }} \ + pmm-admin add valkey --cluster=valkey-native-cluster --environment=valkey-test --username=default + --password="{{ valkey_password }}" --service-name={{ item }}-svc-{{ random_number }} --host={{ item }} --port=6379 --custom-labels='role=primary' loop: "{{ primary_nodes }}" ignore_errors: yes @@ -226,8 +228,8 @@ community.docker.docker_container_exec: container: "{{ item }}" command: >- - pmm-admin add valkey --cluster=valkey-native-cluster --environment=valkey-test --username=default \ - --password="{{ valkey_password }}" --service-name={{ item }}-svc-{{ random_number }} \ + pmm-admin add valkey --cluster=valkey-native-cluster --environment=valkey-test --username=default + --password="{{ valkey_password }}" --service-name={{ item }}-svc-{{ random_number }} --host={{ item }} --port=6379 --custom-labels='role=replica' loop: "{{ replica_nodes }}" ignore_errors: yes diff --git a/pmm_qa/valkey/valkey-sentinel.yml b/pmm_qa/valkey/valkey-sentinel.yml index 37678708..2958dbd8 100644 --- a/pmm_qa/valkey/valkey-sentinel.yml +++ b/pmm_qa/valkey/valkey-sentinel.yml @@ -205,16 +205,16 @@ community.docker.docker_container_exec: container: "valkey-primary" command: >- - pmm-admin add valkey --cluster=valkey-cluster --replication-set=valkey-repl --environment=valkey-test \ - --username=default --password="{{ valkey_password }}" --service-name=valkey-primary-svc-{{ random_number }} \ + pmm-admin add valkey --cluster=valkey-cluster --replication-set=valkey-repl --environment=valkey-test + --username=default --password="{{ valkey_password }}" --service-name=valkey-primary-svc-{{ random_number }} --host=valkey-primary --port=6379 --custom-labels='role=primary' ignore_errors: yes - name: Add the replicas to monitoring community.docker.docker_container_exec: container: "valkey-replica-{{ item }}" command: >- - pmm-admin add valkey --cluster=valkey-cluster --replication-set=valkey-repl --environment=valkey-test \ - --username=default --password="{{ valkey_password }}" --service-name=valkey-replica{{ item }}-svc-{{ random_number }} \ + pmm-admin add valkey --cluster=valkey-cluster --replication-set=valkey-repl --environment=valkey-test + --username=default --password="{{ valkey_password }}" --service-name=valkey-replica{{ item }}-svc-{{ random_number }} --host=valkey-replica-{{ item }} --port=6379 --custom-labels='role=replica' loop: "{{ range(1, valkey_replica_count + 1) | list }}" ignore_errors: yes @@ -222,8 +222,8 @@ community.docker.docker_container_exec: container: "sentinel-{{ item }}" command: >- - pmm-admin add valkey --cluster=valkey-cluster --environment=valkey-test --username=default \ - --password="{{ valkey_password }}" --service-name=sentinel{{ item }}-svc-{{ random_number }} \ + pmm-admin add valkey --cluster=valkey-cluster --environment=valkey-test --username=default + --password="{{ valkey_password }}" --service-name=sentinel{{ item }}-svc-{{ random_number }} --host=sentinel-{{ item }} --port={{ sentinel_start_port }} --custom-labels='role=sentinel' loop: "{{ range(1, sentinel_count + 1) | list }}" ignore_errors: yes From b022dcb3d2d6ca7df6f593fa07f0aaa7b927ea7e Mon Sep 17 00:00:00 2001 From: travagliad <215686151+travagliad@users.noreply.github.com> Date: Thu, 30 Oct 2025 17:13:45 +0000 Subject: [PATCH 17/21] retry --- pmm_qa/valkey/valkey-cluster.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pmm_qa/valkey/valkey-cluster.yml b/pmm_qa/valkey/valkey-cluster.yml index 8acee9c6..1ade6ccb 100644 --- a/pmm_qa/valkey/valkey-cluster.yml +++ b/pmm_qa/valkey/valkey-cluster.yml @@ -75,6 +75,8 @@ save 300 10 save 60 10000 loglevel notice + slowlog-max-len 500 + slowlog-log-slower-than 5000 loop: "{{ range(1, valkey_cluster_primaries + 1) | list }}" - name: Generate base configuration for each replica From 89351078acad14505ac26ba8fd984fb5692e2311 Mon Sep 17 00:00:00 2001 From: travagliad <215686151+travagliad@users.noreply.github.com> Date: Thu, 30 Oct 2025 17:31:04 +0000 Subject: [PATCH 18/21] fix --- pmm_qa/valkey/valkey-cluster.yml | 14 ++++++++++---- pmm_qa/valkey/valkey-sentinel.yml | 10 ++++++++++ 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/pmm_qa/valkey/valkey-cluster.yml b/pmm_qa/valkey/valkey-cluster.yml index 1ade6ccb..1a3a187e 100644 --- a/pmm_qa/valkey/valkey-cluster.yml +++ b/pmm_qa/valkey/valkey-cluster.yml @@ -75,8 +75,6 @@ save 300 10 save 60 10000 loglevel notice - slowlog-max-len 500 - slowlog-log-slower-than 5000 loop: "{{ range(1, valkey_cluster_primaries + 1) | list }}" - name: Generate base configuration for each replica @@ -97,8 +95,6 @@ save 300 10 save 60 10000 loglevel notice - slowlog-max-len 500 - slowlog-log-slower-than 5000 loop: "{{ range(valkey_cluster_primaries + 1, valkey_cluster_node_count + 1) | list }}" - name: Create docker volumes for primary nodes @@ -235,3 +231,13 @@ --host={{ item }} --port=6379 --custom-labels='role=replica' loop: "{{ replica_nodes }}" ignore_errors: yes + + - name: Seed sample list data on first primary + community.docker.docker_container_exec: + container: "{{ valkey_primary_prefix }}1" + command: valkey-cli -a "{{ valkey_password }}" RPUSH mylist "one" "two" "three" "four" "five" + + - name: Pop one item from sample list on first primary + community.docker.docker_container_exec: + container: "{{ valkey_primary_prefix }}1" + command: valkey-cli -a "{{ valkey_password }}" RPOP mylist diff --git a/pmm_qa/valkey/valkey-sentinel.yml b/pmm_qa/valkey/valkey-sentinel.yml index 2958dbd8..4d0866e7 100644 --- a/pmm_qa/valkey/valkey-sentinel.yml +++ b/pmm_qa/valkey/valkey-sentinel.yml @@ -227,3 +227,13 @@ --host=sentinel-{{ item }} --port={{ sentinel_start_port }} --custom-labels='role=sentinel' loop: "{{ range(1, sentinel_count + 1) | list }}" ignore_errors: yes + + - name: Seed sample list data on primary (sentinel setup) + community.docker.docker_container_exec: + container: "valkey-primary" + command: valkey-cli -a "{{ valkey_password }}" RPUSH mylist "one" "two" "three" "four" "five" + + - name: Pop one item from sample list (sentinel setup) + community.docker.docker_container_exec: + container: "valkey-primary" + command: valkey-cli -a "{{ valkey_password }}" RPOP mylist From 14d5dd5b2d9bba92e1da028ac28254a740d1b690 Mon Sep 17 00:00:00 2001 From: travagliad <215686151+travagliad@users.noreply.github.com> Date: Thu, 30 Oct 2025 17:40:02 +0000 Subject: [PATCH 19/21] fix conf.j2 --- pmm_qa/valkey/sentinel.conf.j2 | 2 +- pmm_qa/valkey/valkey-primary.conf.j2 | 5 ----- pmm_qa/valkey/valkey-replica.conf.j2 | 5 ----- 3 files changed, 1 insertion(+), 11 deletions(-) diff --git a/pmm_qa/valkey/sentinel.conf.j2 b/pmm_qa/valkey/sentinel.conf.j2 index 9137777e..d8d75365 100644 --- a/pmm_qa/valkey/sentinel.conf.j2 +++ b/pmm_qa/valkey/sentinel.conf.j2 @@ -19,4 +19,4 @@ protected-mode no # Logging loglevel notice -logfile "" \ No newline at end of file +logfile "" diff --git a/pmm_qa/valkey/valkey-primary.conf.j2 b/pmm_qa/valkey/valkey-primary.conf.j2 index 18ef23ca..d4923875 100644 --- a/pmm_qa/valkey/valkey-primary.conf.j2 +++ b/pmm_qa/valkey/valkey-primary.conf.j2 @@ -25,8 +25,3 @@ logfile "" # Memory management maxmemory-policy allkeys-lru - -cluster-enabled yes -cluster-config-file nodes.conf -cluster-node-timeout 5000 -appendonly yes \ No newline at end of file diff --git a/pmm_qa/valkey/valkey-replica.conf.j2 b/pmm_qa/valkey/valkey-replica.conf.j2 index 93091f06..c1667dae 100644 --- a/pmm_qa/valkey/valkey-replica.conf.j2 +++ b/pmm_qa/valkey/valkey-replica.conf.j2 @@ -26,8 +26,3 @@ logfile "" # Memory management maxmemory-policy allkeys-lru - -cluster-enabled yes -cluster-config-file nodes.conf -cluster-node-timeout 5000 -appendonly yes \ No newline at end of file From 93eb9d5f41d6ff52ac8d5f704f5c4237716bcb48 Mon Sep 17 00:00:00 2001 From: travagliad <215686151+travagliad@users.noreply.github.com> Date: Thu, 30 Oct 2025 17:49:55 +0000 Subject: [PATCH 20/21] Generate workload for latency tests --- pmm_qa/valkey/valkey-cluster.yml | 28 ++++++++++++++++++++++++++++ pmm_qa/valkey/valkey-sentinel.yml | 27 +++++++++++++++++++++++++++ 2 files changed, 55 insertions(+) diff --git a/pmm_qa/valkey/valkey-cluster.yml b/pmm_qa/valkey/valkey-cluster.yml index 1a3a187e..8f71b6c7 100644 --- a/pmm_qa/valkey/valkey-cluster.yml +++ b/pmm_qa/valkey/valkey-cluster.yml @@ -241,3 +241,31 @@ community.docker.docker_container_exec: container: "{{ valkey_primary_prefix }}1" command: valkey-cli -a "{{ valkey_password }}" RPOP mylist + + - name: Generate workload on primary nodes (latency metrics) + community.docker.docker_container_exec: + container: "{{ item }}" + command: >- + bash -c 'for i in $(seq 1 50); do \ + valkey-cli -a {{ valkey_password }} SET k$i v$i >/dev/null; \ + valkey-cli -a {{ valkey_password }} GET k$i >/dev/null; \ + valkey-cli -a {{ valkey_password }} HSET h$i f v >/dev/null; \ + valkey-cli -a {{ valkey_password }} LPUSH l$i a b c >/dev/null; \ + valkey-cli -a {{ valkey_password }} RPUSH l$i d e f >/dev/null; \ + valkey-cli -a {{ valkey_password }} LRANGE l$i 0 -1 >/dev/null; \ + valkey-cli -a {{ valkey_password }} LPOP l$i >/dev/null || true; \ + valkey-cli -a {{ valkey_password }} RPOP l$i >/dev/null || true; \ + done' + loop: "{{ primary_nodes }}" + ignore_errors: yes + + - name: Generate read workload on replica nodes (latency metrics) + community.docker.docker_container_exec: + container: "{{ item }}" + command: >- + bash -c 'for i in $(seq 1 50); do \ + valkey-cli -a {{ valkey_password }} GET k$i >/dev/null || true; \ + valkey-cli -a {{ valkey_password }} LRANGE l$i 0 -1 >/dev/null || true; \ + done' + loop: "{{ replica_nodes }}" + ignore_errors: yes diff --git a/pmm_qa/valkey/valkey-sentinel.yml b/pmm_qa/valkey/valkey-sentinel.yml index 4d0866e7..98f84296 100644 --- a/pmm_qa/valkey/valkey-sentinel.yml +++ b/pmm_qa/valkey/valkey-sentinel.yml @@ -237,3 +237,30 @@ community.docker.docker_container_exec: container: "valkey-primary" command: valkey-cli -a "{{ valkey_password }}" RPOP mylist + + - name: Generate workload on primary (sentinel setup) + community.docker.docker_container_exec: + container: "valkey-primary" + command: >- + bash -c 'for i in $(seq 1 50); do \ + valkey-cli -a {{ valkey_password }} SET k$i v$i >/dev/null; \ + valkey-cli -a {{ valkey_password }} GET k$i >/dev/null; \ + valkey-cli -a {{ valkey_password }} HSET h$i f v >/dev/null; \ + valkey-cli -a {{ valkey_password }} LPUSH l$i a b c >/dev/null; \ + valkey-cli -a {{ valkey_password }} RPUSH l$i d e f >/dev/null; \ + valkey-cli -a {{ valkey_password }} LRANGE l$i 0 -1 >/dev/null; \ + valkey-cli -a {{ valkey_password }} LPOP l$i >/dev/null || true; \ + valkey-cli -a {{ valkey_password }} RPOP l$i >/dev/null || true; \ + done' + ignore_errors: yes + + - name: Generate read workload on replicas (sentinel setup) + community.docker.docker_container_exec: + container: "valkey-replica-{{ item }}" + command: >- + bash -c 'for i in $(seq 1 50); do \ + valkey-cli -a {{ valkey_password }} GET k$i >/dev/null || true; \ + valkey-cli -a {{ valkey_password }} LRANGE l$i 0 -1 >/dev/null || true; \ + done' + loop: "{{ range(1, valkey_replica_count + 1) | list }}" + ignore_errors: yes From 7b92d1656c1aa8ee959b0d0ed50977e86c3e4dff Mon Sep 17 00:00:00 2001 From: travagliad <215686151+travagliad@users.noreply.github.com> Date: Thu, 30 Oct 2025 18:09:14 +0000 Subject: [PATCH 21/21] fix command --- pmm_qa/valkey/valkey-cluster.yml | 16 ++-------------- pmm_qa/valkey/valkey-sentinel.yml | 16 ++-------------- 2 files changed, 4 insertions(+), 28 deletions(-) diff --git a/pmm_qa/valkey/valkey-cluster.yml b/pmm_qa/valkey/valkey-cluster.yml index 8f71b6c7..56208a0d 100644 --- a/pmm_qa/valkey/valkey-cluster.yml +++ b/pmm_qa/valkey/valkey-cluster.yml @@ -246,16 +246,7 @@ community.docker.docker_container_exec: container: "{{ item }}" command: >- - bash -c 'for i in $(seq 1 50); do \ - valkey-cli -a {{ valkey_password }} SET k$i v$i >/dev/null; \ - valkey-cli -a {{ valkey_password }} GET k$i >/dev/null; \ - valkey-cli -a {{ valkey_password }} HSET h$i f v >/dev/null; \ - valkey-cli -a {{ valkey_password }} LPUSH l$i a b c >/dev/null; \ - valkey-cli -a {{ valkey_password }} RPUSH l$i d e f >/dev/null; \ - valkey-cli -a {{ valkey_password }} LRANGE l$i 0 -1 >/dev/null; \ - valkey-cli -a {{ valkey_password }} LPOP l$i >/dev/null || true; \ - valkey-cli -a {{ valkey_password }} RPOP l$i >/dev/null || true; \ - done' + bash -c "for i in $(seq 1 50); do valkey-cli -a {{ valkey_password }} SET k$i v$i >/dev/null; valkey-cli -a {{ valkey_password }} GET k$i >/dev/null; valkey-cli -a {{ valkey_password }} HSET h$i f v >/dev/null; valkey-cli -a {{ valkey_password }} LPUSH l$i a b c >/dev/null; valkey-cli -a {{ valkey_password }} RPUSH l$i d e f >/dev/null; valkey-cli -a {{ valkey_password }} LRANGE l$i 0 -1 >/dev/null; valkey-cli -a {{ valkey_password }} LPOP l$i >/dev/null || true; valkey-cli -a {{ valkey_password }} RPOP l$i >/dev/null || true; done" loop: "{{ primary_nodes }}" ignore_errors: yes @@ -263,9 +254,6 @@ community.docker.docker_container_exec: container: "{{ item }}" command: >- - bash -c 'for i in $(seq 1 50); do \ - valkey-cli -a {{ valkey_password }} GET k$i >/dev/null || true; \ - valkey-cli -a {{ valkey_password }} LRANGE l$i 0 -1 >/dev/null || true; \ - done' + bash -c "for i in $(seq 1 50); do valkey-cli -a {{ valkey_password }} GET k$i >/dev/null || true; valkey-cli -a {{ valkey_password }} LRANGE l$i 0 -1 >/dev/null || true; done" loop: "{{ replica_nodes }}" ignore_errors: yes diff --git a/pmm_qa/valkey/valkey-sentinel.yml b/pmm_qa/valkey/valkey-sentinel.yml index 98f84296..0f730b49 100644 --- a/pmm_qa/valkey/valkey-sentinel.yml +++ b/pmm_qa/valkey/valkey-sentinel.yml @@ -242,25 +242,13 @@ community.docker.docker_container_exec: container: "valkey-primary" command: >- - bash -c 'for i in $(seq 1 50); do \ - valkey-cli -a {{ valkey_password }} SET k$i v$i >/dev/null; \ - valkey-cli -a {{ valkey_password }} GET k$i >/dev/null; \ - valkey-cli -a {{ valkey_password }} HSET h$i f v >/dev/null; \ - valkey-cli -a {{ valkey_password }} LPUSH l$i a b c >/dev/null; \ - valkey-cli -a {{ valkey_password }} RPUSH l$i d e f >/dev/null; \ - valkey-cli -a {{ valkey_password }} LRANGE l$i 0 -1 >/dev/null; \ - valkey-cli -a {{ valkey_password }} LPOP l$i >/dev/null || true; \ - valkey-cli -a {{ valkey_password }} RPOP l$i >/dev/null || true; \ - done' + bash -c "for i in $(seq 1 50); do valkey-cli -a {{ valkey_password }} SET k$i v$i >/dev/null; valkey-cli -a {{ valkey_password }} GET k$i >/dev/null; valkey-cli -a {{ valkey_password }} HSET h$i f v >/dev/null; valkey-cli -a {{ valkey_password }} LPUSH l$i a b c >/dev/null; valkey-cli -a {{ valkey_password }} RPUSH l$i d e f >/dev/null; valkey-cli -a {{ valkey_password }} LRANGE l$i 0 -1 >/dev/null; valkey-cli -a {{ valkey_password }} LPOP l$i >/dev/null || true; valkey-cli -a {{ valkey_password }} RPOP l$i >/dev/null || true; done" ignore_errors: yes - name: Generate read workload on replicas (sentinel setup) community.docker.docker_container_exec: container: "valkey-replica-{{ item }}" command: >- - bash -c 'for i in $(seq 1 50); do \ - valkey-cli -a {{ valkey_password }} GET k$i >/dev/null || true; \ - valkey-cli -a {{ valkey_password }} LRANGE l$i 0 -1 >/dev/null || true; \ - done' + bash -c "for i in $(seq 1 50); do valkey-cli -a {{ valkey_password }} GET k$i >/dev/null || true; valkey-cli -a {{ valkey_password }} LRANGE l$i 0 -1 >/dev/null || true; done" loop: "{{ range(1, valkey_replica_count + 1) | list }}" ignore_errors: yes