liveBook · Manning

Seed node

As explained in ScyllaDB in Action

A seed node is an already-running cluster node that provides an initial contact point for a joining node to discover cluster membership.

A seed node is an already-running ScyllaDB node that gives a joining node its first contact with the cluster. The joining node uses it to discover cluster topology and membership, then receives data for the token ranges it will own. section 2.1.3 section 9.1.2

A joining node uses a seed in this sequence:

  • Configure the seed address when starting the new node; use a hostname or IP address. section 9.1.2
  • Contact the seed to learn other nodes and their positions on the hash ring. section 9.1.2
  • Exchange membership information through gossip, then receive streamed data while joining. section 2.1.3
  • Stop relying on the seed after joining; normal cluster gossip provides ongoing membership information. section 9.1.2

Joining a Docker cluster

Start a second node with the first node as its seed: docker run --name scylla-2 --hostname scylla-2 --network scylla-network -d -p 9242:9042 -p 19242:9042 scylladb/scylla:5.4 --seeds=scylla-1 --reactor-backend=epoll. Monitor nodetool status as the node changes from UJ (up and joining) to UN (up and normal). section 2.5

# seed_provider class_name is saved for future use.
# A seed address is mandatory.
seed_provider:
    # The addresses of hosts that will serve as contact points for
    # the joining node. It allows the node to discover the cluster
    # ring topology on startup (when joining the cluster). Once 
    # the node has joined the cluster, the seed list has no function.
    - class_name: org.apache.cassandra.locator.SimpleSeedProvider        #1
      parameters:
          # In a new cluster, provide the address of the first node.
          # In an existing cluster, specify the address of at least one
          # existing node. If you specify addresses of more than one 
          # node, use a comma to separate them.
          # For example: "<IP1>,<IP2>,<IP3>"
          - seeds: "127.0.0.1"     #2

The seed_provider configuration shows how contact points are declared, including multiple comma-separated addresses and the first-node exception. section 9.1.2

How ScyllaDB in Action covers it

How deep it goes
Explains configuration, discovery, gossip, streaming, and post-join behavior, stopping short of broader cluster-formation theory.
Examples
Uses Docker startup commands, scylla.yaml seed_provider settings, and nodetool status during node joining.
What it assumes
Assumes a running ScyllaDB node and basic Docker operation, while introducing cluster discovery from first principles.
What you can do after
Operate/configure a joining ScyllaDB node with a valid seed and verify its transition into the cluster.
How it connects
Connects cluster membership, gossip protocol, hash ring, node bootstrapping, and data streaming.

Also explained in

Compare how 2 books explain seed node →

Related concepts

This explainer was generated by Manning's knowledge graph from the text of ScyllaDB in Action. The section links point to the parts of the book it draws on.