ScyllaDB University Live | Free Virtual Training Event
Learn more
ScyllaDB Documentation Logo Documentation
  • Deployments
    • Cloud
    • Server
  • Tools
    • ScyllaDB Manager
    • ScyllaDB Monitoring Stack
    • ScyllaDB Operator
  • Drivers
    • CQL Drivers
    • DynamoDB Drivers
    • Supported Driver Versions
  • Resources
    • ScyllaDB University
    • Community Forum
    • Tutorials
Install
Search Ask AI
ScyllaDB Docs ScyllaDB Operator Deploy ScyllaDB Set up networking IPv6 networking Configure dual-stack networking

Configure dual-stack networking¶

This guide covers two dual-stack configurations:

  • IPv4-first dual-stack (recommended) — ScyllaDB uses IPv4 internally, services accessible via both protocols

  • IPv6-first dual-stack — ScyllaDB uses IPv6 internally, services accessible via both protocols

For IPv6-only (single-stack) deployments, see Configure IPv6-only. For configuration field details, see the IPv6 configuration reference.

Configure dual-stack networking with IPv4¶

What you’ll achieve: Deploy a ScyllaDB cluster that uses IPv4 for ScyllaDB communication and provides services accessible via both IPv4 and IPv6.

Before you begin:

  • You have a Kubernetes cluster with dual-stack networking enabled

  • You have ScyllaDB Operator installed

  • You have kubectl configured

After completion: Your ScyllaDB cluster will use IPv4 for inter-node communication while services are accessible via both IPv4 and IPv6.

Note

This is the recommended configuration for production IPv6 deployments.

Step 1: Apply the configuration¶

Apply the dual-stack configuration:

kubectl create namespace scylla
kubectl apply -f=https://raw.githubusercontent.com/scylladb/scylla-operator/v1.21/examples/ipv6/scylla-cluster-dual-stack.yaml

Step 2: Wait for the cluster to be ready¶

Monitor pod creation:

kubectl get pods -n scylla -l scylla-operator.scylladb.com/pod-type=scylladb-node -w

Wait until all pods show Running status.

Step 3: Verify dual-stack configuration¶

Check that services have both IP families:

kubectl get svc -n scylla -o custom-columns=NAME:.metadata.name,IP-FAMILIES:.spec.ipFamilies,POLICY:.spec.ipFamilyPolicy

Expected output shows [IPv4 IPv6] for IP families:

NAME                            IP-FAMILIES        POLICY
scylla-dual-stack-client        [IPv4 IPv6]        PreferDualStack
scylla-dual-stack-us-east-1a-0  [IPv4 IPv6]        PreferDualStack

Step 4: Verify cluster health¶

Check that all nodes are up:

kubectl exec -it scylla-dual-stack-example-rack-0 -n scylla -c scylla -- nodetool status

Expected output:

Datacenter: dual-stack-datacenter
===================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address           Load      Tokens  Owns  Host ID                              Rack
UN  fd00:10:244:1::7f 501.79 KB 256     ?     4583fff5-2aa6-4041-9be8-c74bcabaff8c dual-stack-rack-a
UN  fd00:10:244:2::6d 494.49 KB 256     ?     b1f889b4-80e7-4685-a3c5-1b81797c2ce4 dual-stack-rack-a
UN  fd00:10:244:3::6c 494.96 KB 256     ?     7a4bb6da-415e-4fc3-a6ca-0369c0e76bf0 dual-stack-rack-a

All nodes should show UN (Up/Normal) status.

Next steps¶

  • Migrate existing clusters to IPv6

  • Troubleshoot IPv6 issues

Configure dual-stack networking with IPv6¶

What you’ll achieve: Deploy a ScyllaDB cluster that uses IPv6 for ScyllaDB communication and provides services accessible via both IPv6 and IPv4.

Before you begin:

  • You have a Kubernetes cluster with dual-stack networking enabled

  • You have ScyllaDB Operator installed

  • You have kubectl configured

After completion: Your ScyllaDB cluster will use IPv6 for inter-node communication while services are accessible via both IPv6 and IPv4.

Note

This configuration is production-ready. For IPv4-first dual-stack, see Configure dual-stack with IPv4.

Step 1: Create the configuration¶

Create a file scylla-ipv6-first.yaml:

apiVersion: scylla.scylladb.com/v1
kind: ScyllaCluster
metadata:
  name: scylla-ipv6-first
  namespace: scylla
spec:
  version: 6.2.2
  agentVersion: 3.3.3
  datacenter:
    name: datacenter1
    racks:
      - name: rack1
        members: 3
        storage:
          capacity: 100Gi
          storageClassName: scylladb-local-xfs
        resources:
          limits:
            cpu: 4
            memory: 16Gi
          requests:
            cpu: 4
            memory: 16Gi
  
  network:
    ipFamilyPolicy: PreferDualStack
    ipFamilies:
      - IPv6  # ScyllaDB uses IPv6
      - IPv4  # Services also support IPv4
    dnsPolicy: ClusterFirst
  
  exposeOptions:
    nodeService:
      type: Headless
    broadcastOptions:
      nodes:
        type: PodIP
        podIP:
          source: Status
      clients:
        type: ServiceClusterIP

Step 2: Apply the configuration¶

kubectl create namespace scylla
kubectl apply -f scylla-ipv6-first.yaml

Step 3: Wait for the cluster to be ready¶

Monitor pod creation:

kubectl get pods -n scylla -l scylla-operator.scylladb.com/pod-type=scylladb-node -w

Wait until all pods show Running status.

Step 4: Verify dual-stack configuration¶

Check that services have both IP families:

kubectl get svc -n scylla -o custom-columns=NAME:.metadata.name,IP-FAMILIES:.spec.ipFamilies,POLICY:.spec.ipFamilyPolicy

Expected output shows [IPv6 IPv4] for IP families:

NAME                              IP-FAMILIES        POLICY
scylla-ipv6-first-client          [IPv6 IPv4]        PreferDualStack
scylla-ipv6-first-datacenter1-... [IPv6 IPv4]        PreferDualStack

Step 5: Verify cluster uses IPv6¶

Check that ScyllaDB is using IPv6 addresses:

NAMESPACE=scylla
CLUSTER_NAME=scylla-ipv6-first

pods=$(kubectl -n "${NAMESPACE}" get pods -l scylla/cluster="${CLUSTER_NAME}" -l scylla-operator.scylladb.com/pod-type=scylladb-node -o name)

for pod in ${pods}; do
  kubectl -n "${NAMESPACE}" exec "${pod}" -c scylla -- nodetool status
done

Expected output shows IPv6 addresses (with colons):

Datacenter: datacenter1
=======================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address              Load      Tokens  Owns  Host ID                              Rack
UN  fd00:10:244:1::7f    501.79 KB 256     ?     4583fff5-2aa6-4041-9be8-c74bcabaff8c rack1
UN  fd00:10:244:2::6d    494.49 KB 256     ?     b1f889b4-80e7-4685-a3c5-1b81797c2ce4 rack1
UN  fd00:10:244:3::6c    494.96 KB 256     ?     7a4bb6da-415e-4fc3-a6ca-0369c0e76bf0 rack1

Next steps¶

  • Migrate existing clusters to IPv6

  • Troubleshoot IPv6 issues

Was this page helpful?

PREVIOUS
Getting started with IPv6 networking
NEXT
Configure IPv6-only networking
  • Create an issue
  • Edit this page

On this page

  • Configure dual-stack networking
    • Configure dual-stack networking with IPv4
      • Step 1: Apply the configuration
      • Step 2: Wait for the cluster to be ready
      • Step 3: Verify dual-stack configuration
      • Step 4: Verify cluster health
      • Next steps
    • Configure dual-stack networking with IPv6
      • Step 1: Create the configuration
      • Step 2: Apply the configuration
      • Step 3: Wait for the cluster to be ready
      • Step 4: Verify dual-stack configuration
      • Step 5: Verify cluster uses IPv6
      • Next steps
ScyllaDB Operator
Search Ask AI
  • v1.21
    • master
    • v1.21
    • v1.20
    • v1.19
    • v1.18
  • Get Started
    • What Is ScyllaDB Operator?
    • ScyllaDB Concepts on Kubernetes
  • Install Operator
    • Provision infrastructure
      • Set up a GKE cluster for ScyllaDB
      • Set up an EKS cluster for ScyllaDB
      • Set up an OKE cluster for ScyllaDB
      • Set up an OpenShift cluster for ScyllaDB
    • Install with GitOps
    • Install with Helm
    • Install on OpenShift
  • Deploy ScyllaDB
    • Before you deploy
      • Set up dedicated node pools
      • Configure CPU pinning
      • Configure nodes
      • Configure ScyllaDB Operator
    • Deploy your first cluster
    • Reference deployments
      • Reference deployment: GKE
      • Reference deployment: EKS
      • Reference deployment: OKE
      • Reference deployment: OpenShift
    • Install ScyllaDB Manager
    • Set up networking
      • Configure external access
      • IPv6 networking
        • Getting started with IPv6 networking
        • Configure dual-stack networking
        • Configure IPv6-only networking
        • Migrate clusters to IPv6
        • Troubleshoot IPv6 networking issues
        • IPv6 networking concepts
    • Set up monitoring
      • Set up ScyllaDB Monitoring
      • Set up ScyllaDB Monitoring on OpenShift
      • Expose Grafana
    • Production checklist
  • Connect Your App
    • Connect via CQL
    • Alternator (DynamoDB API)
    • Discovery endpoint
  • Understand
    • Storage
    • Tuning
    • ScyllaDB Manager
    • Networking
    • ScyllaDB Monitoring overview
    • Bootstrap synchronisation
    • Automatic data cleanup
    • Sidecar and pod anatomy
    • Ignition
    • Pod disruption budgets
    • Security
    • StatefulSets and racks
  • Operate
    • Scale, add, remove racks
    • Replace nodes
    • Expand storage volumes
    • Use maintenance mode
    • Back up and restore
    • Restore from backup
    • Perform a rolling restart
    • Migrate a rack to a new node pool
    • Pass additional ScyllaDB arguments
    • Configure precomputed IO properties
  • Upgrade
    • Upgrading ScyllaDB Operator
    • Upgrading ScyllaDB clusters
  • Troubleshoot
    • Investigate pod restarts
    • Change log level on a live cluster
    • Recover from a failed node replace
    • Troubleshoot performance
    • Collect debugging information
      • Collect data with must-gather
      • must-gather contents
      • Query system tables for debugging
    • Collect core dumps
  • Reference
    • API Reference
      • scylla.scylladb.com
        • NodeConfig (scylla.scylladb.com/v1alpha1)
        • RemoteKubernetesCluster (scylla.scylladb.com/v1alpha1)
        • RemoteOwner (scylla.scylladb.com/v1alpha1)
        • ScyllaCluster (scylla.scylladb.com/v1)
        • ScyllaDBCluster (scylla.scylladb.com/v1alpha1)
        • ScyllaDBDatacenterNodesStatusReport (scylla.scylladb.com/v1alpha1)
        • ScyllaDBDatacenter (scylla.scylladb.com/v1alpha1)
        • ScyllaDBManagerClusterRegistration (scylla.scylladb.com/v1alpha1)
        • ScyllaDBManagerTask (scylla.scylladb.com/v1alpha1)
        • ScyllaDBMonitoring (scylla.scylladb.com/v1alpha1)
        • ScyllaOperatorConfig (scylla.scylladb.com/v1alpha1)
    • Feature gates
    • IPv6 configuration reference
    • Releases
    • Known issues
    • Conditions reference
    • nodetool alternatives
  • Contributing to ScyllaDB Operator
Docs Tutorials University Contact Us About Us
© 2026, ScyllaDB. All rights reserved. | Terms of Service | Privacy Policy | ScyllaDB, and ScyllaDB Cloud, are registered trademarks of ScyllaDB, Inc.
Last updated on 22 May 2026.
Powered by Sphinx 9.1.0 & ScyllaDB Theme 1.9.2