Table of Contents | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Info |
---|
ImportantCentOS 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 |
---|
InfoThis 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.
...
Configuration | CentOS 7 | Rocky 8 | How to Find | ||
---|---|---|---|---|---|
Hostname |
| ||||
Frontend (External) IP |
| ||||
Backend (Swarm) IP | Either | ||||
admin.userName | This process is only tested for systems where. |
| =|||
admin. |
| admin.password |
| ||
site_name |
| ||||
group name (cluster name) |
| ||||
dhcp_range | Either |
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
...
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.If static IP addresses were previously assigned before this migration, skip this step and proceed to the “boot/reboot” step (see step 3).
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.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:Get an instance list that provides a node ID to use in the next step.
Code Block scsctl storage instance list
Assign an IP address to each node.
Code Block scsctl storage config set -d -i {chassis ID} "network.ipV4Address={your.static.address.here}"
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
Boot/reboot storage nodes.
Create a support bundle. If you run an issue, please contact DataCore Support including the support bundle.
Code Block language bash cd /root/dist && ./updateBundle.sh cd /root && /root/dist/techsupport-bundle-grab.sh -U ${SWARM_ADMIN_USER} -A ${SWARM_PASSWORD}
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 |
Install a minimal instance of Rocky Linux 8 or deploy the SCS RL8 OVA.
Prepare the basic configuration:
Set the hostname:
hostnamectl set-hostname <HOSTNAME>
Set the timezone, if required:
timedatectl set-timezone <CONTINENT>/<CITY>
Configure the frontend (external) IP, if not configured during installation:
nmcli con mod <NIC_NAME> <SETTING> <SETTING_VALUE>
Do NOT configure the backend (Swarm) network at this time. This will be reconfigured during the SCS initialization.
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.Ensure the OS is patched to the latest releases (assuming internet or repo connectivity):
dnf update
.
...
Info |
---|
Important
|
...
|
Copy the SCS backup to this server.
Code Block language bash 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 \ /
...
Initialize the SCS server containers and configurations with basic defaults.
Code Block scsctl init wizard -a
For Site_Name, use EXACTLY the same name as the old C7 SCS server, and as recorded at the beginning of this process.
For Swarm Administrator Password, use EXACTLY the same password as the old C7 SCS server, and as recorded at the beginning of this process
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.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.
If admin.username is not “admin” then run the following command:
Code Block scsctl network_boot config set -d "admin.userName=${EXISTING_ADMIN.USERNAME}"
Restore the SCS backup.
Code Block scsctl backup restore /root/mig2rl8/scs_backup_full.YYYYMMDD.tgz
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 language bash scsctl init dhcp --dhcp-reserve-lower ${EXISTING_DHCP_LOWER} --dhcp-reserve-uppper ${EXISTING_DHCP_UPPER}
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 lineSELINUX=disabled
, and un-commenting out the lineSELINUX=enforcing
orSELINUX=permissive
. Save the file, then reboot the server.Code Block language bash vi /etc/selinux/config ... SELINUX=enforcing ... reboot
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.
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 | ||
---|---|---|
| ||
/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
...