Download Scylla Open Source

Download and install Scylla Open Source on Docker, AWS, RHEL 7, CentOS 7, Debian, Virtual Box, Ubuntu or compile the source from GitHub.

Need premium features? Scylla Enterprise includes a Scylla Enterprise license, tested and certified binaries, cluster administration and task automation, hot fixes, 24/7 technical support, and more. SCYLLA ENTERPRISE

 

Notice

Running Scylla in Docker is the simplest way to experiment with Scylla and we highly recommend it. However, running stateful containers is complex and tuning is needed to maximize the performance. We recommend that you use packages and follow Best Practices for Running Scylla on Docker.

Running a Single Instance

$ docker run --name scylla -d scylladb/scylla

Adding Nodes

$ docker run --name scylla-node2 -d scylladb/scylla --seeds="$(docker inspect --format='{{ .NetworkSettings.IPAddress }}' scylla)"
 
$ docker run --name scylla-node3 -d scylladb/scylla --seeds="$(docker inspect --format='{{ .NetworkSettings.IPAddress }}' scylla)"

Using Scylla in Docker

  • You can verify that the cluster is up and running with the following command:
$ docker exec -it scylla nodetool status

Datacenter: datacenter1
=======================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
-- Address Load Tokens Owns (effective) Host ID Rack
UN 172.17.0.3 357 KB 256 66.4% 76ca991f-cf38-4984-8991-7675721a8bf8 rack1
UN 172.17.0.2 354.12 KB 256 70.6% dca727dd-c564-4166-b48f-ac79a5153503 rack1
UN 172.17.0.4 343.46 KB 256 63.0% 0f6d6b2e-de41-4729-a6a6-77e6f228fc5c rack1

  • To use the Cqlsh client to interact with Scylla:
$ docker exec -it scylla cqlsh

Connected to Test Cluster at 172.17.0.2:9042.
[cqlsh 5.0.1 | Cassandra 2.1.8 | CQL spec 3.2.1 | Native protocol v3] Use HELP for help.
cqlsh>

What’s Next?

Visit Scylla Documentation to get best practices for running Scylla on Docker.

For bug reports, please use Scylla’s issue tracker on GitHub. Please read the How to report a Scylla problem page before you report bugs. For general help, see Scylla’s documentation. For questions and comments, use Scylla’s mailing lists.

Run Scylla on AWS with Minimal Effort

Scylla Community AMI is optimized for i3 instances with zero tuning and maximum performance.

Choose AMI

Amazon EC2 AMIs

Note that the Scylla AMIs will not work without an attached drive(s) for XFS.

US East (Virginia)
us-east-1
ami-3ceac343
Scylla 2.2.0 AMI

US West (California)
us-west-1
ami-0d1fff6e
Scylla 2.2.0 AMI

US West 2 (Oregon)
us-west-2
ami-92dc8aea
Scylla 2.2.0 AMI

EU West 1 (Ireland)
eu-west-1
ami-02a1b7e8
Scylla 2.2.0 AMI

Choose an Instance Type

For a production system, instances with a fast network and large SSD are recommended. The following instance is pre-tuned in the Scylla AMI and recommended for highest performance:

  • i3 [i3.xlarge .. i3.16xlarge]

Other instance types will work, but with lesser permanence. If you do choose such a type, make sure to run scylla_io_setup.

Configure Instance Details

  • Number of instances – base on your cluster planning
  • Network – Select “Launch into EC2-Classic”, or your own VPC.
  • Advanced Details – Open and add the following options (as text) to the User Data section.
OptionDescription
clusternameRequired. The name of the cluster.
totalnodesRequired. The number of nodes you are adding to cluster. Use the same value as the “Number of instances” above.
seedsOptional. An ip address of a node in an existing cluster. This will instruct Scylla to join an existing cluster. The “clustername” option must match that of the existing cluster.
stop-servicesOptional. Do not start Scylla service on the nodes

Example:

--clustername test-cluster
--totalnodes 3

EC2 Configure Instance Details Capture

Add Storage

Scylla AMI require XFS to work. You Must attach at least one drive for Scylla to use as XFS for the data directory. When attaching more than one drive, AMI setup will install RAID0 on all of them.

The Scylla AMI requires at least two instance store volumes. The Scylla data directory will be formatted with XFS when the instance first boots. Scylla will fail to start if only one volume is configured.

Tag Instance

Configure Security Group

Make sure all Scylla Ports are open.

Review

Launch! You now have a running Scylla cluster on EC2.

To connect to the servers, use the username centos.

ssh -i your-key-pair.pem centos@ec2-public-ip

Default file paths:

  • scylla.yaml at /etc/scylla/scylla.yaml
  • data at /var/lib/scylla/

To check that the Scylla server and the JMX component are running, run nodetool.

nodetool status

Note: This Scylla AMI does not support automatic multi-zone deployment.

Monitoring

It is highly recommended to have a Scylla monitoring stack in place. For more on how to setup Scylla monitoring with Grafana here

Reference

Scylla servers set up using this method have the system configuration covered on System Configuration Guide already applied. See the guide for a complete reference on settings used.

Scylla binaries are available for the following platforms

Scylla offers binaries ready for install on RHEL 7, CentOS 7, Debian and Ubuntu. To download, please register and a link to the appropriate repo will be emailed to you.

 

We ask you to register for binary downloads so we can help you be as successful as possible and let you know about patches and fixes, learning resources, new features, and capabilities. We also invite you to share your feedback to help us improve Scylla.

 
After registration, you will receive an email with a link to the download and instructions for installing and running Scylla. If you don’t receive an email from us or have issues installing Scylla, please contact us at help@scylladb.com.

Building Scylla from Source

Please visit the Scylla GitHub repository for the most up to date instructions.

Clone the Scylla Git Repository

  • Run the following command to clone the repository:
git clone https://github.com/scylladb/scylla.git

Compile

cd scylla
git submodule update --init --recursive
sudo ./install-dependencies.sh
./configure.py --mode=release
ninja-build 
./build/release/scylla

Run

  • To run Scylla with one CPU and ./tmp as a data directory:
./build/release/scylla --datadir tmp --commitlog-directory tmp --smp 1
  • For more command-line options, run the following command:
./build/release/scylla --help

What’s Next?

For more information on building Scylla, please visit the HACKING page on the GitHub repository.

For bug reports, please use Scylla’s issue tracker on GitHub. Please read the How to report a Scylla problem page before you report bugs. For general help, see Scylla’s documentation. For questions and comments, use Scylla’s mailing lists.

Building the needed environment on VirtualBox

Deploying Scylla in a VirtualBox instance is a good starting point for testing functionality and compatibility, and for local development and integration testing of applications using Scylla. Please note: Deploying Scylla in VirtualBox is not recommended or supported for production. The performance benefits of Scylla may not be visible on VirtualBox.

Creating a VirtualBox Environment to Run Scylla

  • Download and install VirtualBox
  • Download a RHEL or CentOS .iso file to your host node. Use version 7.x or later.
  • Create a VirtualBox instance. Choose Linux, RHEL 64 bits.
  • Define the instance to have at least 4GB of memory and 20GB of disk space.
  • Attach and install the RHEL or CentOS 7.x ISO.

If you don’t have Internet connectivity from your VirtualBox instance, you will need to bring up a network interface.

Go to the network configuration directory

cd /etc/sysconfig/network-scripts/

Check for ifcfg scripts available. They will be named with the name of the Ethernet interface. You’ll have one named ifcfg-enp0s3, or similar.

Activate the connectivity, with

ifup ifcfg-enp0s3

To make the connection permanent in the next boot, open the configuration file with your preferred editor and make sure the setting is: ONBOOT=yes

VirtualBox Network Setup

Define forwarding ports in the NAT configuration in VirtualBox network settings: Check your network settings and define port forwarding as described below: Machine→ Settings → Network→ Port Forwarding

Set the forwarding ports for Scylla: 9042, 7000, 7001, 9180 and 7199

  • Open the needed port settings for cqlsh connection in the firewall, using either firewall-cmd or iptables.

In CentOS 7 you can use the firewall-cmd utility.

firewall-cmd --zone=public --add-port=9042/tcp --permanent
firewall-cmd --reload

Or, in other configurations, you can use the iptables command.

iptables -I INPUT -p tcp --dport 9042 -j ACCEPT
service iptables save

Installing Scylla Repo File

Connect to the Scylla node by using the SSH utility. ssh root@127.0.0.1 -p 2222

The repo files are available for RedHat and CentOS Linux distributions on our Binary download page. To complete the installation, please follow the instructions found on the binary download page for RHEL or CentOS. Do not start Scylla until instructed to do so.

  • Next we need to configure Scylla to listen to the right IP address. Scylla must be configured to use the IP address defined by the local DHCP server. Set the following settings in the scylla.yaml file, which can be found in the /etc/scylla/ directory.
listen_address: 10.0.2.15
rpc_address: 10.0.2.15
- seeds: "10.0.2.15"

Start Scylla with the following command:

scylla_io_setup
systemctl start scylla-server

Now you should be able to run cqlsh and connect to Scylla:

cqlsh

cqlsh> describe keyspaces;

system_traces  system_schema  system_auth  system

cqlsh>

Another more convenient way is to connect to the Scylla server from your Mac, Linux or Windows host machine. To enable such connectivity, please follow the next procedure.

Connecting to Scylla

  • Open a shell on your host machine and connect to the Scylla server by connecting to the 127.0.0.1 (localhost) IP address.
Scyllas-MacBook-Pro:bin scylla$ ./cqlsh 127.0.0.1
Connected to Test Cluster at 127.0.0.1:9042.
[cqlsh 5.0.1 | Cassandra 2.1.8 | CQL spec 3.2.0 | Native protocol v3]
Use HELP for help.
cqlsh>

References

Notice

Running Scylla in Docker is the simplest way to experiment with Scylla and we highly recommend it. However, running stateful containers is complex and tuning is needed to maximize the performance. We recommend that you use packages and follow Best Practices for Running Scylla on Docker.

Running a Single Instance

$ docker run --name scylla -d scylladb/scylla

Adding Nodes

$ docker run --name scylla-node2 -d scylladb/scylla --seeds="$(docker inspect --format='{{ .NetworkSettings.IPAddress }}' scylla)"
 
$ docker run --name scylla-node3 -d scylladb/scylla --seeds="$(docker inspect --format='{{ .NetworkSettings.IPAddress }}' scylla)"

Using Scylla in Docker

  • You can verify that the cluster is up and running with the following command:
$ docker exec -it scylla nodetool status

Datacenter: datacenter1
=======================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
-- Address Load Tokens Owns (effective) Host ID Rack
UN 172.17.0.3 357 KB 256 66.4% 76ca991f-cf38-4984-8991-7675721a8bf8 rack1
UN 172.17.0.2 354.12 KB 256 70.6% dca727dd-c564-4166-b48f-ac79a5153503 rack1
UN 172.17.0.4 343.46 KB 256 63.0% 0f6d6b2e-de41-4729-a6a6-77e6f228fc5c rack1

  • To use the Cqlsh client to interact with Scylla:
$ docker exec -it scylla cqlsh

Connected to Test Cluster at 172.17.0.2:9042.
[cqlsh 5.0.1 | Cassandra 2.1.8 | CQL spec 3.2.1 | Native protocol v3] Use HELP for help.
cqlsh>

What’s Next?

Visit Scylla Documentation to get best practices for running Scylla on Docker.

For bug reports, please use Scylla’s issue tracker on GitHub. Please read the How to report a Scylla problem page before you report bugs. For general help, see Scylla’s documentation. For questions and comments, use Scylla’s mailing lists.

Run Scylla on AWS with Minimal Effort

Scylla Community AMI is optimized for i3 instances with zero tuning and maximum performance.

Choose AMI

Amazon EC2 AMIs

Note that the Scylla AMIs will not work without an attached drive(s) for XFS.

US East (Virginia)
us-east-1
ami-3ceac343
Scylla 2.2.0 AMI

US West (California)
us-west-1
ami-0d1fff6e
Scylla 2.2.0 AMI

US West 2 (Oregon)
us-west-2
ami-92dc8aea
Scylla 2.2.0 AMI

EU West 1 (Ireland)
eu-west-1
ami-02a1b7e8
Scylla 2.2.0 AMI

Choose an Instance Type

For a production system, instances with a fast network and large SSD are recommended. The following instance is pre-tuned in the Scylla AMI and recommended for highest performance:

  • i3 [i3.xlarge .. i3.16xlarge]

Other instance types will work, but with lesser permanence. If you do choose such a type, make sure to run scylla_io_setup.

Configure Instance Details

  • Number of instances – base on your cluster planning
  • Network – Select “Launch into EC2-Classic”, or your own VPC.
  • Advanced Details – Open and add the following options (as text) to the User Data section.
OptionDescription
clusternameRequired. The name of the cluster.
totalnodesRequired. The number of nodes you are adding to cluster. Use the same value as the “Number of instances” above.
seedsOptional. An ip address of a node in an existing cluster. This will instruct Scylla to join an existing cluster. The “clustername” option must match that of the existing cluster.
stop-servicesOptional. Do not start Scylla service on the nodes

Example:

--clustername test-cluster
--totalnodes 3

EC2 Configure Instance Details Capture

Add Storage

Scylla AMI require XFS to work. You Must attach at least one drive for Scylla to use as XFS for the data directory. When attaching more than one drive, AMI setup will install RAID0 on all of them.

The Scylla AMI requires at least two instance store volumes. The Scylla data directory will be formatted with XFS when the instance first boots. Scylla will fail to start if only one volume is configured.

Tag Instance

Configure Security Group

Make sure all Scylla Ports are open.

Review

Launch! You now have a running Scylla cluster on EC2.

To connect to the servers, use the username centos.

ssh -i your-key-pair.pem centos@ec2-public-ip

Default file paths:

  • scylla.yaml at /etc/scylla/scylla.yaml
  • data at /var/lib/scylla/

To check that the Scylla server and the JMX component are running, run nodetool.

nodetool status

Note: This Scylla AMI does not support automatic multi-zone deployment.

Monitoring

It is highly recommended to have a Scylla monitoring stack in place. For more on how to setup Scylla monitoring with Grafana here

Reference

Scylla servers set up using this method have the system configuration covered on System Configuration Guide already applied. See the guide for a complete reference on settings used.

Scylla binaries are available for the following platforms

Scylla offers binaries ready for install on RHEL 7, CentOS 7, Debian and Ubuntu. To download, please register and a link to the appropriate repo will be emailed to you.

              

We ask you to register for binary downloads so we can help you be as successful as possible and let you know about patches and fixes, learning resources, new features, and capabilities. We also invite you to share your feedback to help us improve Scylla.

 
After registration, you will receive an email with a link to the download and instructions for installing and running Scylla. If you don’t receive an email from us or have issues installing Scylla, please contact us at help@scylladb.com.

Building Scylla from Source

Please visit the Scylla GitHub repository for the most up to date instructions.

Clone the Scylla Git Repository

  • Run the following command to clone the repository:
git clone https://github.com/scylladb/scylla.git

Compile

cd scylla
git submodule update --init --recursive
sudo ./install-dependencies.sh
./configure.py --mode=release
ninja-build 
./build/release/scylla

Run

  • To run Scylla with one CPU and ./tmp as a data directory:
./build/release/scylla --datadir tmp --commitlog-directory tmp --smp 1
  • For more command-line options, run the following command:
./build/release/scylla --help

What’s Next?

For more information on building Scylla, please visit the HACKING page on the GitHub repository.

For bug reports, please use Scylla’s issue tracker on GitHub. Please read the How to report a Scylla problem page before you report bugs. For general help, see Scylla’s documentation. For questions and comments, use Scylla’s mailing lists.

Building the needed environment on VirtualBox

Deploying Scylla in a VirtualBox instance is a good starting point for testing functionality and compatibility, and for local development and integration testing of applications using Scylla. Please note: Deploying Scylla in VirtualBox is not recommended or supported for production. The performance benefits of Scylla may not be visible on VirtualBox.

Creating a VirtualBox Environment to Run Scylla

  • Download and install VirtualBox
  • Download a RHEL or CentOS .iso file to your host node. Use version 7.x or later.
  • Create a VirtualBox instance. Choose Linux, RHEL 64 bits.
  • Define the instance to have at least 4GB of memory and 20GB of disk space.
  • Attach and install the RHEL or CentOS 7.x ISO.

If you don’t have Internet connectivity from your VirtualBox instance, you will need to bring up a network interface.

Go to the network configuration directory

cd /etc/sysconfig/network-scripts/

Check for ifcfg scripts available. They will be named with the name of the Ethernet interface. You’ll have one named ifcfg-enp0s3, or similar.

Activate the connectivity, with

ifup ifcfg-enp0s3

To make the connection permanent in the next boot, open the configuration file with your preferred editor and make sure the setting is: ONBOOT=yes

VirtualBox Network Setup

Define forwarding ports in the NAT configuration in VirtualBox network settings: Check your network settings and define port forwarding as described below: Machine→ Settings → Network→ Port Forwarding

Set the forwarding ports for Scylla: 9042, 7000, 7001, 9180 and 7199

  • Open the needed port settings for cqlsh connection in the firewall, using either firewall-cmd or iptables.

In CentOS 7 you can use the firewall-cmd utility.

firewall-cmd --zone=public --add-port=9042/tcp --permanent
firewall-cmd --reload

Or, in other configurations, you can use the iptables command.

iptables -I INPUT -p tcp --dport 9042 -j ACCEPT
service iptables save

Installing Scylla Repo File

Connect to the Scylla node by using the SSH utility. ssh root@127.0.0.1 -p 2222

The repo files are available for RedHat and CentOS Linux distributions on our Binary download page. To complete the installation, please follow the instructions found on the binary download page for RHEL or CentOS. Do not start Scylla until instructed to do so.

  • Next we need to configure Scylla to listen to the right IP address. Scylla must be configured to use the IP address defined by the local DHCP server. Set the following settings in the scylla.yaml file, which can be found in the /etc/scylla/ directory.
listen_address: 10.0.2.15
rpc_address: 10.0.2.15
- seeds: "10.0.2.15"

Start Scylla with the following command:

scylla_io_setup
systemctl start scylla-server

Now you should be able to run cqlsh and connect to Scylla:

cqlsh

cqlsh> describe keyspaces;

system_traces  system_schema  system_auth  system

cqlsh>

Another more convenient way is to connect to the Scylla server from your Mac, Linux or Windows host machine. To enable such connectivity, please follow the next procedure.

Connecting to Scylla

  • Open a shell on your host machine and connect to the Scylla server by connecting to the 127.0.0.1 (localhost) IP address.
Scyllas-MacBook-Pro:bin scylla$ ./cqlsh 127.0.0.1
Connected to Test Cluster at 127.0.0.1:9042.
[cqlsh 5.0.1 | Cassandra 2.1.8 | CQL spec 3.2.0 | Native protocol v3]
Use HELP for help.
cqlsh>

References