Manually prepare the system for WEKA configuration

If the system is not prepared using the WMS, perform this procedure to set the networking and other tasks before configuring the WEKA cluster.

Once the hardware and software prerequisites are met, prepare the backend servers and clients for the WEKA system configuration.

This preparation consists of the following steps:

  1. Enable SR-IOV (when required)

Some of the examples contain version-specific information. The software is updated frequently, so the package versions available to you may differ from those presented here.

Related topics

Prerequisites and compatibility

1. Install NIC drivers

The steps describing the installation of NIC drivers are provided as a courtesy. Refer to your NIC vendor documentation for the latest information and updates.

Mellanox OFED installation

This section describes an OFED installation procedure that has proven to be successful. However, Mellanox supports a number of other installation methods, any of which can be used to install OFED. For more information about other installation procedures, refer to the Mellanox documentation.

Meeting Mellanox OFED prerequisites

The Mellanox OFED installation has a number of dependencies. The following example shows the installation of OFED dependencies in RHEL/CentOS 7.x using yum's [base] and [update] repositories, which are supported and preconfigured in RHEL and CentOS.

yum install perl libnl lsof tcl libxml2-python tk

This example assumes that the server was provisioned using the "Minimal installation" option and that it has access to yum repositories, either locally or over the Internet. This method can trigger updates to existing packages already installed on the server.

Alternatively, it is possible to install OFED dependencies without triggering updates to already-installed packages, as shown in the following example:

yum --disablerepo=* --enablerepo=base install perl libnl lsof tcl libxml2-python tk

Once the dependencies have been satisfied, it is possible to perform the OFED installation procedure.

Mellanox OFED installation

The Mellanox OFED installation involves decompressing the distribution archive, which you obtain from the Mellanox website, and running the installation script. Refer to the following to begin the installation:

# tar xf MLNX_OFED_LINUX-4.5-1.0.1.0-rhel7.6-x86_64.tgz
# ls -lF
drwxr-xr-x   6 root root       4096 Nov 28  2018 MLNX_OFED_LINUX-4.5-1.0.1.0-rhel7.6-x86_64/
-rw-r--r--   1 root root  239624023 Dec  2  2018 MLNX_OFED_LINUX-4.5-1.0.1.0-rhel7.5-x86_64.tgz

# cd MLNX_OFED_LINUX-4.5-1.0.1.0-rhel7.6-x86_64/

# ./mlnxofedinstall
/tmp/MLNX_OFED_LINUX.414403.logs
General log file: /tmp/MLNX_OFED_LINUX.414403.logs/general.log
Verifying KMP rpms compatibility with target kernel...
This program will install the MLNX_OFED_LINUX package on your machine.
Note that all other Mellanox, OEM, OFED, RDMA or Distribution IB packages will be removed.
Those packages are removed due to conflicts with MLNX_OFED_LINUX, do not reinstall them.

Do you want to continue?[y/N]:y

On completion of the OFED installation, the NIC firmware may be updated to match the firmware requirements of the Mellanox OFED software. If an update was performed, reboot the server at the end of the installation for the new firmware to become effective. Otherwise, restart the driver by running the following:

# /etc/init.d/openibd restart

This concludes the Mellanox OFED installation procedure.

2. Enable SR-IOV

Single Root I/O Virtualization (SR-IOV) enablement is mandatory in the following cases:

  • The servers are equipped with Intel NICs.

  • When working with client VMs where it is required to expose the virtual functions (VFs) of a physical NIC to the virtual NICs.

Related topic

Enable the SR-IOV

3. Configure the networking

Ethernet configuration

The following example of ifcfg script is provided as a reference for configuring the Ethernet interface.

/etc/sysconfig/network-scripts/ifcfg-enp24s0
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="none"
DEFROUTE="no"
IPV4_FAILURE_FATAL="no"
IPV6INIT="no"
IPV6_AUTOCONF="no"
IPV6_DEFROUTE="no"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="enp24s0"
DEVICE="enp24s0"
ONBOOT="yes"
NM_CONTROLLED=no
IPADDR=192.168.1.1
NETMASK=255.255.0.0
MTU=9000

MTU 9000 (jumbo frame) is recommended for the best performance. Refer to your switch vendor documentation for jumbo frame configuration.

Bring the interface up using the following command:

# ifup enp24s0

InfiniBand configuration

InfiniBand network configuration normally includes Subnet Manager (SM), but the procedure involved is beyond the scope of this document. However, it is important to be aware of the specifics of your SM configuration, such as partitioning and MTU, because they can affect the configuration of the endpoint ports in Linux. For best performance, MTU of 4092 is recommended.

Refer to the following ifcfg script when the IB network only has the default partition, i.e., "no pkey":

/etc/sysconfig/network-scripts/ifcfg-ib1
TYPE=Infiniband
ONBOOT=yes
BOOTPROTO=static
STARTMODE=auto
USERCTL=no
NM_CONTROLLED=no
DEVICE=ib1
IPADDR=192.168.1.1
NETMASK=255.255.0.0
MTU=4092

Bring the interface up using the following command:

# ifup ib1

Verify that the “default partition” connection is up, with all the attributes set:

# ip a s ib1
4: ib1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 4092 qdisc mq state UP group default qlen 256
  link/infiniband 00:00:03:72:fe:80:00:00:00:00:00:00:24:8a:07:03:00:a8:09:48
brd 00:ff:ff:ff:ff:12:40:1b:ff:ff:00:00:00:00:00:00:ff:ff:ff:ff
    inet 10.0.20.84/24 brd 10.0.20.255 scope global noprefixroute ib0
       valid_lft forever preferred_lft forever

4. Verify the network configuration

Use a large-size ICMP ping to check the basic TCP/IP connectivity between the interfaces of the servers:

# ping -M do -s 8972 -c 3 192.168.1.2
PING 192.168.1.2 (192.168.1.2) 8972(9000) bytes of data.
8980 bytes from 192.168.1.2: icmp_seq=1 ttl=64 time=0.063 ms
8980 bytes from 192.168.1.2: icmp_seq=2 ttl=64 time=0.087 ms
8980 bytes from 192.168.1.2: icmp_seq=3 ttl=64 time=0.075 ms

--- 192.168.2.0 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1999ms
rtt min/avg/max/mdev = 0.063/0.075/0.087/0.009 ms

The-M do flag prohibits packet fragmentation, which allows verification of correct MTU configuration between the two endpoints.

-s 8972 is the maximum ICMP packet size that can be transferred with MTU 9000, due to the overhead of ICMP and IP protocols.

5. Configure dual-network links with policy-based routing

The following steps provide guidance for configuring dual-network links with policy-based routing on Linux systems. Adjust IP addresses and interface names according to your environment.

General Settings in /etc/sysctl.conf

  1. Open the /etc/sysctl.conf file using a text editor.

  2. Add the following lines at the end of the file to set minimal configurations per InfiniBand (IB) or Ethernet (Eth) interface:

    # Minimal configuration, set per IB/Eth interface
    net.ipv4.conf.ib0.arp_announce = 2
    net.ipv4.conf.ib1.arp_announce = 2
    net.ipv4.conf.ib0.arp_filter = 1
    net.ipv4.conf.ib1.arp_filter = 1
    net.ipv4.conf.ib0.arp_ignore = 0
    net.ipv4.conf.ib1.arp_ignore = 0
    
    # As an alternative set for all interfaces by default
    net.ipv4.conf.all.arp_filter = 1
    net.ipv4.conf.default.arp_filter = 1
    net.ipv4.conf.all.arp_announce = 2
    net.ipv4.conf.default.arp_announce = 2
    net.ipv4.conf.all.arp_ignore = 0
    net.ipv4.conf.default.arp_ignore = 0
  3. Save the file.

  4. Apply the new settings by running:

    sysctl -p /etc/sysctl.conf

RHEL/Rocky/CentOS routing configuration using the Network Scripts

Network scripts are deprecated in RHEL/Rocky 8. For RHEL/Rocky 9, use the Network Manager.

  1. Navigate to /etc/sysconfig/network-scripts/.

  2. Create the file /etc/sysconfig/network-scripts/route-mlnx0 with the following content:

    10.90.0.0/16 dev mlnx0 src 10.90.0.1 table weka1
    default via 10.90.2.1 dev mlnx0 table weka1
  3. Create the file /etc/sysconfig/network-scripts/route-mlnx1 with the following content:

    10.90.0.0/16 dev mlnx1 src 10.90.1.1 table weka2
    default via 10.90.2.1 dev mlnx1 table weka2
  4. Create the files /etc/sysconfig/network-scripts/rule-mlnx0 and /etc/sysconfig/network-scripts/rule-mlnx1 with the following content:

    table weka1 from 10.90.0.1
    table weka2 from 10.90.1.1
  5. Open /etc/iproute2/rt_tables and add the following lines:

    100 weka1
    101 weka2
  6. Save the changes.

RHEL/Rocky 9 routing configuration using the Network Manager

  • For Ethernet (ETH): To set up routing for Ethernet connections, use the following commands:

nmcli connection modify eth1 ipv4.routes "10.10.10.0/24 table=100" ipv4.routing-rules "priority 101 from 10.10.10.1 table 100"
nmcli connection modify eth2 ipv4.routes "10.10.10.0/24 table=200" ipv4.routing-rules "priority 102 from 10.10.10.101 table 200"

The route's first IP address in the provided commands represents the network's subnet to which the NIC is connected. The last address in the routing rules corresponds to the IP address of the NIC being configured, where eth1 is set to 10.10.10.1.

  • For InfiniBand (IB): To configure routing for InfiniBand connections, use the following commands:

nmcli connection modify ib0 ipv4.route-metric 100
nmcli connection modify ib1 ipv4.route-metric 101

nmcli connection modify ib0 ipv4.routes "10.10.10.0/24 table=100" 
nmcli connection modify ib0 ipv4.routing-rules "priority 101 from 10.10.10.1 table 100"
nmcli connection modify ib1 ipv4.routes "10.10.10.0/24 table=200" 
nmcli connection modify ib1 ipv4.routing-rules "priority 102 from 10.10.10.101 table 200"

The route's first IP address in the above commands signifies the network's subnet associated with the respective NIC. The last address in the routing rules corresponds to the IP address of the NIC being configured, where ib0 is set to 10.10.10.1.

Ubuntu Netplan configuration

  1. Open the Netplan configuration file /etc/netplan/01-netcfg.yaml and adjust it:

    network:
        version: 2
        renderer: networkd
        ethernets:
            enp2s0:
                dhcp4: true
                nameservers:
                        addresses: [8.8.8.8]
            ib1:
                addresses:
                        [10.222.0.10/24]
                routes:
                        - to: 10.222.0.0/24
                          via: 10.222.0.10
                          table: 100
                routing-policy:
                        - from: 10.222.0.10
                          table: 100
                          priority: 32764
            ib2:
                addresses:
                        [10.222.0.20/24]
                routes:
                        - to: 10.222.0.0/24
                          via: 10.222.0.20
                          table: 101
                routing-policy:
                        - from: 10.222.0.20
                          table: 101
                          priority: 32765
  2. After adjusting the Netplan configuration file, run the following commands:

    ip route add 10.222.0.0/24 via 10.222.0.10 dev ib1 table 100
    ip route add 10.222.0.0/24 via 10.222.0.20 dev ib2 table 101

SLES/SUSE Configuration

  1. Create /etc/sysconfig/network/ifrule-eth2 with:

    ipv4 from 192.168.11.21 table 100
  2. Create /etc/sysconfig/network/ifrule-eth4 with:

    ipv4 from 192.168.11.31 table 101
  3. Create /etc/sysconfig/network/scripts/ifup-route.eth2 with:

    ip route add 192.168.11.0/24 dev eth2 src 192.168.11.21 table weka1
  4. Create /etc/sysconfig/network/scripts/ifup-route.eth4 with:

    ip route add 192.168.11.0/24 dev eth4 src 192.168.11.31 table weka2
  5. Add the weka lines to /etc/iproute2/rt_tables:

    100 weka1
    101 weka2
  6. Restart the interfaces or reboot the machine:

    ifdown eth2; ifdown eth4; ifup eth2; ifup eth4

Related topic

High Availability (HA)

6. Configure the clock synchronization

The synchronization of time on computers and networks is considered good practice and is vitally important for the stability of the WEKA system. Proper timestamp alignment in packets and logs is very helpful for the efficient and quick resolution of issues.

Configure the clock synchronization software on the backends and clients according to the specific vendor instructions (see your OS documentation), before installing the WEKA software.

7. Disable the NUMA balancing

The WEKA system manages the NUMA balancing by itself and makes the best possible decisions. Therefore, we recommend disabling the NUMA balancing feature of the Linux kernel to avoid additional latencies in the operations.

To disable NUMA balancing, run the following command on the server:

echo 0 > /proc/sys/kernel/numa_balancing

8. Disable swap (if any)

WEKA highly recommends that any servers used as backends have no swap configured. This is distribution-dependent but is often a case of commenting out any swap entries in /etc/fstab and rebooting.

9. Validate the system preparation

The wekachecker is a tool that validates the readiness of the servers in the cluster before installing the WEKA software.

The wekachecker performs the following validations:

  • Dataplane IP, jumbo frames, and routing

  • ssh connection to all servers

  • Timesync

  • OS release

  • Sufficient capacity in /opt/weka

  • Available RAM

  • Internet connection availability

  • NTP

  • DNS configuration

  • Firewall rules

  • WEKA required packages

  • OFED required packages

  • Recommended packages

  • HT/AMT is disabled

  • The kernel is supported

  • CPU has a supported AES, and it is enabled

  • Numa balancing is enabled

  • RAM state

  • XFS FS type installed

  • Mellanox OFED is installed

  • IOMMU mode for SSD drives is disabled

  • rpcbind utility is enabled

  • SquashFS is enabled

  • noexec mount option on /tmp

The wekacheckertool applies to all WEKA versions. From V4.0, the following validations are not relevant, although the tool displays them:

  • OS has SELinux disabled or in permissive mode.

  • Network Manager is disabled.

Procedure

  1. Download the wekachecker tarball from https://github.com/weka/tools/blob/master/install/wekachecker and extract it.

  2. From the install directory, run ./wekachecker <hostnames/IPs> Where: The hostnames/IPs is a space-separated list of all the cluster hostnames or IP addresses connected to the high-speed networking. Example: ./wekachecker 10.1.1.11 10.1.1.12 10.1.1.4 10.1.1.5 10.1.1.6 10.1.1.7 10.1.1.8

  3. Review the output. If failures or warnings are reported, investigate them and correct them as necessary. Repeat the validation until no important issues are reported. The wekachecker writes any failures or warnings to the file: test_results.txt.

Once the report has no failures or warnings that must be fixed, you can install the WEKA software.

wekachecker report example
Dataplane IP Jumbo Frames/Routing test                       [PASS]
Check ssh to all hosts                                       [PASS]
Verify timesync                                              [PASS]
Check if OS has SELinux disabled or in permissive mode       [PASS]
Check OS Release...                                          [PASS]
Check /opt/weka for sufficient capacity...                   [WARN]
Check available RAM...                                       [PASS]
Check if internet connection available...                    [PASS]
Check for NTP...                                             [PASS]
Check DNS configuration...                                   [PASS]
Check Firewall rules...                                      [PASS]
Check for WEKA Required Packages...                          [PASS]
Check for OFED Required Packages...                          [PASS]
Check for Recommended Packages...                            [WARN]
Check if HT/AMT is disabled                                  [WARN]
Check if kernel is supported...                              [PASS]
Check if CPU has AES enabled and supported                   [PASS]
Check if Network Manager is disabled                         [WARN]
Checking if Numa balancing is enabled                        [WARN]
Checking RAM state for errors                                [PASS]
Check for XFS FS type installed                              [PASS]
Check if Mellanox OFED is installed                          [PASS]
Check for IOMMU disabled                                     [PASS]
Check for rpcbind enabled                                    [PASS]
Check for squashfs enabled                                   [PASS]
Check for /tmp noexec mount                                  [PASS]

RESULTS: 21 Tests Passed, 0 Failed, 5 Warnings

What to do next?

If you can use the WEKA Configurator, go to:

Configure the WEKA cluster using the WEKA Configurator

Otherwise, go to:

Manually configure the WEKA cluster using the resource generator

Last updated