Enabling virtual nodes on an existing production cluster

Steps and recommendations for enabling virtual nodes (vnodes) on an existing production cluster.

You cannot directly convert a single-token nodes to a vnode. However, you can configure another datacenter configured with vnodes already enabled and allow automatic distribution to the existing data into the new nodes. This method has the least impact on performance.

Restriction: DataStax recommends not using vnodes with DSE Search. However, if you decide to use vnodes with DSE Search, do not use more than 8 vnodes and ensure that allocate_tokens_for_local_replication_factor option in cassandra.yaml is correctly configured for your environment..

cassandra.yaml

The location of the cassandra.yaml file depends on the type of installation:
Package installations /etc/dse/cassandra/cassandra.yaml
Tarball installations installation_location/resources/cassandra/conf/cassandra.yaml

Procedure

  1. Add a new datacenter to the cluster.
  2. Once the new datacenter with vnodes enabled is up, switch your clients to use the new datacenter.
  3. Run a full repair with nodetool repair.

    This step ensures that after you move the client to the new datacenter that any previous writes are added to the new datacenter and that nothing else, such as hints, is dropped when you remove the old datacenter.

  4. Update your schema to no longer reference the old datacenter.
  5. Remove the old datacenter from the cluster.