Skip to content

AxonOps — AI-Native Control Plane for Open Source Data Platforms

Cassandra Gossip Failures

Gossip is Cassandra's peer-to-peer protocol for sharing cluster state. Gossip failures cause nodes to lose visibility of each other, leading to cluster partitions and availability issues.


  • Nodes showing as DOWN (DN) in nodetool status despite being running
  • nodetool gossipinfo shows stale or missing entries
  • "Unable to gossip with" errors in logs
  • New nodes failing to join cluster
  • Inconsistent cluster views across nodes
  • Schema disagreement

Terminal window
# On multiple nodes - compare output
nodetool status

Different views from different nodes indicate gossip issues.

Terminal window
nodetool gossipinfo

Key fields to check:

  • STATUS: Should be NORMAL for healthy nodes
  • HEARTBEAT: Should be recent (incrementing)
  • GENERATION: Timestamp of last restart
Terminal window
nodetool statusgossip

Should return running. If not running, gossip is disabled.

Terminal window
# Gossip uses port 7000 (or 7001 for SSL)
for node in node1 node2 node3; do
nc -zv $node 7000 && echo "$node gossip: OK" || echo "$node gossip: FAILED"
done
# Check internode communication
for node in node1 node2 node3; do
nc -zv $node 7000
nc -zv $node 9042
done
Terminal window
grep -i "gossip\|cannot reach\|connection refused" /var/log/cassandra/system.log | tail -50
Terminal window
grep seeds /etc/cassandra/cassandra.yaml

Ensure seeds are reachable and consistent across cluster.


Problem: Firewall blocking gossip port

Terminal window
# Check firewall
sudo iptables -L -n | grep 7000
# Open gossip port
sudo iptables -A INPUT -p tcp --dport 7000 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 7001 -j ACCEPT # SSL

Problem: DNS resolution failing

Terminal window
# Test DNS
nslookup node1.example.com
# Use IP addresses in cassandra.yaml if DNS unreliable
listen_address: 192.168.1.10
Terminal window
# Check status
nodetool statusgossip
# Enable if disabled
nodetool enablegossip

Problem: Node has outdated view of cluster

Terminal window
# Restart gossip (non-disruptive)
nodetool disablegossip
sleep 5
nodetool enablegossip

Problem: Node persistently has wrong cluster view

Terminal window
# Rolling restart of affected node
nodetool drain
sudo systemctl restart cassandra

Problem: Removed node still appearing in gossip

Terminal window
# Check for zombie entries
nodetool gossipinfo | grep -B5 "STATUS:LEFT\|STATUS:removed"
# Force remove if necessary (use carefully)
nodetool assassinate <zombie-node-ip>

Assassinate Warning

nodetool assassinate should only be used for nodes that have been properly decommissioned or are permanently dead. Using it on a live node can cause data loss.

Problem: All seed nodes unreachable

  1. Verify at least one seed is running and reachable
  2. Ensure seeds are listed consistently across all nodes
  3. Seeds should never include all nodes - typically 2-3 per datacenter
# cassandra.yaml - good seed configuration
seed_provider:
- class_name: org.apache.cassandra.locator.SimpleSeedProvider
parameters:
- seeds: "node1,node2" # 2-3 seeds per DC

#!/bin/bash
# All nodes should see the same status (using SSH for local execution)
for node in node1 node2 node3; do
echo "=== $node ==="
ssh "$node" "nodetool status" | head -10
done
# Gossip should show recent heartbeats (run locally)
nodetool gossipinfo | grep HEARTBEAT
Terminal window
nodetool describecluster | grep -A 20 "Schema versions"

All nodes should show the same schema version.


CauseSymptomFix
FirewallConnection refusedOpen ports 7000/7001
DNS issuesCannot resolve hostnameUse IPs or fix DNS
Network partitionPartial cluster visibilityFix network routing
Clock skewGossip timestamp errorsSync with NTP
Bad seed configNodes can't find clusterFix seeds list
Resource exhaustionGossip timeoutsAdd resources

PortPurposeProtocol
7000Internode gossipTCP
7001Internode gossip (SSL)TCP
7199JMX monitoringTCP
9042CQL native transportTCP

  1. Monitor gossip health - Alert on nodes marked DOWN
  2. Use stable networking - Avoid network configurations that cause partitions
  3. Sync clocks - Use NTP across all nodes
  4. Consistent configuration - Same seeds on all nodes
  5. Firewall rules - Ensure gossip ports are always open
  6. Multiple seeds - 2-3 per datacenter for redundancy

CommandPurpose
nodetool statusCluster overview
nodetool gossipinfoDetailed gossip state
nodetool statusgossipCheck if gossip is running
nodetool enablegossipEnable gossip
nodetool disablegossipDisable gossip
nodetool assassinateRemove dead node from gossip