Using multiple network interfaces

Steps for configuring DataStax Enterprise (DSE) for multiple network interfaces or when using different regions in cloud implementations.

You must configure settings in both the cassandra.yaml file and the relevant property file:

Where is the cassandra.yaml file?

The location of the cassandra.yaml file depends on the type of installation:

Installation Type Location

Package installations + Installer-Services installations

/etc/dse/cassandra/cassandra.yaml

Tarball installations + Installer-No Services installations

<installation_location>/resources/cassandra/conf/cassandra.yaml

Configuring cassandra.yaml for multiple networks or across regions in cloud implementations

In multiple networks or cross-region cloud scenarios, communication between datacenters can only take place using an external IP address. The external IP address is defined in the cassandra.yaml file using the broadcast_address setting. Configure each node as follows:

  1. In the cassandra.yaml file , set the listen_address to the private IP address of the node, and the broadcast_address to the public address of the node.

    This allows nodes to bind to nodes in another network or region, thus enabling multiple datacenter support. For intra-network or region traffic, DSE switches to the private IP after establishing a connection.

  2. Set the addresses of the seed nodes in the cassandra.yaml file to that of the public IP. Private IP are not routable between networks. For example:

    seeds: 50.34.16.33, 60.247.70.52

    Do not make all nodes seeds, see Internode communications (gossip).

  3. Be sure that the storage_port or ssl_storage_port is open on the public IP firewall.

Be sure to enable encryption and authentication when using public IPs. See Securing internal transactional node connections. Another option is to use a custom VPN to have local, inter-region/ datacenter IPs.

Additional cassandra.yaml configuration for non-EC2 implementations

If multiple network interfaces are used in a non-EC2 implementation, enable the listen_on_broadcast_address option.

listen_on_broadcast_address: true

In non-EC2 environments, the public address to private address routing is not automatically enabled. Enabling listen_on_broadcast_address allows DSE to listen on both listen_address and broadcast_address with two network interfaces.

Configuring the snitch for multiple networks

External communication between the datacenters can only happen when using the broadcast_address (public IP).

The GossipingPropertyFileSnitch is recommended for production. The cassandra-rackdc.properties file defines the datacenters used by this snitch. Enable the option prefer_local to ensure that traffic to broadcast_address will re-route to listen_address.

For each node in the network, specify its datacenter in cassandra-rackdc.properties file.

Where is the cassandra-rackdc.properties file?

The location of the cassandra-rackdc.properties depends on the type of installation:

Installation Type Location

Package installations + Installer-Services installations

/etc/dse/cassandra/cassandra-rackdc.properties

Tarball installations + Installer-No Services

<installation_location>/resources/cassandra/conf/cassandra-rackdc.properties

In the example below, there are two datacenters and each datacenter is named for its workload. The datacenter naming convention in this example is based on the workload. You can use other conventions, such as DC1, DC2 or 100, 200. (Datacenter names are case-sensitive.)

Node datacenters: Networks
Network A Network B

Node and datacenter:

  • node0

    dc=DC_A_transactional

    rack=RAC1

  • node1

    dc=DC_A_transactional

    rack=RAC1

  • node2

    dc=DC_B_transactional

    rack=RAC1

  • node3

    dc=DC_B_transactional

    rack=RAC1

  • node5

    dc=DC_A_analytics

    rack=RAC1

Node and datacenter:

  • node0

    dc=DC_A_transactional

    rack=RAC1

  • node1

    dc=DC_A_transactional

    rack=RAC1

  • node2

    dc=DC_B_transactional

    rack=RAC1

  • node3

    dc=DC_B_transactional

    rack=RAC1

Configuring the snitch for cross-region communication in cloud implementations

Be sure to use the appropriate snitch for your implementation. If deploying on Amazon EC2, see the instructions in Ec2MultiRegionSnitch.

In cloud deployments, the region name is treated as the datacenter name and availability zones are treated as racks within a datacenter. For example, if a node is in the us-east-1 region, us-east is the datacenter name and 1 is the rack location. (Racks are important for distributing replicas, but not for datacenter naming.)

In the example below, there are two datacenters and each datacenter is named for its workload. The datacenter naming convention in this example is based on the workload. You can use other conventions, such as DC1, DC2 or 100, 200. (Datacenter names are case-sensitive.)

For each node, specify its datacenter in the cassandra-rackdc.properties. The dc_suffix option defines the datacenters used by the snitch. Any other lines are ignored.

Node datacenters: Regions
Region: us-east Region: us-west

Node and datacenter:

  • node0

    dc_suffix=_1_transactional

  • node1

    dc_suffix=_1_transactional

  • node2

    dc_suffix=_2_transactional

  • node3

    dc_suffix=_2_transactional

  • node4

    dc_suffix=_1_analytics

  • node5

    dc_suffix=_1_search

This results in four us-east datacenters:

us-east_1_transactional
us-east_2_transactional
us-east_1_analytics
us-east_1_search

Node and datacenter:

  • node0

    dc_suffix=_1_transactional

  • node1

    dc_suffix=_1_transactional

  • node2

    dc_suffix=_2_transactional

  • node3

    dc_suffix=_2_transactional

  • node4

    dc_suffix=_1_analytics

  • node5

    dc_suffix=_1_search

This results in four us-west datacenters:

us-west_1_transactional
us-west_2_transactional
us-west_1_analytics
us-west_1_search

Was this helpful?

Give Feedback

How can we improve the documentation?

© 2024 DataStax | Privacy policy | Terms of use

Apache, Apache Cassandra, Cassandra, Apache Tomcat, Tomcat, Apache Lucene, Apache Solr, Apache Hadoop, Hadoop, Apache Pulsar, Pulsar, Apache Spark, Spark, Apache TinkerPop, TinkerPop, Apache Kafka and Kafka are either registered trademarks or trademarks of the Apache Software Foundation or its subsidiaries in Canada, the United States and/or other countries. Kubernetes is the registered trademark of the Linux Foundation.

General Inquiries: +1 (650) 389-6000, info@datastax.com