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

kubernetes
cassandra
docker

How to deploy Cassandra on Openshift and open it up to remote connections

John Doe

1/12/2021

cassandra
prisma

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