Database Monsters of the World Connect! Virtual Conference | January 12-14
Register Now

Production Readiness Guidelines

The goal of this document is to have a checklist that production customers can use to make sure their deployment adheres to ScyllaDB’s recommendations. Before deploying to production you should follow up on each of the main bullets described below to verify they comply with the recommendations provided. Click the links for more information on each topic.

Before You Begin

Pre-Deployment Requirements

Resiliency

When rolling out to production it is important to make sure your data is recoverable and your database can function anytime there is a power or equipment failure.

Replication Factors

Verify the Replication Factor is set properly for each keyspace.

We recommend using an RF greater than two.

If you have a multi-datacenter architecture we recommend to have RF=3 on each DC.

For additional information:

Consistency Levels

Verify the Consistency Level (CL) is set properly for each table.

We recommend using LOCAL_QUORUM across the cluster and DCs

For additional information:

Gossip Configuration

  1. Choose the correct Snitch.

    Always use GossipingPropertyFileSnitch or Ec2MultiRegionSnitch

    For additional information:

  2. Use the correct Data Replication strategy.

    Use NetworkTopologyStrategy replication-strategy as it supports multi-DC for your keyspaces.

Seed Node Redundancy

Each DC needs to have multiple seed nodes.

We recommend having 2-3 seed nodes per DC.

For additional information:

Performance

Verify you have run scylla_setup in order to tune ScyllaDB to your hardware. If you are running on a physical hardware please take a look into the following configuration files:

io.conf and Disk I/O tune

Refer to this FAQ entry and this note

perftune.yaml

If you have more than 8cores or 16vcpu always use mode: sq_split

MC SSTable format

Enable MC format by editing the Scylla Configuration file (/etc/scylla.yaml).

Set enable_sstables_mc_format parameter as true

For additional information, refer to SSTable Format

Inter-node Compression

Enable Inter-node Compression by editing the Scylla Configuration file (/etc/scylla.yaml).

Internode_compression = all

Verify your client driver is using compressed traffic when connected to Scylla. As compression is driver settings dependent, please check your client driver manual or Scylla Drivers.

For additional information, see the Admin Guide Internode Compression section.

Connectivity

Drivers Settings

  • Use shard aware drivers wherever possible. Scylla Drivers (not third-party drivers) are shard aware.

  • Configure connection pool - open more connections (>3 per shard) and/Or more clients. See this blog.

Management

You must use both Scylla Manager and Scylla Monitor.

Scylla Manager

Scylla Manager enables centralized cluster administration and database automation such as repair, backup, and health-check.

Repair

Run repairs preferably once a week and run them exclusively from Scylla Manager. Refer to Repair a Cluster

Backup and Restore

We recommend the following:

  • Run a full weekly backup from Scylla Manager

  • Run a daily backup from Scylla Manager

  • Check the Restore periodically

  • Save backup to a bucket supported by Scylla Manager.

For additional information:

Scylla Monitor

Scylla Monitoring helps you monitor everything about your Scylla cluster. Scylla Support usually asks for your monitoring metrics when you open a ticket.

For information see:

Configuration Management

It is important to maks sure tha the configuration settings you set on one node is (in scylla.yaml) is coherent among all nodes.

Using tools such as Ansible, Chef, Puppet, Salt, Juju are recommended.

See this article for more information.

Security

Use the following guidelines to keep your data and database secure.

HA Testing

HA testing in single DC - for example:

  1. Shutdown one node from the cluster (Or scylla service if on the cloud) for 30min.

  2. Turn it back on

HA testing in multi DC - for example:

  1. Disconnect one DC from the other by stopping scylla service on all of these DC nodes.

  2. Reconnect the DC