This is going to be step by step guide how to install multi node Cassandra 2 cluster on Ubuntu server.
In this guide we are going to setup 5 nodes cluster. Bellow is the list of my machines in the cluster and obviously you may have different IPs.
- 10.64.200.47
- 10.64.200.48
- 10.64.200.49
- 10.64.200.50
- 10.64.200.51
➤ Step 1 is to have Java 7 or Java 8 installed in all nodes.
Let’s install Java 8 by adding custom apt repository.
| sudo add-apt-repository ppa:webupd8team/java |
| sudo apt-get update |
| sudo apt-get install oracle-java8-installer |
| java -version |
| sudo apt-get install oracle-java8-set-default |
➤ Step 2 is to add system group and user for cassandra in all nodes.
| sudo addgroup cassandra |
| sudo adduser --ingroup cassandra cassandra |
| sudo adduser cassandra sudo |
➤ Step 3 is to download and extract cassandra package in all nodes.
| sudo su - cassandra |
| wget http://mirrors.ae-online.de/apache/cassandra/2.1.3/apache-cassandra-2.1.3-bin.tar.gz |
| sudo tar -xvf /home/cassandra/apache-cassandra-2.1.3-bin.tar.gz -C /usr/local/ |
| cd /usr/local/ |
| sudo mv apache-cassandra-2.1.3 cassandra-2.1.3 |
| sudo ln -s /usr/local/cassandra-2.1.3 /usr/local/cassandra |
| sudo chown -R cassandra:cassandra /usr/local/cassandra-2.1.3 |
➤ Step 4 is to configure environment variables in all nodes.
Just edit the .profile file vim ~/.profile and paste the following at the end of the file:
| export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::") |
| export CASSANDRA_INSTALL=/usr/local/cassandra |
| export CASSANDRA_HOME=$CASSANDRA_INSTALL |
Afterwards source the .profile file source ~/.profile.
➤ Step 5 is to configure cassandra instances in all nodes
Just edit the $CASSANDRA_HOME/conf/cassandra.yaml file vim $CASSANDRA_HOME/conf/cassandra.yaml and replace the following keys with proper values:
| cluster_name: 'MyFirstCluster' |
| seeds: "10.64.200.47, 10.64.200.48" |
| listen_address: 10.64.200.47 |
| rpc_address: 10.64.200.47 |
* Note that each node should have it’s own listen_address and rpc_address corresponding to it’s IP address.
That’s it we are done with configuration!
➤ Step 6 is to start the cluster and verify it.
First seed nodes should be started so they can serve as seeds for others. To start the node simply run the following:
| $CASSANDRA_HOME/bin/cassandra -f |
To verify after all nodes are started run the following command:
| $CASSANDRA_HOME/bin/nodetool status |
You should see something like the following:
| Datacenter: datacenter1 |
| ======================= |
| Status=Up/Down |
| |/ State=Normal/Leaving/Joining/Moving |
| -- Address Load Tokens Owns Host ID Rack |
| UN 10.64.200.47 122.04 KB 256 ? e66d39d0-80d3-492f-900a-5dd006d9a763 rack1 |
| UN 10.64.200.48 142.04 KB 256 ? e97a6709-3216-43af-90de-5a3017761a46 rack1 |
| UN 10.64.200.49 127.83 KB 256 ? 6f74e3f8-4f20-43d8-90ff-5439939f5159 rack1 |
| UN 10.64.200.50 137.89 KB 256 ? 8bd7390d-dde8-4aaa-8a44-73981e698a05 rack1 |
| UN 10.64.200.51 161.07 KB 256 ? cf967b8c-4187-46d3-a464-fff09c28bb0d rack1 |
➤ Step 7 is to execute simple CQL.
To connect to cassandra cluster run the following command from any machine which has cassandra binaries:
| $CASSANDRA_HOME/bin/cqlsh 10.64.200.49 9042 |
And run the following examples:
| CREATE KEYSPACE "testdb" WITH REPLICATION = { 'class' : 'SimpleStrategy' , 'replication_factor' :3 }; |
| USE testdb; |
|
|
| CREATE TABLE employee ( |
| employeeID int, |
| departmentID int, |
| firstName varchar, |
| lastName varchar, |
| PRIMARY KEY (employeeID, departmentID) |
| ); |
|
|
| INSERT INTO employee (employeeID, departmentID, firstName, lastName) |
| VALUES (120, 10, 'John', 'Green'); |
| INSERT INTO employee (employeeID, departmentID, firstName, lastName) |
| VALUES (125, 13, 'Arthur', 'Smith'); |
|
|
| SELECT * FROM employee WHERE employeeID IN (120, 125); |
| SELECT COUNT(*) FROM employee; |
|
|
| CREATE INDEX employee_firstName_idx ON employee(firstName); |
| SELECT * FROM employee WHERE firstName = 'Arthur'; |
|
|
No comments:
Post a Comment