Versions
- CentOS 6.3
- Oracle Java JDK 1.6
- Note: if running with WSO2 Data Services Server 3.0.1, only Apache Cassandra 1.1 is supported
- Apache Cassandra 1.2.3 or 1.1.9
- JNA 3.5.1
Prerequisites
- WARNING: Cassandra will fail with no or an erroneous error message if run with openjdk 1.6!
- Install Oracle JDK
Install
1. Edit /etc/yum.repos.d/datastax.repo
1 2 3 4 5 |
[datastax] name= DataStax Repo for Apache Cassandra baseurl=http://rpm.datastax.com/community enabled=1 gpgcheck=0 |
2. Install Cassandra
For Apache Cassandra 1.2.3:
1 |
sudo yum install cassandra12 |
For Apache Cassandra 1.1.9:
1 |
sudo yum install apache-cassandra11 |
3. Install a copy of JNA jar just for Cassandra
Note: JNA from base repo is 3.2.4 while Cassandra requires 3.2.7+
1 2 3 4 |
cd /usr/share/cassandra/lib sudo wget https://maven.java.net/content/repositories/releases/net/java/dev/jna/jna/3.5.1/jna-3.5.1.jar sudo chown cassandra:cassandra jna-3.5.1.jar sudo chown 755 jna-3.5.1.jar |
4. Fix permissions
1 2 |
sudo chown -R cassandra:cassandra /var/lib/cassandra sudo chown -R cassandra:cassandra /var/log/cassandra |
Configure
1. Edit /etc/profile.d/cassandra.sh
1 |
export CASSANDRA_HOME=/usr/share/cassandra |
2. Load into current session:
1 |
source /etc/profile.d/cassandra.sh |
3. Edit the following settings in /etc/cassandra/conf/cassandra.yaml:
1 2 3 4 5 6 7 |
cluster_name: '<your cluster name>' ... - seeds: "<first node hostname or ip>" ... listen_address: <hostname or ip> ... rpc_address: 0.0.0.0 |
Note: for more details about configuring and optimizing a multi-node cluster, see sources.
Example:
1 2 3 4 5 6 7 |
cluster_name: 'Lances Cassandra Cluster' ... - seeds: "192.168.0.1" ... listen_address: 192.168.0.1 ... rpc_address: 0.0.0.0 |
4. Open ports
- 7199 for JMX
- 9160 for Cassandra Thrift
- 7000 for Cassandra Gossip
5. Start cassandra:
1 |
sudo service cassandra start |
6. Start cassandra on boot:
1 |
sudo chkconfig cassandra on |
Test
Test First Node
Note: only use this test on the first node of the cluster
1 |
cassandra-cli |
Enter at cassandra-cli:
1 2 3 4 5 6 |
create keyspace TEST; use TEST; create column family Users with key_validation_class = 'UTF8Type' and comparator = 'UTF8Type' and default_validation_class = 'UTF8Type'; set Users[1234][name] = lance; set Users[1234][password] = password; get Users[1234]; |
Verify:
1 2 3 4 |
=> (column=name, value=lance, timestamp=1364348576638000) => (column=password, value=password, timestamp=1364348576659000) Returned 2 results. Elapsed time: 33 msec(s). |
Test Other Nodes
1 |
nodetool ring |
Output:
1 2 3 4 |
Address DC Rack Status State Load Effective-Ownership Token 56249068152829558755232038006353068538 XXX.XXX.XXX.XXX datacenter1 rack1 Up Normal 245.69 KB 77.37% 17740317962663376050438259070624145933 XXX.XXX.XXX.XXX datacenter1 rack1 Up Normal 50.42 KB 22.63% 56249068152829558755232038006353068538 |