Upgrading DDAC

Steps for upgrading DDAC 5.1 between patch (point) releases.

dse-env.sh

The default location of the dse-env.sh file depends on the type of installation:
Package installations /etc/dse/dse-env.sh
Tarball installations installation_location/bin/dse-env.sh

DataStax Enterprise and Apache Cassandra™ configuration files

Configuration file Installer-Services and package installations Installer-No Services and tarball installations
DataStax Enterprise configuration files
dse /etc/default/dse (systemd) or /etc/init.d/ (SystemV) N/A. Node type is set via command line flags.
byoh-env.sh /etc/dse/byoh-env.sh install_location/bin/byoh-env.sh
dse.yaml /etc/dse/dse.yaml install_location/resources/dse/conf/dse.yaml
logback.xml /etc/dse/cassandra/logback.xml install_location/resources/logback.xml
spark-env.sh /etc/dse/spark/spark-env.sh install_location/resources/spark/conf/spark-env.sh
spark-defaults.conf /etc/dse/spark/spark-defaults.conf install_location/resources/spark/conf/spark-defaults.conf
Cassandra configuration files
cassandra.yaml /etc/dse/cassandra/cassandra.yaml install_location/conf/cassandra.yaml
cassandra.in.sh /usr/share/cassandra/cassandra.in.sh install_location/bin/cassandra.in.sh
cassandra-env.sh /etc/dse/cassandra/cassandra-env.sh install_location/conf/cassandra-env.sh
cassandra-rackdc.properties /etc/dse/cassandra/cassandra-rackdc.properties install_location/conf/cassandra-rackdc.properties
cassandra-topology.properties /etc/dse/cassandra/cassandra-topology.properties install_location/conf/cassandra-topology.properties
jmxremote.password /etc/cassandra/jmxremote.password install_location/conf/jmxremote.password
Tomcat server configuration file
server.xml /etc/dse/resources/tomcat/conf/server.xml install_location/resources/tomcat/conf/server.xml

Upgrade order

Upgrade nodes in this order:
  • In multiple datacenter clusters, upgrade every node in one datacenter before upgrading another datacenter.
  • Upgrade the seed nodes within a datacenter first.
  • Upgrade nodes in this order:
    1. DSE Analytics datacenters
    2. Transactional/DSE Graph datacenters
    3. DSE Search datacenters

DataStax driver changes

DataStax drivers come in two types:

  • DataStax drivers for DataStax Enterprise — for use by DSE 4.8 and later
  • DataStax drivers for Apache Cassandra™ — for use by Apache Cassandra™ and DSE 4.7 and earlier
Note: While the DataStax drivers for Apache Cassandra drivers can connect to DSE 5.0 and later clusters, DataStax strongly recommends upgrading to the DSE drivers. The DSE drivers provide functionality for all DataStax Enterprise features.

Review this information on upgrading DataStax Enterprise (DSE) between patch (point) releases, such as upgrading from DDAC 5.1.3 to 5.1.11.

Attention: Read and understand these instructions before upgrading. Carefully reviewing the planning and upgrade instructions can prevent errors and data loss. In addition, review the DDAC release notes for all changes before upgrading.

Always upgrade to the latest version

Important: DataStax recommends that you upgrade to the latest available patch release unless you have specific requirements to do otherwise.
The latest version of DDAC is 5.1.18. To find your current version:
bin/cassandra -v
current_ddac_version

Upgrade SSTables

Warning: Be certain to upgrade SSTables on your nodes both before and after upgrading. Failure to upgrade SSTables will result in severe performance penalties and possible data loss.

Upgrade restrictions and limitations

General restrictions

  • Do not enable new features.
  • Do not run nodetool repair.
  • During the upgrade, do not bootstrap new nodes or decommission existing nodes.
  • Complete the cluster-wide upgrade before the expiration of gc_grace_seconds (approximately 13 days) to ensure any repairs complete successfully.
  • Do not issue TRUNCATE or DDL related queries during the upgrade process.

Restrictions for nodes using security

  • Do not change security credentials or permissions until the upgrade is complete on all nodes.
  • If you are not already using Kerberos, do not set up Kerberos authentication before upgrading. First upgrade the cluster, and then set up Kerberos.

Driver version impacts

Be sure to check driver compatibility. Depending on the driver version, you might need to recompile your client application code. See DataStax driver changes.

During upgrades, you might experience driver-specific impact when clusters have mixed versions of drivers. If your cluster has mixed versions, the protocol version is negotiated with the first host to which the driver connects, although certain drivers, such as Java 4.x/2.x automatically select a protocol version that works across nodes. To avoid driver version incompatibility during upgrades, use one of these workarounds:
  • Protocol version: Set the protocol version explicitly in your application at start up. Switch to the Java driver to the new protocol version only after the upgrade is complete on all nodes in the cluster.
  • Initial contact points: Ensure that the list of initial contact points contains only hosts with the oldest DSE version or protocol version. For example, the initial contact points contain only protocol version 2.
For details on protocol version negotiation, see protocol versions with mixed clusters in the Java driver version you're using, for example, Java driver.
Attention: Starting January 2020, you can use the same DataStax driver for Apache Cassandra™ (OSS), DataStax Enterprise, and DataStax Distribution of Apache Cassandra™ (DDAC). DataStax has unified drivers to avoid user confusion and enhance the OSS drivers with some of the features in the DSE drivers. For more information, see the Better Drivers for Cassandra™ blog.

Preparing to upgrade

Follow these steps to prepare each node for the upgrade:

  1. Familiarize yourself with the changes and features in the new release:
    • DDAC release notes for 5.1 (equivalent to Cassandra 3.11).
    • General upgrade advice and Cassandra features in NEWS.txt.
    • Cassandra changes in CHANGES.txt.
  2. Before upgrading, be sure that each node has adequate free disk space.
    Determine current DSE data disk space usage:
    sudo du -sh /var/lib/cassandra/data/
    3.9G	/var/lib/cassandra/data/
    Determine available disk space:
    sudo df -hT /
    Filesystem     Type  Size  Used Avail Use% Mounted on
    /dev/sda1      ext4   59G   16G   41G  28% /
    Important: The required space depends on the compaction strategy. See Disk space
  3. Upgrade the SSTables on each node to ensure that all SSTables are on the current version:
    nodetool upgradesstables
    Warning: Failure to upgrade SSTables when required results in a significant performance impact and increased disk usage.
    Tip: Use the --jobs option to set the number of SSTables that upgrade simultaneously. The default setting is 2, which minimizes impact on the cluster. Set to 0 to use all available compaction threads. DataStax recommends running the upgradesstables command on one node at a time or when using racks, one rack at a time.

    If the SSTables are already on the current version, the command returns immediately and no action is taken.

  4. Verify the Java runtime version and upgrade to the recommended version.
    java -version
    openjdk version "1.8.0_222"
    OpenJDK Runtime Environment (build 1.8.0_222-8u222-b10-1ubuntu1~18.04.1-b10)
    OpenJDK 64-Bit Server VM (build 25.222-b10, mixed mode)
    Important: Although Oracle JRE/JDK 8 is supported, DataStax does more extensive testing on OpenJDK 8.
  5. Run nodetool repair to ensure that data on each replica is consistent with data on other nodes:
    nodetool repair -pr
  6. Install the libaio package for optimal performance.
    RHEL platforms:
    sudo yum install libaio
    Debian:
    sudo apt-get install libaio1
  7. Back up any customized configuration files since they may be overwritten with default values during installation of the new version.
    Tip: If you backed up your installation using instructions in Backing up and restoring DSE, your original configuration files are included in the archive.

Upgrade steps

Follow these steps on each node in the recommended order. The upgrade process requires upgrading and restarting one node at a time.

  1. Flush the commit log of the current installation:
    nodetool drain
  2. Stop the node:
    ps auwx | grep cassandra
    bin/kill PID ## Use sudo if needed
  3. Install DDAC.
  4. Compare changes in the new configuration files with the backup configuration files after the upgrade but before restarting, remove deprecated settings, and update any new settings if required.
    Tip: Use the DSE yaml_diff tool to compare backup YAML files with the upgraded YAML files:
    cd /usr/share/dse/tools/yamls
    ./yaml_diff path/to/yaml-file-old path/to/yaml-file-new
    ...
     CHANGES 
    =========
    authenticator:
    - AllowAllAuthenticator
    + com.datastax.bdp.cassandra.auth.DseAuthenticator
    
    authorizer:
    - AllowAllAuthorizer
    + com.datastax.bdp.cassandra.auth.DseAuthorizer
    
    roles_validity_in_ms:
    - 2000
    + 120000
    ...
  5. Start the node:
    sudo bin/cassandra
  6. Verify that the upgraded datacenter names match the datacenter names in the keyspace schema definition:
    • Get the node's datacenter name:
      nodetool status | grep "Datacenter"
      Datacenter: datacenter-name
    • Verify that the node's datacenter name matches the datacenter name for a keyspace:
      cqlsh --execute "DESCRIBE KEYSPACE keyspace-name;" | grep "replication"
      CREATE KEYSPACE keyspace-name WITH replication = {'class': 'NetworkTopologyStrategy, 'datacenter-name': '3'};
  7. Review the logs for warnings, errors, and exceptions:
    grep -w 'WARNING\|ERROR\|exception' /var/log/cassandra/*.log
    Warnings, errors, and exceptions are frequently found in the logs when starting an upgraded node. Some of these log entries are informational to help you execute specific upgrade-related steps. If you find unexpected warnings, errors, or exceptions, contact DataStax Support.
    Tip: Non standard log locations are configured in dse-env.sh.
  8. After the entire cluster upgrade is complete: upgrade the SSTables on one node at a time or, when using racks, one rack at a time.
    Warning: Failure to upgrade SSTables when required results in a significant performance impact and increased disk usage and possible data loss. Upgrading is not complete until the SSTables are upgraded.
    nodetool upgradesstables
    Tip: Use the --jobs option to set the number of SSTables that upgrade simultaneously. The default setting is 2, which minimizes impact on the cluster. Set to 0 to use all available compaction threads. DataStax recommends running the upgradesstables command on one node at a time or when using racks, one rack at a time.
    Important: You can run the upgradesstables command before all the nodes are upgraded as long as you run the command on only one node at a time or when using racks, one rack at a time. Running upgradesstables on too many nodes at once will degrade performance.
  9. Repeat the upgrade process on each node in the cluster following the recommended order.