如果您是基于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驱动,无需再手动安装。
操作步骤
- 远程连接已创建的SCC实例。
- 依次运行以下命令,安装相关依赖包。
- 安装DKMS(Dynamic Kernel Module Support)。
- 运行以下命令,下载MFT工具安装包。
wget https://www.mellanox.com/downloads/MFT/mft-4.17.0-106-x86_64-rpm.tgz
- 运行以下命令,解压MFT工具安装包。
tar zvxf mft-4.17.0-106-x86_64-rpm.tgz
- 依次运行以下命令,进入MFT工具并运行该工具。
cd mft-4.17.0-106-x86_64-rpm
./install.sh
- 依次运行以下命令,分别下载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
- 依次运行以下命令,分别安装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
- 在/etc/dhcp/dhclient.conf配置文件中添加
bootp-broadcast-always;
配置。
- 打开/etc/dhcp/dhclient.conf文件。
vim /etc/dhcp/dhclient.conf
- 按i键进入编辑模式,在配置文件中添加一行
bootp-broadcast-always;
配置信息。
- 按Esc键退出编辑模式,输入
:wq
并按下Enter键,保存并退出文件。
- 将RDMA网卡(eth1、eth2)绑定到bond0网卡。
- 新建ifcfg-bond0文件并添加内容。
- 运行以下命令,新建ifcfg-bond0文件。
vim /etc/sysconfig/network-scripts/ifcfg-bond0
- 按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
- 按Esc键退出编辑模式,输入
:wq
并按下Enter键,保存并退出文件。
- 新建ifcfg-eth1文件并添加内容。
- 运行以下命令,查看eth1网卡的ether地址。
ifconfig -a
- 运行以下命令,新建ifcfg-eth1文件。
vim /etc/sysconfig/network-scripts/ifcfg-eth1
- 按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地址,请您替换为实际值。
- 按Esc键退出编辑模式,输入
:wq
并按下Enter键,保存并退出文件。
- 新建ifcfg-eth2文件并添加内容。
- 运行以下命令,查看eth2网卡的ether地址。
ifconfig -a
- 运行以下命令,新建ifcfg-eth2文件。
vim /etc/sysconfig/network-scripts/ifcfg-eth2
- 按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地址,请您替换为实际值。
- 按Esc键退出编辑模式,输入
:wq
并按下Enter键,保存并退出文件。
- 运行以下命令,激活bond0网卡。
ifup bond0
当出现如下结果时,表示bond0网卡激活成功。
Determining IP information for bond0... done.
- 运行以下命令,确认bond0已获取RDMA IP地址。
ifconfig bond0
当查询到bond0网卡与eth1、eth2网卡的ether地址相同时,表示RDMA驱动安装完成。