Author: MichaelLast Updated: Tue, Mar 1, 2022
If you're looking for a powerful open-source distributed database system, but don't want to spend hours configuring and installing it, then Cassandra is the right solution for you.
Cassandra is a powerful open-source distributed database system designed to handle large amounts of data across many commodity servers, providing high availability with no single point of failure. Instead, data is partitioned and spread over several servers using a key-value store.
Deploy a new Vultr Rocky Linux instance
Update your Vultr Rocky Linux 8 server
First, to run Cassandra on your system, you must install Java OpenJDK. OpenJDK is a free and open-source implementation of the Java Platform. Installation instructions are listed below.
dnf install command to install the
java-1.8.0-openjdk package. As of this writing, the latest version of Java OpenJDK is 1.8.xxx. The installation of Java OpenJDK might take some time to complete.
$ sudo dnf install java-1.8.0-openjdk -y
Once the installation completes, verify the installed version of Java OpenJDK in your system using the
java -version command.
$ java -version openjdk version "1.8.0_322" OpenJDK Runtime Environment (build 1.8.0_322-b06) OpenJDK 64-Bit Server VM (build 25.322-b06, mixed mode)
Cassandra is written in Java, but you'll need to install python as well since the cqlsh tool is written in python. Cqlsh is a command-line interface for Cassandra; you'll need to install python to run Cassandra.
dnf install command to install the
python36 package in your system. As of this writing, the latest version of python is 3.6.8.
& sudo dnf install python36 -y
Once the installation completes, verify the installed version in your system using the
python3 --version command.
$ python3 --version Python 3.6.8
alternatives --config command below to select the default Python interpreter. Cassandra requires python v3 or later. So you should select the latest one from the list and at least v3. Select the number corresponding to the latest python version and press Enter. In this demo, it's option 2.
$ alternatives --config python 1 /usr/libexec/no-python 2 /usr/bin/python3
Now you have the required components installed in your system, and you are ready to install Apache Cassandra.
The base Rocky Linux repository does not have a Cassandra package, so you need to add its repository to your system first.
Create a new file named
cassandra.repo under the /etc/yum.repos.d directory using the
nano text editor.
sudo nano /etc/yum.repos.d/cassandra.repo
cassandra.repo file with the following contents. The
baseurl specifies where the RPMs are located(
40x here means the latest version of Apache Cassandra 4.0.3 is downloaded from this location. You can always choose the latest version available in its official repository.
[cassandra] name=Apache Cassandra baseurl=https://downloads.apache.org/cassandra/redhat/40x/ gpgcheck=1 repo_gpgcheck=1 gpgkey=https://downloads.apache.org/cassandra/KEYS
Save and exit the file by pressing Ctrl+O, Enter, and Ctrl+X. Run the
dnf update command to update your system's package management index with the newly added repository.
$ sudo dnf update -y
dnf repolist Cassandra command to check if the new repo is properly set up. You will see the new Cassandra repo is enabled in the output.
$ sudo dnf repolist cassandra repo id repo name status cassandra Apache Cassandra enabled
Finally, install the
cassandra package using the
dnf install command.
& sudo dnf install cassandra -y
Start the Cassandra service.
sudo service cassandra start Reloading systemd: [ OK ] Starting cassandra (via systemctl): [ OK ]
Enable the Cassandra service to start on system reboot.
$ sudo systemctl enable cassandra cassandra.service is not a native service, redirecting to systemd-sysv-install. Executing: /usr/lib/systemd/systemd-sysv-install enable cassandra
Check the status of Cassandra's service.
sudo service cassandra status cassandra.service - LSB: distributed storage system for structured data Loaded: loaded (/etc/rc.d/init.d/cassandra; generated) Active: active (running) since Mon 2022-02-21 23:35:06 UTC; 4min 44s ago
Securing your Cassandra cluster is as important as installing it. Suppose you have several Cassandra nodes on the same network. You should secure the cluster at the beginning to prevent attackers from accessing your database.
firewall-cmd command below to create a new firewall zone named
cassandra-cluster for Cassandra. You should create a new zone to associate with the Cassandra cluster to prevent conflict with other services in the system. The
--permanent flag defines the new firewalls are permanent. The
--new-zone flag defines the new firewall zone.
$ sudo firewall-cmd --permanent --new-zone cassandra-cluster success
$ sudo firewall-cmd --reload
Add your server network CIDR into the new zone so that your client and server can communicate with each other.
$ sudo firewall-cmd --zone=cassandra-cluster --add-source=your-CIDR-here/24 --permanent
Run the following commands to allow access to the default ports for Cassandra on the new
sudo firewall-cmd --zone=cassandra-cluster --add-port=7000/tcp --permanent sudo firewall-cmd --zone=cassandra-cluster --add-port=9042/tcp --permanent
Finally, reload the
firewalld rules. At this point, your Cassandra cluster is secured and can only access from your-CIDR-here/24.
sudo firewall-cmd --reload
Now that you have a new Cassandra cluster, you can test if it's up and running properly.
nodetool status command to check your Cassandra cluster status. This command will return all nodes' information, including the IP address, the load average of each node, data center name, version, and health statistics about each node in the cluster.
$ sudo nodetool status Datacenter: datacenter1 ======================= Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns (effective) Host ID Rack UN 127.0.0.1 97.22 KiB 16 100.0% 5607b149-a79e-4e3e-8d98-5b4a26ff698f rack1
U indicates that the node is up. You can see which nodes are up or down by viewing the corresponding U or D in the output.
N indicates that the node is normal.
The Address shows the IP address of the node.
The Host ID is a unique identifier for each node.
You can also use the
cqlsh command to interact with your Cassandra cluster.
$ cqlsh Connected to Test Cluster at 127.0.0.1:9042 [cqlsh 6.0.0 | Cassandra 4.0.3 | CQL spec 3.4.5 | Native protocol v5] Use HELP for help. cqlsh>
For example, if you want to change the default name cluster(Test Cluster), you can use the
update command to change it. Replace
Vultr Cluster with your desired value.
$ UPDATE system.local SET cluster_name = 'Vultr Cluster' WHERE KEY = 'local';
Quit cqlsh shell.
Next time you use the
cqlsh command, it will use the new cluster name( Vultr Cluster). This output confirms that you have successfully installed Cassandra on your system.
$ cqlsh Connected to Vultr Cluster at 127.0.0.1:9042 [cqlsh 6.0.0 | Cassandra 4.0.3 | CQL spec 3.4.5 | Native protocol v5] Use HELP for help. cqlsh>
To learn more about Cassandra, please visit its official website.