Cassandra cluster design does not allow you to run two nodes in a single host (machine). However, there are alternative methods to simulate two hosts in a single machine by adding virtual ethernet devices to the host on which we plan to run the Cassandra cluster.
This setup includes two virtual ethernet devices on the default ethernet device (e.g., eth0). Since we run two Carbon servers in one machine, some ports may try to bind with the default device and this results in port conflicts. Therefore we are going to offset one WSO2 SS instance by 10.
Users can use carbon.xml or the -Doffset
option to offset a Carbon server. When offsetting takes place, all the nodes are shifted by the offset. It is necessary to set the Cassandra storage port (cluster port) into a common value (7000). Cassandra related port’s base values can be set via system variables as explained in this tutorial.
Create two IP aliases:
ifconfig eth0:1 192.168.0.2 ifconfig eth0:2 192.168.0.3
- Configure cassandra.yaml in node 0 and node 1.
In node 0:
- seeds: "192.168.0.2" listen_address: 192.168.0.2 rpc_address: 192.168.0.2
In node 1:
- seeds: "192.168.0.2" listen_address: 192.168.0.3 rpc_address: 192.168.0.3
Update the
[SS_HOME]/repository/conf/etc/hector-config.xml
in node 0.<HectorConfiguration> <Cluster> <Name>ClusterOne</Name> <Nodes>192.168.0.2:9160</Nodes> <AutoDiscovery disable="false" delay="1000"/> </Cluster> </HectorConfiguration>
Update the
[SS_HOME]/repository/conf/etc/hector-config.xml
in node 1.<HectorConfiguration> <Cluster> <Name>ClusterOne</Name> <Nodes>192.168.0.3:9160</Nodes> <AutoDiscovery disable="false" delay="1000"/> </Cluster> </HectorConfiguration>
- Start the cluster.
Node 0 configurations: Use the
--start
command to start node 0.$SS_HOME/bin/wso2server.sh --start
- Node 1 configurations:
Update the startup.sh as follows:
-Dcassandra.rpc.port=9150 \ -Dcassandra.storage.port=6990 \
Use the
--start
command to start node 1.$SS_HOME/bin/wso2server.sh --start
You can verify the status of the cluster using a
notetool
command../nodetool -u admin -pw admin -p 9999 ring -h 192.168.0.2 ./nodetool -u admin -pw admin -p 10009 ring -h 192.168.0.3
Also you can check the listening port using a
netstat
command.netstat -anl |grep 7000 tcp6 0 0 192.168.0.3:7000 :::* LISTEN tcp6 0 0 192.168.0.2:7000 :::* LISTEN
netstat -anl |grep 9160 tcp6 0 0 192.168.0.3:9160 :::* LISTEN tcp6 0 0 192.168.0.2:9160 :::* LISTEN
You can now connect to the cluster using the
cassandra-cli
tool../cassandra-cli -u admin -pw admin -h 192.168.0.2 ./cassandra-cli -u admin -pw admin -h 192.168.0.3