Illustration Image

Cassandra.Link

The best knowledge base on Apache Cassandra®

Helping platform leaders, architects, engineers, and operators build scalable real time data platforms.

1/6/2017

Reading time:6 min

Adding Cassandra Node in OpenShift to Existing Cluster

by John Doe

I have 3 cassandra nodes(S1,S2,S3) which are installed on CentOS 6. Two of them (S1,S2) are in datacenter A and one of them (S3) is in openshift. I am trying to make benchmark test with multiple node clusters in multiple data centers.Cassandra installations and configurations on nodes S1 and S2 are based on Installing DataStax Community on RHEL-based systems on the other hand cassandra installation on node S3 (openshift) is based on How To Configure and Run Cassandra on OpenShift.All servers running fine but i could not add node S3 to cluster. All servers has exactly same configuration files (cassandra.yaml and cassandra-topology.properties)Nodes S1 and S2 have 1.2.18 version of cassandra.[root@node1 ~]# cassandra -v1.2.18Node S3 has 1.1.6 version of cassandra.[cassandra-xxxx.rhcloud.com xxxxxxxx]\> app-root/data/cassandra/bin/cassandra -vxss = -ea -javaagent:app-root/data/cassandra/bin/../lib/jamm-0.2.5.jar -XX:+UseThreadPriorities -XX:ThreadPriorityPolicy=42 -Xms1834M -Xmx1834M -Xmn256M -XX:+HeapDumpOnOutOfMemoryError -Xss180k1.1.6 All nodes have same cassandra.yaml and cassandra-topology.properties configurations as shown below(except listening ip address).cassandra.yamlcluster_name: 'MyDemoCluster'num_tokens: 256seed_provider: - class_name: org.apache.cassandra.locator.SimpleSeedProvider parameters: - seeds: "x.x.x.236"listen_address: x.x.x.xendpoint_snitch: PropertyFileSnitchcassandra-topology.properties# Cassandra Node IP=Data Center:Rackx.x.x.236=XXX:RAC1x.x.x.237=XXX:RAC2y.y.y.yyy=OPS:RAC1First of all , i started seed node while other nodes stopping. After a successfully start action i started other nodes(without any error messages in log files). Then when i run nodetool on seed node , i only see nodes S1 and S2 but not node S3.[root@node1]# nodetool statusDatacenter: XXX===============Status=Up/Down|/ State=Normal/Leaving/Joining/Moving-- Address Load Tokens Owns (effective) Host ID RackUN x.x.x.236 79.25 KB 256 100.0% xxxxxxxx-xxxx-404a-aa3f-fbddfb5da124 RAC2UN x.x.x.237 79.56 KB 256 100.0% xxxxxxxx-xxxx-4b27-970b-76944c382c9f RAC1cassandra log of Node S2 INFO [HANDSHAKE-/x.x.x.236] 2014-08-08 11:25:26,120 OutboundTcpConnection.java (line 418) Handshaking version with /x.x.x.Running cassandra on node S3 [cassandra-biberltd.rhcloud.com data]\> cassandra/bin/cassandra -fxss = -ea -javaagent:cassandra/bin/../lib/jamm-0.2.5.jar -XX:+UseThreadPriorities -XX:ThreadPriorityPolicy=42 -Xms1834M -Xmx1834M -Xmn256M -XX:+HeapDumpOnOutOfMemoryError -Xss180k INFO 11:36:31,296 Logging initialized INFO 11:36:31,305 JVM vendor/version: OpenJDK Server VM/1.7.0_65 INFO 11:36:31,305 Heap size: 1896284160/1896284160 INFO 11:36:31,305 Classpath: cassandra/bin/../conf:cassandra/bin/../build/classes/main:cassandra/bin/../build/classes/thrift:cassandra/bin/../lib/antlr-3.2.jar:cassandra/bin/../lib/apache-cassandra-1.1.6.jar:cassandra/bin/../lib/apache-cassandra-clientutil-1.1.6.jar:cassandra/bin/../lib/apache-cassandra-thrift-1.1.6.jar:cassandra/bin/../lib/avro-1.4.0-fixes.jar:cassandra/bin/../lib/avro-1.4.0-sources-fixes.jar:cassandra/bin/../lib/commons-cli-1.1.jar:cassandra/bin/../lib/commons-codec-1.2.jar:cassandra/bin/../lib/commons-lang-2.4.jar:cassandra/bin/../lib/compress-lzf-0.8.4.jar:cassandra/bin/../lib/concurrentlinkedhashmap-lru-1.3.jar:cassandra/bin/../lib/guava-r08.jar:cassandra/bin/../lib/high-scale-lib-1.1.2.jar:cassandra/bin/../lib/jackson-core-asl-1.9.2.jar:cassandra/bin/../lib/jackson-mapper-asl-1.9.2.jar:cassandra/bin/../lib/jamm-0.2.5.jar:cassandra/bin/../lib/jline-0.9.94.jar:cassandra/bin/../lib/json-simple-1.1.jar:cassandra/bin/../lib/libthrift-0.7.0.jar:cassandra/bin/../lib/log4j-1.2.16.jar:cassandra/bin/../lib/metrics-core-2.0.3.jar:cassandra/bin/../lib/servlet-api-2.5-20081211.jar:cassandra/bin/../lib/slf4j-api-1.6.1.jar:cassandra/bin/../lib/slf4j-log4j12-1.6.1.jar:cassandra/bin/../lib/snakeyaml-1.6.jar:cassandra/bin/../lib/snappy-java-1.0.4.1.jar:cassandra/bin/../lib/snaptree-0.1.jar:cassandra/bin/../lib/jamm-0.2.5.jar INFO 11:36:31,308 JNA not found. Native methods will be disabled. INFO 11:36:31,329 Loading settings from file:/var/lib/openshift/53e4cf805004462c540000a9/app-root/data/cassandra/conf/cassandra.yaml INFO 11:36:31,649 32bit JVM detected. It is recommended to run Cassandra on a 64bit JVM for better performance. INFO 11:36:31,650 DiskAccessMode 'auto' determined to be standard, indexAccessMode is standard INFO 11:36:32,322 Global memtable threshold is enabled at 602MB INFO 11:36:33,196 Initializing key cache with capacity of 90 MBs. INFO 11:36:33,218 Scheduling key cache save to each 14400 seconds (going to save all keys). INFO 11:36:33,220 Initializing row cache with capacity of 0 MBs and provider org.apache.cassandra.cache.SerializingCacheProvider INFO 11:36:33,228 Scheduling row cache save to each 0 seconds (going to save all keys). INFO 11:36:33,595 Couldn't detect any schema definitions in local storage. INFO 11:36:33,596 Found table data in data directories. Consider using the CLI to define your schema. INFO 11:36:33,664 No commitlog files found; skipping replay INFO 11:36:33,730 Cassandra version: 1.1.6 INFO 11:36:33,730 Thrift API version: 19.32.0 INFO 11:36:33,735 CQL supported versions: 2.0.0,3.0.0-beta1 (default: 2.0.0) INFO 11:36:33,835 Loading persisted ring state INFO 11:36:33,839 Starting up server gossip INFO 11:36:33,862 Enqueuing flush of Memtable-LocationInfo@8039520(135/168 serialized/live bytes, 3 ops) INFO 11:36:33,863 Writing Memtable-LocationInfo@8039520(135/168 serialized/live bytes, 3 ops) INFO 11:36:33,945 Completed flushing $HOME/app-root/data/cassandra-data/data/system/LocationInfo/system-LocationInfo-hf-1-Data.db (243 bytes) for commitlog position ReplayPosition(segmentId=1407512193559, position=595) INFO 11:36:33,982 Starting Messaging Service on port 17000 INFO 11:36:33,995 JOINING: waiting for ring information INFO 11:37:04,035 JOINING: schema complete, ready to bootstrap INFO 11:37:04,036 JOINING: getting bootstrap token INFO 11:37:04,045 Enqueuing flush of Memtable-LocationInfo@21839213(53/66 serialized/live bytes, 2 ops) INFO 11:37:04,046 Writing Memtable-LocationInfo@21839213(53/66 serialized/live bytes, 2 ops) INFO 11:37:04,079 Completed flushing $HOME/app-root/data/cassandra-data/data/system/LocationInfo/system-LocationInfo-hf-2-Data.db (163 bytes) for commitlog position ReplayPosition(segmentId=1407512193559, position=776) INFO 11:37:04,082 JOINING: sleeping 30000 ms for pending range setup INFO 11:37:34,083 JOINING: Starting to bootstrap... INFO 11:37:34,103 Enqueuing flush of Memtable-LocationInfo@21895329(53/66 serialized/live bytes, 2 ops) INFO 11:37:34,103 Writing Memtable-LocationInfo@21895329(53/66 serialized/live bytes, 2 ops) INFO 11:37:34,140 Completed flushing $HOME/app-root/data/cassandra-data/data/system/LocationInfo/system-LocationInfo-hf-3-Data.db (163 bytes) for commitlog position ReplayPosition(segmentId=1407512193559, position=957) INFO 11:37:34,154 Node /y.y.y.yyy state jump to normal INFO 11:37:34,155 Bootstrap/Replace/Move completed! Now serving reads. INFO 11:37:34,221 Binding thrift service to /y.y.y.yyy:19160 INFO 11:37:34,226 Using TFastFramedTransport with a max frame size of 15728640 bytes. INFO 11:37:34,232 Using synchronous/threadpool thrift server on /y.y.y.yyy : 19160 INFO 11:37:34,233 Listening for thrift clients...I only found INFO 11:36:31,308 JNA not found. Native methods will be disabled.My questions are How can i add openshift node to cluster?Does openshift support nodes which is a member of multiple data centers cluster?Must all nodes have same version of cassandra?

Illustration Image

I have 3 cassandra nodes(S1,S2,S3) which are installed on CentOS 6. Two of them (S1,S2) are in datacenter A and one of them (S3) is in openshift. I am trying to make benchmark test with multiple node clusters in multiple data centers.

Cassandra installations and configurations on nodes S1 and S2 are based on Installing DataStax Community on RHEL-based systems on the other hand cassandra installation on node S3 (openshift) is based on How To Configure and Run Cassandra on OpenShift.

All servers running fine but i could not add node S3 to cluster. All servers has exactly same configuration files (cassandra.yaml and cassandra-topology.properties)

Nodes S1 and S2 have 1.2.18 version of cassandra.

[root@node1 ~]# cassandra -v
1.2.18

Node S3 has 1.1.6 version of cassandra.

[cassandra-xxxx.rhcloud.com xxxxxxxx]\> app-root/data/cassandra/bin/cassandra -v
xss =  -ea -javaagent:app-root/data/cassandra/bin/../lib/jamm-0.2.5.jar -XX:+UseThreadPriorities -XX:ThreadPriorityPolicy=42 -Xms1834M -Xmx1834M -Xmn256M -XX:+HeapDumpOnOutOfMemoryError -Xss180k
1.1.6 

All nodes have same cassandra.yaml and cassandra-topology.properties configurations as shown below(except listening ip address).

cassandra.yaml

cluster_name: 'MyDemoCluster'
num_tokens: 256
seed_provider:
  - class_name: org.apache.cassandra.locator.SimpleSeedProvider
    parameters:
         - seeds:  "x.x.x.236"
listen_address: x.x.x.x
endpoint_snitch: PropertyFileSnitch

cassandra-topology.properties

# Cassandra Node IP=Data Center:Rack
x.x.x.236=XXX:RAC1
x.x.x.237=XXX:RAC2
y.y.y.yyy=OPS:RAC1

First of all , i started seed node while other nodes stopping. After a successfully start action i started other nodes(without any error messages in log files).

Then when i run nodetool on seed node , i only see nodes S1 and S2 but not node S3.

[root@node1]# nodetool status
Datacenter: XXX
===============
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address          Load       Tokens  Owns (effective)  Host ID                               Rack
UN  x.x.x.236  79.25 KB   256     100.0%            xxxxxxxx-xxxx-404a-aa3f-fbddfb5da124  RAC2
UN  x.x.x.237  79.56 KB   256     100.0%            xxxxxxxx-xxxx-4b27-970b-76944c382c9f  RAC1

cassandra log of Node S2

 INFO [HANDSHAKE-/x.x.x.236] 2014-08-08 11:25:26,120 OutboundTcpConnection.java (line 418) Handshaking version with /x.x.x.

Running cassandra on node S3

    [cassandra-biberltd.rhcloud.com data]\> cassandra/bin/cassandra -f
xss =  -ea -javaagent:cassandra/bin/../lib/jamm-0.2.5.jar -XX:+UseThreadPriorities -XX:ThreadPriorityPolicy=42 -Xms1834M -Xmx1834M -Xmn256M -XX:+HeapDumpOnOutOfMemoryError -Xss180k
 INFO 11:36:31,296 Logging initialized
 INFO 11:36:31,305 JVM vendor/version: OpenJDK Server VM/1.7.0_65
 INFO 11:36:31,305 Heap size: 1896284160/1896284160
 INFO 11:36:31,305 Classpath: cassandra/bin/../conf:cassandra/bin/../build/classes/main:cassandra/bin/../build/classes/thrift:cassandra/bin/../lib/antlr-3.2.jar:cassandra/bin/../lib/apache-cassandra-1.1.6.jar:cassandra/bin/../lib/apache-cassandra-clientutil-1.1.6.jar:cassandra/bin/../lib/apache-cassandra-thrift-1.1.6.jar:cassandra/bin/../lib/avro-1.4.0-fixes.jar:cassandra/bin/../lib/avro-1.4.0-sources-fixes.jar:cassandra/bin/../lib/commons-cli-1.1.jar:cassandra/bin/../lib/commons-codec-1.2.jar:cassandra/bin/../lib/commons-lang-2.4.jar:cassandra/bin/../lib/compress-lzf-0.8.4.jar:cassandra/bin/../lib/concurrentlinkedhashmap-lru-1.3.jar:cassandra/bin/../lib/guava-r08.jar:cassandra/bin/../lib/high-scale-lib-1.1.2.jar:cassandra/bin/../lib/jackson-core-asl-1.9.2.jar:cassandra/bin/../lib/jackson-mapper-asl-1.9.2.jar:cassandra/bin/../lib/jamm-0.2.5.jar:cassandra/bin/../lib/jline-0.9.94.jar:cassandra/bin/../lib/json-simple-1.1.jar:cassandra/bin/../lib/libthrift-0.7.0.jar:cassandra/bin/../lib/log4j-1.2.16.jar:cassandra/bin/../lib/metrics-core-2.0.3.jar:cassandra/bin/../lib/servlet-api-2.5-20081211.jar:cassandra/bin/../lib/slf4j-api-1.6.1.jar:cassandra/bin/../lib/slf4j-log4j12-1.6.1.jar:cassandra/bin/../lib/snakeyaml-1.6.jar:cassandra/bin/../lib/snappy-java-1.0.4.1.jar:cassandra/bin/../lib/snaptree-0.1.jar:cassandra/bin/../lib/jamm-0.2.5.jar
 INFO 11:36:31,308 JNA not found. Native methods will be disabled.
 INFO 11:36:31,329 Loading settings from file:/var/lib/openshift/53e4cf805004462c540000a9/app-root/data/cassandra/conf/cassandra.yaml
 INFO 11:36:31,649 32bit JVM detected.  It is recommended to run Cassandra on a 64bit JVM for better performance.
 INFO 11:36:31,650 DiskAccessMode 'auto' determined to be standard, indexAccessMode is standard
 INFO 11:36:32,322 Global memtable threshold is enabled at 602MB
 INFO 11:36:33,196 Initializing key cache with capacity of 90 MBs.
 INFO 11:36:33,218 Scheduling key cache save to each 14400 seconds (going to save all keys).
 INFO 11:36:33,220 Initializing row cache with capacity of 0 MBs and provider org.apache.cassandra.cache.SerializingCacheProvider
 INFO 11:36:33,228 Scheduling row cache save to each 0 seconds (going to save all keys).
 INFO 11:36:33,595 Couldn't detect any schema definitions in local storage.
 INFO 11:36:33,596 Found table data in data directories. Consider using the CLI to define your schema.
 INFO 11:36:33,664 No commitlog files found; skipping replay
 INFO 11:36:33,730 Cassandra version: 1.1.6
 INFO 11:36:33,730 Thrift API version: 19.32.0
 INFO 11:36:33,735 CQL supported versions: 2.0.0,3.0.0-beta1 (default: 2.0.0)
 INFO 11:36:33,835 Loading persisted ring state
 INFO 11:36:33,839 Starting up server gossip
 INFO 11:36:33,862 Enqueuing flush of Memtable-LocationInfo@8039520(135/168 serialized/live bytes, 3 ops)
 INFO 11:36:33,863 Writing Memtable-LocationInfo@8039520(135/168 serialized/live bytes, 3 ops)
 INFO 11:36:33,945 Completed flushing $HOME/app-root/data/cassandra-data/data/system/LocationInfo/system-LocationInfo-hf-1-Data.db (243 bytes) for commitlog position ReplayPosition(segmentId=1407512193559, position=595)
 INFO 11:36:33,982 Starting Messaging Service on port 17000
 INFO 11:36:33,995 JOINING: waiting for ring information
 INFO 11:37:04,035 JOINING: schema complete, ready to bootstrap
 INFO 11:37:04,036 JOINING: getting bootstrap token
 INFO 11:37:04,045 Enqueuing flush of Memtable-LocationInfo@21839213(53/66 serialized/live bytes, 2 ops)
 INFO 11:37:04,046 Writing Memtable-LocationInfo@21839213(53/66 serialized/live bytes, 2 ops)
 INFO 11:37:04,079 Completed flushing $HOME/app-root/data/cassandra-data/data/system/LocationInfo/system-LocationInfo-hf-2-Data.db (163 bytes) for commitlog position ReplayPosition(segmentId=1407512193559, position=776)
 INFO 11:37:04,082 JOINING: sleeping 30000 ms for pending range setup
 INFO 11:37:34,083 JOINING: Starting to bootstrap...
 INFO 11:37:34,103 Enqueuing flush of Memtable-LocationInfo@21895329(53/66 serialized/live bytes, 2 ops)
 INFO 11:37:34,103 Writing Memtable-LocationInfo@21895329(53/66 serialized/live bytes, 2 ops)
 INFO 11:37:34,140 Completed flushing $HOME/app-root/data/cassandra-data/data/system/LocationInfo/system-LocationInfo-hf-3-Data.db (163 bytes) for commitlog position ReplayPosition(segmentId=1407512193559, position=957)
 INFO 11:37:34,154 Node /y.y.y.yyy state jump to normal
 INFO 11:37:34,155 Bootstrap/Replace/Move completed! Now serving reads.
 INFO 11:37:34,221 Binding thrift service to /y.y.y.yyy:19160
 INFO 11:37:34,226 Using TFastFramedTransport with a max frame size of 15728640 bytes.
 INFO 11:37:34,232 Using synchronous/threadpool thrift server on /y.y.y.yyy : 19160
 INFO 11:37:34,233 Listening for thrift clients...

I only found

 INFO 11:36:31,308 JNA not found. Native methods will be disabled.

My questions are

  1. How can i add openshift node to cluster?
  2. Does openshift support nodes which is a member of multiple data centers cluster?
  3. Must all nodes have same version of cassandra?

Related Articles

node
hybrid.cloud
datastax

GitHub - IBM/datastax-cassandra-clickstream: Use DataStax Enterprise built on Apache Cassandra as a clickstream database

IBM

12/8/2023

Checkout Planet Cassandra

Claim Your Free Planet Cassandra Contributor T-shirt!

Make your contribution and score a FREE Planet Cassandra Contributor T-Shirt! 
We value our incredible Cassandra community, and we want to express our gratitude by sending an exclusive Planet Cassandra Contributor T-Shirt you can wear with pride.

Join Our Newsletter!

Sign up below to receive email updates and see what's going on with our company

Explore Related Topics

AllKafkaSparkScyllaSStableKubernetesApiGithubGraphQl

Explore Further

cassandra