如果您是基于CentOS 7.9或CentOS 8.4版本的自定义镜像创建的ecs.sccc7或ecs.sccg7规格族的超级计算集群SCC(Super Computing Cluster)实例,且需要实现多台实例之间使用RoCE RDMA通信,则需要参考本文在实例内手动安装RDMA驱动,来保证您可以正常使用RDMA功能。

前提条件

已通过CentOS 7.9或CentOS 8.4版本的自定义镜像创建了ecs.sccc7或ecs.sccg7规格族的SCC实例。具体操作,请参见使用自定义镜像创建实例

背景信息

SCC实例规格族ecs.sccc7和ecs.sccg7配置了RDMA网卡,处于同一可用区同一高可用集群内的多台实例之间可以使用RoCE RDMA网卡通信。阿里云的SCC实例默认仅支持特定的SCC版操作系统镜像,如果是基于CentOS 7.9或CentOS 8.4版本的自定义镜像创建的ecs.sccc7或ecs.sccg7规格的实例,默认没有安装RDMA驱动,需手动安装。
说明 除以上情况,SCC实例默认已安装了RDMA驱动,无需再手动安装。

操作步骤

  1. 远程连接已创建的SCC实例。
    具体操作,请参见连接方式概述
  2. 依次运行以下命令,安装相关依赖包。
    1. 安装DKMS(Dynamic Kernel Module Support)。
      yum install dkms -y
    2. 运行以下命令,下载MFT工具安装包。
      wget https://www.mellanox.com/downloads/MFT/mft-4.17.0-106-x86_64-rpm.tgz
    3. 运行以下命令,解压MFT工具安装包。
      tar zvxf mft-4.17.0-106-x86_64-rpm.tgz
    4. 依次运行以下命令,进入MFT工具并运行该工具。
      cd mft-4.17.0-106-x86_64-rpm
      ./install.sh
  3. 依次运行以下命令,分别下载SCC实例规格族定制的驱动包。
    wget https://scc7-pkg.oss-cn-shanghai.aliyuncs.com/nic-drivers-mellanox-rdma-4.0.0-8.noarch.rpm
    wget https://scc7-pkg.oss-cn-shanghai.aliyuncs.com/nic-libs-mellanox-rdma-4.0.0-1.x86_64.rpm
    wget https://scc7-pkg.oss-cn-shanghai.aliyuncs.com/rdma-service-eflops-3.1.1u4-lossyv4.noarch.rpm
    wget https://scc7-pkg.oss-cn-shanghai.aliyuncs.com/ali-bonding-1.0.0-4.noarch.rpm
  4. 依次运行以下命令,分别安装SCC实例规格族定制的驱动包。
    rpm -ivh nic-drivers-mellanox-rdma-4.0.0-8.noarch.rpm
    rpm -ivh nic-libs-mellanox-rdma-4.0.0-1.x86_64.rpm
    rpm -ivh rdma-service-eflops-3.1.1u4-lossyv4.noarch.rpm
    rpm -ivh ali-bonding-1.0.0-4.noarch.rpm
  5. /etc/dhcp/dhclient.conf配置文件中添加bootp-broadcast-always;配置。
    1. 打开/etc/dhcp/dhclient.conf文件。
      vim /etc/dhcp/dhclient.conf
    2. i键进入编辑模式,在配置文件中添加一行bootp-broadcast-always;配置信息。
    3. Esc键退出编辑模式,输入:wq并按下Enter键,保存并退出文件。
  6. 将RDMA网卡(eth1、eth2)绑定到bond0网卡。
    • 新建ifcfg-bond0文件并添加内容。
      1. 运行以下命令,新建ifcfg-bond0文件。
        vim /etc/sysconfig/network-scripts/ifcfg-bond0
      2. i键进入编辑模式,添加以下内容到文件中。
        DEVICE=bond0
        BOOTPROTO=dhcp
        TYPE="ethernet"
        ONBOOT=yes
        USERCTL=no
        PEERDNS=no
        BONDING_OPTS="miimon=100 mode=4 xmit_hash_policy=layer3+4"
        DEFROUTE=no
      3. Esc键退出编辑模式,输入:wq并按下Enter键,保存并退出文件。
    • 新建ifcfg-eth1文件并添加内容。
      1. 运行以下命令,查看eth1网卡的ether地址。
        ifconfig -a
      2. 运行以下命令,新建ifcfg-eth1文件。
        vim /etc/sysconfig/network-scripts/ifcfg-eth1
      3. i键进入编辑模式,添加以下内容到文件中。
        DEVICE=eth1
        TYPE="Ethernet"
        HWADDR=xx:xx:xx:xx:xx:xx
        BOOTPROTO=none
        ONBOOT=yes
        MASTER=bond0
        SLAVE=yes
        PEERDNS=no
        ETHTOOL_OPTS="autoneg on"
        RX_MAX=`ethtool -g "$DEVICE" | grep 'Pre-set' -A1 | awk '/RX/{print $2}'`
        RX_CURRENT=`ethtool -g "$DEVICE" | grep "Current" -A1 | awk '/RX/{print $2}'`
        [[ "$RX_CURRENT" -lt "$RX_MAX" ]] && ethtool -G "$DEVICE" rx "$RX_MAX"
        其中,HWADDR是eth1网卡的ether地址,请您替换为实际值。
      4. Esc键退出编辑模式,输入:wq并按下Enter键,保存并退出文件。
    • 新建ifcfg-eth2文件并添加内容。
      1. 运行以下命令,查看eth2网卡的ether地址。
        ifconfig -a
      2. 运行以下命令,新建ifcfg-eth2文件。
        vim /etc/sysconfig/network-scripts/ifcfg-eth2
      3. i键进入编辑模式,添加以下内容到文件中。
        DEVICE=eth2
        TYPE="Ethernet"
        HWADDR=xx:xx:xx:xx:xx:xx
        BOOTPROTO=none
        ONBOOT=yes
        MASTER=bond0
        SLAVE=yes
        PEERDNS=no
        ETHTOOL_OPTS="autoneg on"
        RX_MAX=`ethtool -g "$DEVICE" | grep 'Pre-set' -A1 | awk '/RX/{print $2}'`
        RX_CURRENT=`ethtool -g "$DEVICE" | grep "Current" -A1 | awk '/RX/{print $2}'`
        [[ "$RX_CURRENT" -lt "$RX_MAX" ]] && ethtool -G "$DEVICE" rx "$RX_MAX"
        其中,HWADDR是eth2网卡的ether地址,请您替换为实际值。
      4. Esc键退出编辑模式,输入:wq并按下Enter键,保存并退出文件。
  7. 运行以下命令,激活bond0网卡。
    ifup bond0
    当出现如下结果时,表示bond0网卡激活成功。
    Determining IP information for bond0... done.
  8. 运行以下命令,确认bond0已获取RDMA IP地址。
    ifconfig bond0
    当查询到bond0网卡与eth1、eth2网卡的ether地址相同时,表示RDMA驱动安装完成。