Adding a datacenter to a cluster using a designated datacenter as a data source
Add a datacenter to an existing cluster using a designated datacenter as a data source.
Complete the following steps to add a datacenter to an existing cluster using a designated datacenter as a data source. In this procedure, a new datacenter, DC4 is added to an existing cluster with existing datacenters DC1, DC2, and DC3.
dse.yaml
The location of the dse.yaml file depends on the type of installation:Package installations | /etc/dse/dse.yaml |
Tarball installations | installation_location/resources/dse/conf/dse.yaml |
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 |
cassandra-topology.properties
The location of the cassandra-topology.properties file depends on the type of installation:Package installations | /etc/dse/cassandra/cassandra-topology.properties |
Tarball installation | installation_location/resources/cassandra/conf/cassandra-topology.properties |
system.log
The location of the system.log file is:- /var/log/cassandra/system.log
cassandra-rackdc.properties
The location of the cassandra-rackdc.properties file depends on the type of installation:Package installations | /etc/dse/cassandra/cassandra-rackdc.properties |
Tarball installations | installation_location/resources/cassandra/conf/cassandra-rackdc.properties |
Prerequisites
Important: Complete the prerequisite tasks outlined in Initializing a DataStax Enterprise cluster to prepare the environment.
Procedure
-
Configure every keyspace using SimpleStrategy to use the NetworkTopologyStrategy
replication strategy, including (but not restricted to) the following
keyspaces.
If SimpleStrategy was used previously, this step is required to configure NetworkTopologyStrategy.
- Stop the OpsCenter Repair Service if it is running in the cluster. See Turning the Repair Service off.
-
In the new datacenter, install DSE on each
new node. Do not start the service or restart the node.
Important: Use the same version of DSE on all nodes in the cluster.
-
Configure properties in
cassandra.yaml on each new node, following the
configuration of the other nodes in the cluster.
Tip: Use the yaml_diff tool to review and make appropriate changes to the cassandra.yaml and dse.yaml configuration files.
-
In the
cassandra-rackdc.properties
(GossipingPropertyFileSnitch) or
cassandra-topology.properties
(PropertyFileSnitch) file, assign datacenter and rack names to the IP addresses
of each node, and assign a default datacenter name and rack name for unknown
nodes.
Note: Migration information: The GossipingPropertyFileSnitch always loads cassandra-topology.properties when the file is present. Remove the file from each node on any new cluster, or any cluster migrated from the PropertyFileSnitch.
# Transactional Node IP=Datacenter:Rack 110.82.155.0=DC_Transactional:RAC1 110.82.155.1=DC_Transactional:RAC1 110.54.125.1=DC_Transactional:RAC2 110.54.125.2=DC_Analytics:RAC1 110.54.155.2=DC_Analytics:RAC2 110.82.155.3=DC_Analytics:RAC1 110.54.125.3=DC_Search:RAC1 110.82.155.4=DC_Search:RAC2 # default for unknown nodes default=DC1:RAC1
Note: After making any changes in the configuration files, you must the restart the node for the changes to take effect. -
Make the following changes in the existing
datacenters.
-
On nodes in the existing datacenters, update the
-seeds
property in cassandra.yaml to include the seed nodes in the new datacenter. - Add the new datacenter definition to the cassandra.yaml properties file for the type of snitch used in the cluster. If changing snitches, see Switching snitches.
-
On nodes in the existing datacenters, update the
-
After you have installed and configured DataStax Enterprise on all nodes, start
the seed nodes one at a time, and then start the rest of the nodes:
- Package installations: Starting DataStax Enterprise as a service
- Tarball installations: Starting DataStax Enterprise as a stand-alone process
- Install and configure DataStax Agents on each node in the new datacenter if necessary:
-
Run
nodetool status
to ensure that new datacenter is up and running.nodetool status
Datacenter: DC1 =============== Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Owns Host ID Token Rack UN 10.200.175.11 474.23 KiB ? 7297d21e-a04e-4bb1-91d9-8149b03fb60a -9223372036854775808 rack1 Datacenter: DC2 =============== Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Owns Host ID Token Rack UN 10.200.175.113 518.36 KiB ? 2ff7d46c-f084-477e-aa53-0f4791c71dbc -9223372036854775798 rack1 Datacenter: DC3 =============== Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Owns Host ID Token Rack UN 10.200.175.111 961.56 KiB ? ac43e602-ef09-4d0d-a455-3311f444198c -9223372036854775788 rack1 Datacenter: DC4 =============== Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Owns Host ID Token Rack UN 10.200.175.114 361.56 KiB ? ac43e602-ef09-4d0d-a455-3322f444198c -9223372036854775688 rack1
-
After all nodes are running in the cluster and the client applications are
datacenter aware, use cqlsh to alter the keyspaces to add the desired
replication in the new datacenter.
ALTER KEYSPACE keyspace_name WITH REPLICATION = {'class' : 'NetworkTopologyStrategy', 'ExistingDC1' : 3, 'NewDC2' : 2};
Warning: If client applications, including DSE Search and DSE Analytics, are not properly configured, they might connect to the new datacenter before it is online. Incorrect configuration results in connection exceptions, timeouts, and/or inconsistent data. -
Run nodetool
rebuild on each node in the new datacenter, specifying the
corresponding datacenter/rack from the source datacenter.
nodetool rebuild -dc source_datacenter_name:source_datacenter_rack_name
The following commands replicate data from an existing datacenter DC1 to the new datacenter DC2 on each DC2 node. The rack specifications correspond with the rack specifications in DC1:On DC2:RACK1 nodes run:nodetool rebuild -dc DC1:RACK1
On DC2:RACK2 nodes run:nodetool rebuild -dc DC1:RACK2
On DC2:RACK3 nodes run:nodetool rebuild -dc DC1:RACK3
-
Monitor the rebuild progress for the new datacenter using
nodetool netstats
and examining the size of each node.Thenodetool rebuild
command issues a JMX call to the DSE node and waits for rebuild to finish before returning to the command line. Once the JMX call is invoked, the rebuild process will continue on the server regardless of the nodetool rebuild process (the rebuild will continue to run if nodetool dies.) There is not typically significant output from the nodetool rebuild command itself. Instead, rebuild progress should be monitored vianodetool netstats
, as well as examining the data size of each node.Note: The data load shown innodetool status
will only be updated after a given source node is done streaming, so it will appear to lag behind bytes reported on disk (e.g. du). If any streaming errors occur,ERROR
messages will be logged to system.log and the rebuild will stop. In the event of temporary failure,nodetool rebuild
can be re-run and skips any ranges that were already successfully streamed. - Adjust stream throttling on the source datacenter as required to balance out network traffic. See nodetool setstreamthroughput.
-
Confirm that all rebuilds are successful by searching for
finished rebuild
in the system.log of each node in the new datacenter.Note: In rare cases the communication between two streaming nodes may hang, leaving the rebuild operation alive but with no data streaming. Monitor streaming progress usingnodetool netstats
, and, if the streams are not making any progress, restart the node wherenodetool rebuild
was executed and re-runnodetool rebuild
with the same parameters used originally. - Start the DataStax Agent on each node in the new datacenter if necessary.
- Start the OpsCenter Repair Service if necessary. See Turning the Repair Service on.