Skip to content

Conversation

@exaSR
Copy link
Collaborator

@exaSR exaSR commented Nov 27, 2025

This PR adds multinode cluster support for Exasol and ClickHouse, enabling benchmarks on distributed database configurations. It also introduces comprehensive configuration validation and a new benchkit check command for config inspection.

Multinode Cluster Support

  • Simple configuration: Set node_count: N in system setup to deploy N-node clusters
  • Automatic infrastructure: Terraform provisions multiple instances per system (exasol-node0, exasol-node1, etc.)
  • SSH key distribution: Automatic inter-node SSH setup for cluster communication
  • System-specific implementations:
    • Exasol: c4 cluster tool with space-separated IP lists
    • ClickHouse: Sharding without replication via XML config files (remote_servers.xml, macros.xml)

Config Validation (benchkit/config.py)

  • System name validation: Must be valid bash variable name ([a-zA-Z_][a-zA-Z0-9_]*)
  • IP variable validation: $SYSTEMNAME_PRIVATE_IP must reference configured systems
  • Unique system names: No duplicates allowed
  • Instance config matching: env.instances keys must match system names
  • Method-specific fields: Validates required fields (e.g., Exasol installer requires c4_version, working_copy, etc.)
  • Workload validation: Positive scale_factor, runs_per_query; valid workload names

New benchkit check Command

benchkit check -c config.yaml      # Validate and display config
benchkit check -c config.yaml -v   # Verbose mode with all setup params
  • Displays organized sections with Rich panels
  • Shows validation status with clear error messages
  • IP variable validation indicators
  • Password masking in verbose mode

Infrastructure Improvements

  • Inter-node communication: Security group rules for TCP/UDP between cluster nodes
  • EBS disk support: Added ebs as alias for gp3 with auto-tuned IOPS/throughput
  • Storage flexibility: Support for local NVMe, EBS, and root filesystem storage

Other Improvements

  • Multiuser benchmark support (num_streams, randomize, random_seed)
  • Enhanced logging and error messages
  • Fixed single-user handling edge cases
  • Improved report generation for multinode benchmarks

@ooke ooke marked this pull request as ready for review December 1, 2025 11:06
@ooke ooke merged commit b520016 into master Dec 2, 2025
@ooke ooke deleted the multinode branch December 2, 2025 10:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants