-
Notifications
You must be signed in to change notification settings - Fork 44
Create Cluster
Deploy a new ScyllaDB cluster from scratch.
- ScyllaDB cluster nodes accessible via SSH
- Ansible 6.7.0+
Create a directory for your cluster. This directory will hold your inventory, group_vars, and other cluster-specific configuration. You will run all playbooks from this directory.
mkdir -p ~/my-cluster/group_varsFor small or development clusters, define all Scylla nodes directly in [scylla]:
[scylla]
node1 ansible_host=10.0.0.1 dc=dc1 rack=a
node2 ansible_host=10.0.0.2 dc=dc1 rack=b
node3 ansible_host=10.0.0.3 dc=dc2 rack=c
[scylla-manager]
manager1 ansible_host=10.0.0.10
[scylla-monitor]
monitor1 ansible_host=10.0.0.11Define variables in group_vars/:
-
group_vars/scylla.yml- Scylla node variables -
group_vars/scylla-manager.yml- Manager variables -
group_vars/scylla-monitor.yml- Monitoring variables
For production clusters, organize nodes by DC using child groups. This allows per-DC configuration:
[scylla:children]
scylla-dc1
scylla-dc2
[scylla-dc1]
node1 ansible_host=10.0.0.1 rack=a
node2 ansible_host=10.0.0.2 rack=b
node3 ansible_host=10.0.0.3 rack=c
[scylla-dc2]
node4 ansible_host=10.0.0.4 rack=a
node5 ansible_host=10.0.0.5 rack=b
node6 ansible_host=10.0.0.6 rack=c
[scylla-manager]
manager-node ansible_host=10.0.0.10
[scylla-monitor]
monitor-node ansible_host=10.0.0.11group_vars/scylla.yml (global variables):
scylla_version: latest
scylla_edition: enterprise
scylla_cluster_name: mycluster
scylla_snitch: GossipingPropertyFileSnitch
scylla_seeds:
- '{{ hostvars[groups.scylla.0].ansible_host }}'
scylla_io_probe: truegroup_vars/scylla-dc1.yml (DC1 configuration):
dc: dc1
detect_nvmes: truegroup_vars/scylla-dc2.yml (DC2 configuration):
dc: dc2
scylla_raid_setup:
- /dev/nvme1n1
- /dev/nvme1n2
- /dev/nvme1n3group_vars/scylla-manager.yml (Manager variables):
scylla_clusters:
- cluster_name: "mycluster"
host: "{{ hostvars[groups.scylla.0].ansible_host }}"
auth_token_file: "{{ inventory_dir }}/scyllamgr_auth_token.txt"group_vars/scylla-monitor.yml (Monitoring variables):
scylla_cluster_name: mycluster
alerts_sender_email: example-email@scylladb.com
alerts_sender_password: Sender_p@ssw0rd
alerts_receiver_email: example-email@scylladb.comFrom inside your cluster metadata directory:
ANSIBLE_ROLES_PATH=$PATH_TO_YOUR_CLONED_REPO ansible-playbook -i inventory.ini $PATH_TO_YOUR_CLONED_REPO/example-playbooks/scylla_deploy/nodes.ymlSee ansible-scylla-node for details.
From inside your cluster metadata directory:
ANSIBLE_ROLES_PATH=$PATH_TO_YOUR_CLONED_REPO ansible-playbook -i inventory.ini $PATH_TO_YOUR_CLONED_REPO/example-playbooks/scylla_deploy/manager.ymlSee ansible-scylla-manager for details.
Deploy monitoring stack. From inside your cluster metadata directory:
ANSIBLE_ROLES_PATH=$PATH_TO_YOUR_CLONED_REPO ansible-playbook -i inventory.ini $PATH_TO_YOUR_CLONED_REPO/example-playbooks/scylla_deploy/monitoring.ymlSee ansible-scylla-monitoring for details.
Save your variables and inventory inside your cluster metadata directory. These are part of your cluster state and will be needed for future operations like adding nodes, replacing nodes, and upgrades.