Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Table of Contents
minLevel1
maxLevel1
outlinefalse
styledisc
typelist
printabletrue
Info

Important

CentOS 7 becomes EOL in June 2024, as a result, it will be required to migrate from CentOS7 to another distribution. DataCore has decided to standardize the Rocky Linux distribution, starting with v8. Therefore, this guide is intended to describe the process of migrating all the components running on CentOS 7 to Rocky Linux 8 (RL8).

Info

Info

This process is intended for Swarm platforms where SCS is the platform server. It is not intended for systems using CSN or for systems not running CentOS 7. The process for the Elasticsearch and Gateway components can be used, but as it requires upgrading to the latest versions of each component first, this may not be achievable with older systems. Please contact DataCore support before running this process on any older clusters.

...

  • A (temporary) frontend IP. This allows copying relevant configuration files and an easy transition from C7 to RL8 instance. This IP can either be temporary, DHCP-assigned, or the desired final frontend IP.

  • The rsync must be available on both the C7 and the RL8 instances.

  • If deploying by installing a minimal RL8 instance, this MUST be internet-connected. There is no offline version of this guide at present. Therefore, it is necessary to deploy using the OVA method if internet connection is not possible.

  • It is recommended that a valid backup and/or VM snapshot are made prior to commencing any upgrades or changes.

SCS Server

Prepare the (Old) C7 SCS Server

Upgrade SCS to the same version as the packages to be installed on RL8 or the OVA images. It is assumed that you are currently at v1.7.1-el7.
If the existing SCS server is less than 1.7.1, perform the upgrade to 1.7.1. Full instructions for the upgrade can be found here.

Gather Information

On the C7 instance, verify that the support bundle will aid DataCore Support in case of an issue or a requirement to revert changes.

...

This process is only tested for systems where
=

If you use a different name, please contact DataCore Support for guidance.

Configuration

CentOS 7

Rocky 8

How to Find

Hostname

hostname

Frontend (External) IP

ip a

Backend (Swarm) IP

Either ip a
or scsctl platform config show -d logging.syslogHost

admin.userName

.

scsctl platform config show -d admin.userName

admin.

scsctl platform config show -d admin.userName

admin.password

scsctl platform config show -d admin.password

site_name

scsctl platform group list | awk 'sub("global.platform.","",$1) {print $1}'

group name (cluster name)

scsctl storage group list

dhcp_range

Either history | grep 'scsctl init dhcp'
or discovered from sed -n -e '/subnet /,/\\}/p' /etc/dhcp/dhcpd.conf | grep '^\s*range'

Create a backup of the SCS system configuration and Swarm software repo.

Code Block
mkdir /root/mig2rl8
scsctl backup create -o /root/mig2rl8/scs_backup_full.YYYYMMDD.tgz

Prepare the (

...

new)

...

RL8 SCS Server

...

  1. Upgrade SCS to the same version as the packages to be installed on RL8 or the OVA images. It is assumed that you are currently at v1.7.1-el7.
    If the existing SCS server is less than 1.7.1, perform the upgrade to 1.7.1. Full instructions for the upgrade can be found here.

  2. If static IP addresses were previously assigned before this migration, skip this step and proceed to the “boot/reboot” step (see step 3).

    1. Use case #1: Allow DHCP to assign IP addresses
      When the cluster nodes are rebooted, DHCP will assign an IP address to each node. If the nodes have already been booted with manually assigned IPs, the assigned IP addresses will remain the same. If IP addresses were not manually assigned, but existing DHCP leases are still in effect, then currently assigned IP addresses will remain the same. If existing DHCP leases have expired (or this is the first boot of the storage cluster), DHCP will assign IP addresses from the allocated pool in no particular order. When this use case is selected, proceed to the “Boot/reboot” step.

    2. Use case #2: Pre-assign an IP address to each storage node
      In this case, an IP address must be manually assigned to each storage node before it is rebooted. The procedure for manual assignment is fully explained in Configuring Swarm for Static IPs with Swarm Cluster Services (SCS)).
      The summary of the manual assignment procedure is:

      1. Get an instance list that provides a node ID to use in the next step.

        Code Block
        scsctl storage instance list
      2. Assign an IP address to each node.

        Code Block
        scsctl storage config set -d -i {chassis ID} "network.ipV4Address={your.static.address.here}"
    3. If the storage cluster was previously using static IP addresses defined in SCS 1.5 (or an earlier version), remove the customized node.cfg files for each storage node.

      Code Block
      scsctl storage config file unset -d -i {chassis ID} node.cfg
  3. Boot/reboot storage nodes.

  4. Create a support bundle. If you run an issue, please contact DataCore Support including the support bundle.

    Code Block
    languagebash
    cd /root/dist && ./updateBundle.sh
    cd /root && /root/dist/techsupport-bundle-grab.sh -U ${SWARM_ADMIN_USER} -A ${SWARM_PASSWORD}
  5. Create a backup of the SCS system configuration and Swarm software repo.

    Code Block
    mkdir /root/mig2rl8
    scsctl backup create -o /root/mig2rl8/scs_backup_full.YYYYMMDD.tgz

Prepare the (new) RL8 SCS Server

Info

SERVER/VM Network Configuration

For the first NIC, connect this to the relevant VLAN for your Public/External//Management network.  For the second NIC this will ultimately need to be connected to the Swarm network – HOWEVER not yet.  For the first part of the process (ie SCS initialization) we need to set the final IP (which will be the same as the current Swarm IP) and the NIC link must be seen as “UP”.  Therefore, to allow the process to complete without error, we recommend connecting the second NIC to a “Dummy” or Null VLAN (a network where this IP can exist temporarily) at this time. Connect the second NIC on the SCS VM to the Swarm private network VLAN Connect the second NIC on the SCS VM to the Swarm private network VLAN 

  1. Install a minimal instance of Rocky Linux 8 or deploy the SCS RL8 OVA.

  2. Prepare the basic configuration:

    1. Set the hostname: hostnamectl set-hostname <HOSTNAME>

    2. Set the timezone, if required: timedatectl set-timezone <CONTINENT>/<CITY>

    3. Configure the frontend (external) IP, if not configured during installation:
      nmcli con mod <NIC_NAME> <SETTING> <SETTING_VALUE>

    4. Do NOT configure the backend (Swarm) network at this time. This will be reconfigured during the SCS initialization.

  3. Ensure that a second virtual disk of at least 100GB is installed and mounted to /var/log. This is automatically created and configured during the OVA deployment.

  4. Ensure the OS is patched to the latest releases (assuming internet or repo connectivity): dnf update.

...

Info

Important

  • The version of SCS installed on the RL8 server must match the major.minor version that is running on the old C7 SCS server, but be aware there is a specific variant for RL8 (-el8).

  • Verify that the Backup (Swarm) interface is disconnected at the virtual machine level. This allows the configuration below to proceed using the same IP as the old C7 SCS instance, without creating an IP conflict.
    This is not necessary if you plan to use a different IP for the Backend Swarm network

...

  • (-el8).

  1. Copy the SCS backup to this server.

    Code Block
    languagebash
    C7_SCS_FRONTEND_IP=<IP_of_existing_C7_SCS_server>
    rsync -av -R --ignore-missing-args \
       ${C7_SCS_FRONTEND_IP}:/etc/hosts       \
       ${C7_SCS_FRONTEND_IP}:/etc/chrony.conf \
       ${C7_SCS_FRONTEND_IP}:/root/mig2rl8    \
       ${C7_SCS_FRONTEND_IP}:/usr/local/bin/node_exporter \
       ${C7_SCS_FRONTEND_IP}:/usr/lib/systemd/system/node_exporter.service \
       /

...

  1. Initialize the SCS server containers and configurations with basic defaults.

    Code Block
    scsctl init wizard -a
    1. For Site_Name, use EXACTLY the same name as the old C7 SCS server, and as recorded at the beginning of this process.

    2. For Swarm Administrator Password, use EXACTLY the same password as the old C7 SCS server, and as recorded at the beginning of this process

    3. For the Swarm network IP, you can either specify the same Swarm IP as the existing C7 SCS server or specify a new IP.
      ** If using a new IP, this must still be in the same subnet and outside of the DHCP range, and you MUST make changes to the Swarm cluster detailed later in this guide.

    4. DO NOT perform the “scsctl repo components, add -f [storage bundle file name]” step, or the “scsctl diagnostics config scan_missing” step at this time. Proceed to restore the backup file.

  2. If admin.username is not “admin” then run the following command:

    Code Block
    scsctl network_boot config set -d "admin.userName=${EXISTING_ADMIN.USERNAME}" 
  3. Restore the SCS backup.

    Code Block
    scsctl backup restore /root/mig2rl8/scs_backup_full.YYYYMMDD.tgz
  4. Initialize the DHCP server using the same parameters as the old C7 SCS instance and as recorded at the beginning of this process.

    Code Block
    languagebash
    scsctl init dhcp --dhcp-reserve-lower ${EXISTING_DHCP_LOWER} --dhcp-reserve-uppper ${EXISTING_DHCP_UPPER}
  5. If required, re-enable SELinux (i.e. reverting step 3). This may take some time to complete.

    Re-enable SELinux, by editing the /etc/selinux/config file, removing the line SELINUX=disabled, and un-commenting out the line SELINUX=enforcing or SELINUX=permissive. Save the file, then reboot the server.

    Code Block
    languagebash
    vi /etc/selinux/config
    ...
    SELINUX=enforcing
    ...
    
    reboot
  6. If the system was deployed with a minimal installation, please install the Swarm support tools.

    Code Block
    cd /root
    curl -O https://support.cloud.datacore.com/tools/updateBundle.sh
    bash updateBundle.sh fresh
    rm updateBundle.sh

    If the system was deployed with the OVA, the support tools should already be installed, but please update with the command below:

    Code Block
    cd /root/dist && ./updateBundle.sh

Migrate to the (New) RL8 SCS

...

Server

.At this point, the C7 SCS instance is the live server. This section of the process will finalize the process by disconnecting the C7 instance and making the RL8 server the primary instance.

  1. If you are re-using the same Swarm IP on the backend network, disconnect the backend (Swarm) interface at the VM level for the C7 SCS instance, and connect the second NIC on the RL8 SCS VM to the Swarm private network VLAN.

Note

At this time, any Swarm logging will be lost.

If, however, you are changing the Swarm IP on the backend network, it is necessary to redirect logging to the RL8 server.

Code Block
languagebash
/root/dist/swarmctl -d ${ANY_STORAGE_NODE_IP} -C log.host -V ${RL8_SWARM_IP} -p ${SWARM_ADMIN_USER}:${SWARM_PASSWORD}

At this time, Swarm logging should be directed to this server.

...

In a production environment, there will likely be multiple gateway instances that need to be migrated. Therefore, repeat this procedure for each gateway, then test each instance thoroughly before proceeding to the next gateway instance.

...

Repeat the above Elasticsearch procedure for all the nodes in the cluster.

Option B - Adding New RL8 Nodes to the Existing Cluster and Retiring Old C7 Nodes

...