What is the limitation with one-node Cassandra cluster?

I am experimenting with Cassandra and Opscenter. In the Opscenterd’s log file, I found this line

2015-07-29 16:10:16+0000 [] ERROR: Problem while calling CreateClusterConfController (SingleNodeProvisioningError): Due to a limitation with one-node clusters, OpsCenter will not be able to communicate with the Datastax Agent unless list
en_address/broadcast_address in cassandra.yaml are set to 172.17.42.1. Please ensure these match before continuing.

  • Docker local private registry cross region setup
  • Stop recently started container in docker?
  • Cannot SSH using private key while building Docker image
  • Docker tomcat7 container cannot connect to host activemq
  • Passing a list of arguments to docker at build / run time
  • Jupyter notebook on Docker not working behind proxy
  • Because I deployed Cassandra and Opscenter in different Docker containers, I must set listen_address to the container’s internal IP (because Cassandra sitting in a container knows nothing about its host) and broadcast_address to the corresponding host’s bridge IP. This is the normal setup if you deploy Cassandra on machines behind separate gateways (like AWS EC2 where each instance has a private and a public IP).

    Question 1: What exactly is the limitation with one-node cluster?

    Question 2: How should I workaround the problem in this case?

    Thanks

  • Not able to connect to cassandra from host machine
  • Docker Default Operating System
  • How to access web page served by nginx web server running in docker container
  • Use Eureka despite having random external port of docker containers
  • What are the reasons not to use many RUN commands in a Dockerfile?
  • Can I mount host directory contents to container directory?
  • One Solution collect form web for “What is the limitation with one-node Cassandra cluster?”

    Question 1: What exactly is the limitation with one-node cluster?

    OpsCenter (via underlying python driver) is reading cluster information from Cassandra’s system tables (namely, system.peers and system.local), with most of the information coming from system.peers, including broadcast interfaces for each of the nodes.

    However, that table does not contain information about the node itself, only about its peers. When there are no peers, there is no way to get broadcast address from Cassandra itself, and that’s what OpsCenter uses to tie actual Cassandra instances to the internal representation. In this case OpsCenter uses whatever address you specified as a seed (172.17.42.1 here), and when agents report with a different IP (they’re getting Cassandra’s broadcast address via JMX), OpsCenter would discard those messages.

    Question 2: How should I workaround the problem in this case?

    Try setting local_address in address.yaml to 172.17.42.1, this should do the trick.

    Docker will be the best open platform for developers and sysadmins to build, ship, and run distributed applications.