Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save avinash-mishra/e37d36d16fcee9f28d91446aeb5ba2e2 to your computer and use it in GitHub Desktop.
Save avinash-mishra/e37d36d16fcee9f28d91446aeb5ba2e2 to your computer and use it in GitHub Desktop.
How to setup a Cassandra 2.x Cluster in AWS EC2 / Amazon Linux

Cassandra 2.x Cluster on AWS EC2

Install java 8

# 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/8u45-b14/jdk-8u45-linux-x64.tar.gz"
tar -xzvf jdk-8u45-linux-x64.tar.gz
rm -rf jdk-8u45-linux-x64.tar.gz

# Configure JAVA_HOME
sudo vim ~/.bashrc
alias cls='clear'

export JAVA_HOME=~/jdk1.8.0_45
export JRE_HOME=~/jdk1.8.0_45/jre
export PATH=$PATH:~/jdk1.8.0_45/bin:/~/jdk1.8.0_45/jre/bin
source ~/.bashrc 
java -version

Cassandra 2.x

wget https://archive.apache.org/dist/cassandra/2.1.9/apache-cassandra-2.1.9-bin.tar.gz
tar -xzvf apache-cassandra-2.1.9-bin.tar.gz
rm -rf apache-cassandra-2.1.9-bin.tar.gz

Configure the Clsuter

# your_server_ip - copy the IP
hostname -i
vim ~/apache-cassandra-2.1.9/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

Start up the cluster

# on each cass node... 
cd ~/apache-cassandra-2.1.9
bin/cassandra start

Open EC2 Security Group ports

7000
9160
9042

Test data replication with CQLSH

# Connect to any node - you can run: hostname -i to get the IP
apache-cassandra-2.1.9/bin/cqlsh IP
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.9/bin/cqlsh IP
USE CLUSTER_TEST;
SELECT * from TEST;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment