Files
2026-05-17 21:01:07 +02:00

136 lines
3.8 KiB
YAML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Valkey HA chaos/soak config — spicy edition.
#
# 13 workers per container. With Zerops scaling to 10 replicas, that's
# ~130 concurrent connections × short intervals = serious load on
# HAProxy, Sentinel, and the Valkey master.
#
# Each $ZEROPS_Number replica gets its own DB and its own channel suffix
# (handled in main.go::applyZeropsOverrides), so the 10 containers don't
# step on each other's keyspace or pub/sub traffic.
#
# Topology:
# 6379 = read/write plaintext (master)
# 6380 = read/write TLS (master)
# 7000 = read-only plaintext (replicas via HAProxy)
# 7001 = read-only TLS (replicas via HAProxy)
#
# Roughly half the workers run over TLS so each ingress path gets
# exercised under load.
#
# Workload mix:
# - 1× readwriter (write + read-after-write on master)
# - 2× pure writer (separate TCP sessions — stress the master)
# - 1× master-side reader (does master serve GETs under load?)
# - 4× replica-side reader (stress replicas + verify replication catches up)
# - 2× publisher on two distinct channels (one slow, one tight)
# - 2× master-side subscriber (one per channel)
# - 1× replica-side subscriber (topology probe — should receive 0 msgs)
workers:
# ---- write path (3 connections) ----------------------------------------
- name: rw-main
role: readwriter
host: valkeyha.zerops
port: 6379
db: 0
interval: 20ms
- name: rw-burst-1
role: writer
host: valkeyha.zerops
port: 6380
tls: true
interval: 3ms
- name: rw-burst-2
role: writer
host: valkeyha.zerops
port: 6379
interval: 3ms
# ---- master-side reader (sanity that master also serves reads) ---------
- name: ro-master
role: reader
host: valkeyha.zerops
port: 6380
tls: true
interval: 5ms
# ---- replica-side reader fan-out (4 connections) -----------------------
- name: ro-1
role: reader
host: valkeyha.zerops
port: 7000
interval: 2ms
- name: ro-2
role: reader
host: valkeyha.zerops
port: 7001
tls: true
interval: 2ms
- name: ro-3
role: reader
host: valkeyha.zerops
port: 7000
interval: 3ms
- name: ro-4
role: reader
host: valkeyha.zerops
port: 7001
tls: true
interval: 3ms
# ---- pub/sub: two channels at different cadences -----------------------
- name: pub-bus
role: publisher
host: valkeyha.zerops
port: 6379
channel: "vk:chaos:bus"
interval: 5ms
- name: pub-fast
role: publisher
host: valkeyha.zerops
port: 6380
tls: true
channel: "vk:chaos:fast"
interval: 2ms
- name: sub-bus
role: subscriber
host: valkeyha.zerops
port: 6380
tls: true
channel: "vk:chaos:bus"
- name: sub-fast
role: subscriber
host: valkeyha.zerops
port: 6379
channel: "vk:chaos:fast"
# ---- memory bloater ----------------------------------------------------
# Writes 8 KB of random bytes to a fresh key every 10ms with NO TTL.
# ~800 KB/sec per container × 10 containers = ~8 MB/sec growth on the
# master. Watch used_memory climb. Keys land under vk:chaos:bloat:<seq>
# so they don't pollute the durability ledger. To reset, FLUSHDB the
# affected DB (or each per-replica DB if running in Zerops).
# - name: bloat-1
# role: bloater
# host: valkeyha.zerops
# port: 6379
# interval: 10ms
# valueBytes: 8192
# ---- topology probe ----------------------------------------------------
# Subscriber on the read-only VIP. Valkey 7.2 + Sentinel does not
# replicate pub/sub from master to replicas, so this should stay at
# msgs=0 the entire run. If it ever ticks up, replication semantics
# changed.
- name: sub-replica
role: subscriber
host: valkeyha.zerops
port: 7001
tls: true
channel: "vk:chaos:bus"