IBM/Scalable-Cassandra-deployment-on-Kubernetes

Seed provider of rc-based cassandra pod is configured with only one Pod IP address

Closed this issue · 1 comments

Context: I deployed kubernetes version 1.7.2 using kubeadm:1.7.2.
I first created cassandra-service, then created cassandra-rc, then scaled cassandra-rc to 3 replicas.

The configuration of cassandra.yaml only lists one seed-provider.

    # Ex: "<ip1>,<ip2>,<ip3>"
          - seeds: "10.244.2.11"

Does this has a negative effect on throughput metrics for write/read requests? Otherwise, all podIPs should be listed.

The headless service has been correctly registered with the internal DNS service in my kubeadm based deployment:

ubuntu@kubeadm-master:~$ kubectl exec busybox -- nslookup cassandra
Server:    10.96.0.10
Address 1: 10.96.0.10 kube-dns.kube-system.svc.cluster.local

Name:      cassandra
Address 1: 10.244.1.10
Address 2: 10.244.2.11
Address 3: 10.244.3.11

Logs of cassandra instance (see attached file) indeed confirm that only one podIP is passed on:

seed_provider=org.apache.cassandra.locator.SimpleSeedProvider{seeds=10.244.2.11)

logs.txt

Followup to my question whether one seed node per cluster is bad for performance. According to this site https://blog.threatstack.com/scaling-cassandra-lessons-learned#7, it is not bad for performance. Actually, making all nodes seed nodes is bad for performance. Therefore one seed node per data center rack is sufficient. 2 seeds nodes are recommended for improved fault tolerance.

I also understand now that entrypoint.sh script is programmed such that it only extracts the first podIP. So this script needs to be adjusted if you need 2 seeds.