如果您是基于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驅動安裝完成。