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.

  • MongoDB & Docker: connections from Dockerized Mongo client to external server refused
  • Docker Login for AWS ECR failing with “Cannot connect to the Docker deamon…”
  • How pass/set environment variables into HHVM?
  • Why is my docker CI image not reproducible / running everywhere
  • How to achieve build isolation and caching simultaneously?
  • What should the actioncable URL be set to under docker?
  • 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

  • Security measures with unsafe code on Docker
  • can I mount subdir of volume in docker run command
  • Docker-compose dinamic hostname for instances
  • Docker : multiples linked containers for each customers
  • Is the data in unbound docker container volumes committed to the image?
  • Docker - /bin/sh: <file> not found - bad ELF interpreter - how to add 32bit lib support to a docker image
  • 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.