If you use the virtual nodes features, then you can set the number of tokens to a value like 256, and this will allow Cassandra to automatically load balance your data when nodes are added or removed from a cluster.
There are two fields in cassandra.yaml that control the use of virtual nodes: ".. don’t set the initial_token
parameter in your conf/cassandra.yaml and instead enable the num_tokens
parameter. A good default value for this is 256." See more information here. You would also generally set partitioner: org.apache.cassandra.dht.Murmur3Partitioner
If you want to change the number of virtual nodes on an existing node, you need to rebuild the data on the node. See this.