Configure a Cassandra 2.x Cluster on EC2
Cassandra is a kick ass NoSQL Database that guarantees strong consistency. Inspired by Amazon Dynamo paper Cassandra can deliver high availability and strong consistency. Battle tested by companies like Apple, eBay, Netflix, Github, Nasa and several others. For this blog post, I will show how to setup a simple Cassandra cluster. This setup is for development purpose and it's not ready for production.
Cheers,
Diego Pacheco
# Remove java 7
sudo yum remove -y java
# Install basic packages
sudo yum install -y git
# Download and install java 8
wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u161-b12/2f38c3b165be4555a1fa6e98c45e0808/jdk-8u161-linux-x64.tar.gz"
tar -xzvf jdk-8u161-linux-x64.tar.gz
rm -rf jdk-8u161-linux-x64.tar.gz
# Configure JAVA_HOME
sudo vim ~/.bashrc
alias cls='clear'
export JAVA_HOME=~/jdk1.8.0_161
export JRE_HOME=~/jdk1.8.0_161/jre
export PATH=$PATH:~/jdk1.8.0_161/bin:/~/jdk1.8.0_161/jre/bin
wget https://archive.apache.org/dist/cassandra/2.1.19/apache-cassandra-2.1.19-bin.tar.gz
tar -xzvf apache-cassandra-2.1.19-bin.tar.gz
rm -rf apache-cassandra-2.1.19-bin.tar.gz
# your_server_ip - copy the IP
hostname -i
vim ~/apache-cassandra-2.1.19/conf/cassandra.yaml
cluster_name: 'Test Cluster'
listen_address: your_server_ip
rpc_address: your_server_ip
seed_provider:
- class_name: org.apache.cassandra.locator.SimpleSeedProvider
parameters:
- seeds: "ip1,ip2,...ipN"
endpoint_snitch: GossipingPropertyFileSnitch
# on each cass node...
cd ~/apache-cassandra-2.1.19
bin/cassandra start
7000
9160
9042
# Connect to any node - you can run: hostname -i to get the IP
apache-cassandra-2.1.19/bin/cqlsh $(hostname -i)
CREATE KEYSPACE CLUSTER_TEST WITH REPLICATION = { 'class' : 'SimpleStrategy', 'replication_factor' : 3 };
USE CLUSTER_TEST;
CREATE TABLE TEST ( key text PRIMARY KEY, value text);
INSERT INTO TEST (key,value) VALUES ('1', 'works');
SELECT * from TEST;
# Connect to any other node - you can run: hostname -i to get the IP - check for data replication
apache-cassandra-2.1.19/bin/cqlsh IP
USE CLUSTER_TEST;
SELECT * from TEST;
Diego Pacheco