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 Swarms and Stacks: What's the difference?
  • API Gateway no longer working as pass-through
  • Docker Container DNS resolution
  • Multiservice application in Teamcity - composing branches
  • Docker MySQL can't connect to socket
  • Create ubuntu docker image with nodeJS 4
  • 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

  • creating a docker image of an app inside a running container
  • Setting up our own private docker hub
  • Docker - can you over-allocate ram (tomcat)?
  • Unsupported config option: 'healthcheck'
  • How to run Linux Docker images on Windows Server 2016?
  • Serving Jupyter Notebook from within docker container on AWS not working?
  • 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.