The xcloud backend allows SCT to provision and test Scylla on ScyllaDB Cloud. This backend leverages the ScyllaDB Cloud REST API to create, configure, and manage clusters across different cloud providers (AWS and GCE).
Unlike other SCT backends where infrastructure is provisioned and operated directly, the xcloud backend provisions managed ScyllaDB clusters, where the database is already installed and configured.
- Managed ScyllaDB Clusters: DB nodes are fully managed by ScyllaDB Cloud
- Multi-Cloud Support: deploy clusters on AWS or GCE cloud providers
- VPC Peering: private connectivity between SCT infrastructure and cloud clusters
- Vector Search Support: deploy Vector Search nodes alongside DB nodes
- Monitoring Integration: federation with ScyllaDB Cloud Prometheus endpoint
- Automated Cleanup: keep-tag based resource cleanup mechanism
To use the xcloud backend, you need Siren user API credentials for ScyllaDB Cloud.
There are pre-created Siren users for different cloud environments (lab, staging, production).
Additionally, developers can configure their own Siren user in a ScyllaDB Cloud environment and generate API credentials, which can then be provided to SCT via a local file. Instructions for configuring test billing for a Siren user and generating API credentials can be found in ScyllaDB Cloud API access for SCT.
Since loader and monitor nodes are provisioned directly on AWS/GCE (not a part of ScyllaDB Cloud cluster), the appropriate cloud provider credentials should be configured.
SSH access to cloud DB nodes is performed via a StrongDM bastion host. StrongDM hosts are configured only for pre-created Siren users.
| Parameter | Environment Variable | Description |
|---|---|---|
cluster_backend |
SCT_CLUSTER_BACKEND |
Must be set to xcloud |
xcloud_provider |
SCT_XCLOUD_PROVIDER |
Cloud provider: aws or gce |
scylla_version |
SCT_SCYLLA_VERSION |
Scylla version to deploy |
| Parameter | Environment Variable | Description | Default |
|---|---|---|---|
xcloud_env |
SCT_XCLOUD_ENV |
ScyllaDB Cloud environment (lab, staging or prod) |
lab |
xcloud_credentials_path |
SCT_XCLOUD_CREDENTIALS_PATH |
Path to local credentials file | By default the credentials of pre-created Siren users are used |
xcloud_replication_factor |
SCT_XCLOUD_REPLICATION_FACTOR |
Cluster replication factor | Based on node count |
xcloud_vpc_peering |
SCT_XCLOUD_VPC_PEERING |
VPC peering configuration (see below) | Enabled |
n_vector_store_nodes |
SCT_N_VECTOR_STORE_NODES |
Number of Vector Search nodes | 0 (VS nodes deployment is disabled) |
VPC peering enables private connectivity between SCT infrastructure (runner/loaders/monitors) and ScyllaDB Cloud cluster nodes. It is highly recommended to use VPC peering instead of public IPs, to reduce network latency and data transfer costs.
Configuration format:
xcloud_vpc_peering:
enabled: true
cidr_pool_base: '172.31.0.0/16' # base CIDR for cluster networks
cidr_subnet_size: 24 # subnet size for each clusterScyllaDB Cloud clusters provide a Prometheus endpoint for metrics federation. SCT automatically configures monitoring when a monitor node is provisioned.
# set required configuration parameters
export SCT_SCYLLA_VERSION=2025.3.0
export SCT_XCLOUD_ENV=lab
export SCT_XCLOUD_PROVIDER=aws
# run a simple provision test
hydra run-test longevity_test.LongevityTest.test_custom_time \
--backend xcloud \
--config test-cases/PR-provision-test.yaml --config configurations/network_config/test_communication_public.yamltest-cases/custom/my-xcloud-test.yaml:
test_duration: 60
n_db_nodes: 3
n_loaders: 1
n_monitor_nodes: 1
instance_type_loader: 'c6i.large'
gce_instance_type_loader: 'e2-standard-2'
stress_cmd: [
"cassandra-stress write cl=QUORUM duration=30m -schema 'replication(strategy=NetworkTopologyStrategy,replication_factor=3)' -mode cql3 native -rate threads=1000 -pop seq=1..5000000"
]
user_prefix: 'my-xcloud-test'
xcloud_vpc_peering:
enabled: true
cidr_pool_base: '172.31.0.0/16'
cidr_subnet_size: 24# list all environments using `list-resources` hydra command
hydra list-resources -b xcloud --get-all
# list specific environment only
hydra list-resources -b xcloud --get-all --xcloud-env lab
# list all environments using cleanup script in dry-run mode
./docker/env/hydra.sh python -m utils.cloud_cleanup.xcloud.clean_xcloud --dry-runExisting ScyllaDB Cloud clusters can be reused similarly to other backends - by specifying the test ID of the test run that created the cluster. Find more details in reuse_cluster documentation.
ScyllaDB Cloud clusters created by SCT are named with pattern: {user_prefix}-db-cluster-{test_id}-keep-{hours}h
Cloud clusters created by SCT include a keep-tag suffix in their name (e.g., -keep-2h). The tag indicates for how long the cluster should be retained before automated deletion.
A periodic cleanup job deletes clusters older than the specified duration.
Keep duration is automatically set based on test duration and is calculated as:
test_duration + prepare_stress_duration + margin
Executing cleanup script manually:
# dry-run mode to see what would be deleted (checks all environments by default)
./docker/env/hydra.sh python -m utils.cloud_cleanup.xcloud.clean_xcloud --dry-run
# cleanup of test clusters on specific environment
./docker/env/hydra.sh python -m utils.cloud_cleanup.xcloud.clean_xcloud --environments lab
# cleanup for all environments
./docker/env/hydra.sh python -m utils.cloud_cleanup.xcloud.clean_xcloudCloud clusters are created under a Siren account and are not tied to a specific user. Therefore, manual cleanup is performed based on the ID of the test that created the cluster.
# get test ID from an SCT run
export TEST_ID=$(cat ~/sct-results/latest/test_id)
hydra clean-resources --test-id $TEST_ID -b xcloudWhen running tests with xcloud backend, SCT provisions:
-
Cloud cluster (managed by ScyllaDB Cloud):
- Database nodes
- Vector Search nodes (optional)
-
SCT Infrastructure (provisioned on AWS/GCE):
- SCT runner node
- Loader nodes
- Monitor nodes
┌────────────────────────────────────────────┐
│ ScyllaDB Cloud │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ DB Node │ │ DB Node │ │ DB Node │ │
│ │ (private)│ │ (private)│ │ (private)│ │
│ └────┬─────┘ └────┬─────┘ └────┬─────┘ │
│ │ VPC Peering │ │ │
└───────┼─────────────┼─────────────┼────────┘
│ │ │
└─────────────┴─────────────┘
│
┌─────────────┴──────────┐
│ SCT Infrastructure │
│ ┌──────────┐ │
│ │ Loader │ │
│ │ Nodes │ │
│ └──────────┘ │
│ ┌──────────┐ │
│ │ Monitor │ │
│ │ Node │ │
│ └──────────┘ │
│ ┌──────────┐ │
│ │ SCT │ │
│ │ Runner │ │
│ └──────────┘ │
└────────────────────────┘