Mellanox-Neutron-Juno-Ubuntu-InfiniBand
目录
概述
Mellanox Neutron ML2 驱动程序
Mellanox ML2 机制驱动程序实现了 ML2 插件机制驱动程序 API。
该驱动程序支持 Mellanox 嵌入式交换机功能,作为 VPI(以太网/InfiniBand)HCA 的一部分。Mellanox ML2 机制驱动程序提供与 Mellanox Neutron 插件功能上的对等性。
Mellanox ML2 机制驱动程序支持 DIRECT(PCI 直通)vnic 类型。有关 vnic 类型配置 API 详细信息,请参阅配置参考指南。映射到客户机 VM 的硬件 vNIC 允许更高的性能和高级功能,例如 RDMA(远程直接内存访问)。
该驱动程序支持 VLAN 网络类型,以促进以太网或 InfiniBand 架构上的虚拟网络。
- Mellanox OpenStack Neutron Agent(L2 Agent)在每个计算节点上运行。
- Agent 应根据 VIF(VM vNIC)和嵌入式交换机端口之间的映射应用 VIF 连接性。
Mellanox Neutron 插件
有关 Mellanox Neutron 插件的详细信息,请参阅 https://wiki.openstack.org/wiki/Mellanox-Neutron-Havana-Ubuntu。
先决条件
- 安装了 ML2 插件在 OpenVswitch 或 Linux Bridge 之上的运行中的 OpenStack 环境。
- 所有节点都配备了 Mellanox ConnectX®-3 网络适配器 (http://www.mellanox.com/page/products_dyn?product_family=119)
- 在所有节点上安装 Mellanox OFED 2.4 或更高版本。请参阅 Mellanox 网站获取最新的 OFED:http://www.mellanox.com/page/products_dyn?product_family=26&mtag=linux_sw_drivers
- 在所有计算节点上启用 SR-IOV。有关更多信息,请参阅 Mellanox 社区:[1]。
- 软件包 iproute2 - (http://www.linuxfoundation.org/collaborate/workgroups/networking/iproute2 ) 安装在所有计算节点上
- 添加仓库
sudo add-apt-repository http://www.mellanox.com/repository/solutions/openstack/juno/ubuntu/
InfiniBand 网络
Mellanox Neutron 插件使用 InfiniBand 分区(PKeys)来分隔网络。
SM 节点
OpenSM 配置 – 无 UFM
配置 OpenSM
1. 确保所有 PKeys 都在 /etc/opensm/partitions.conf 中预定义。
management=0xffff,ipoib, sl=0, defmember=full: ALL, ALL_SWITCHES=full,SELF=full;
2. 对于您想在 Neutron 中配置的每个网络,您必须配置与该网络 VLAN 关联的 PKey(在 Neutron 中定义):vlan1=0x1, ipoib, sl=0, defmember=full : ALL;
以下是配置文件 /etc/neutron/plugins/mlnx/mlnx_conf.ini 中定义了 10 个 VLAN 的情况下的 partitions.conf 文件的配置示例:( network_vlan_ranges = physnet1:1:10)
management=0x7fff,ipoib, sl=0, defmember=full : ALL, ALL_SWITCHES=full,SELF=full; vlan1=0x1, ipoib, sl=0, defmember=full: ALL_CAS; vlan2=0x2, ipoib, sl=0, defmember=full: ALL_CAS; vlan3=0x3, ipoib, sl=0, defmember=full: ALL_CAS; vlan4=0x4, ipoib, sl=0, defmember=full: ALL_CAS; vlan5=0x5, ipoib, sl=0, defmember=full: ALL_CAS; vlan6=0x6, ipoib, sl=0, defmember=full: ALL_CAS; vlan7=0x7, ipoib, sl=0, defmember=full: ALL_CAS; vlan8=0x8, ipoib, sl=0, defmember=full: ALL_CAS; vlan9=0x9, ipoib, sl=0, defmember=full: ALL_CAS; vlan10=0xa, ipoib, sl=0, defmember=full: ALL_CAS;
3. 将文件 /etc/opensm/opensm.conf 中的以下行从 FALSE 修改为 TRUE
allow_both_pkeys TRUE
5. 重启 OpenSM
# /etc/init.d/opensmd restart
控制器节点
2. 安装 Mellanox RPM 包
#apt-get install -y openstack-neutron-mellanox eswitchd mlnx-dnsmasq
3. 编辑以下文件:/usr/lib/systemd/system/neutron-mlnx-agent.service
Change the /etc/neutron/plugins/mlnx/mlnx.ini to /etc/neutron/plugins/mlnx/mlnx_conf.ini
4. 运行
# /etc/init.d/neutron-plugin-mlnx-agent start
5. 运行
# service daemon-reload
6. 确认 ML2 是当前的 Neutron 插件,方法是检查 /etc/neutron/neutron.conf 中的 core_plugin 参数
core_plugin = neutron.plugins.ml2.plugin.Ml2Plugin
7. 确认 /etc/neutron/plugin.ini 指向 /etc/neutron/plugins/ml2/ml2_conf.ini(符号链接)
8. 通过添加以下内容修改 /etc/neutron/plugins/ml2/ml2_conf.ini
[ml2] type_drivers = vlan,flat tenant_network_types = vlan mechanism_drivers = mlnx, openvswitch # or mechanism_drivers = mlnx, linuxbridge [ml2_type_vlan] network_vlan_ranges = physnet1:1:10 [eswitch] # (StrOpt) Type of Network Interface to allocate for VM: # mlnx_direct or hostdev according to libvirt terminology vnic_type = hostdev
9. 启动(或重启)Neutron 服务器
# /etc/init.d/neutron-server restart
网络节点
要配置网络节点
先决条件
E_IPoIB port is configured and up
1. 确保 eIPoIB 模块已启动并在 /etc/infiniband/openib.conf 中配置:有关更多信息,请参阅 Mellanox OFED 用户手册中的 eIPoIB 配置。
E_IPOIB_LOAD=yes
2. 重新启动 openibd
# service openibd restart
3. 根据 OpenVswitch 或 LinuxBridge 的使用情况修改网络桥接配置
- 3.1 OpenVswitch /etc/neutron/plugins/openvswitch/ovs_neutron_plugin.ini
[ovs] bridge_mappings = physnet1:br-<eIPoIB interface>
- 3.2 LinuxBridge 文件 /etc/neutron/plugins/linuxbridge/linuxbridge_conf.ini
[linux_bridge] physical_interface_mappings = physnet1:<eIPoIB interface>
注意:为了获得 eIPoIB 接口名称,请运行 ethtool 工具命令(如下所示)并检查驱动程序名称是否为 eth_ipoib
# ethtool -i <eIPoIB_interface> driver: eth_ipoib .....
4. 重新启动网络桥接和 neutron-dhcp-agent
# service neutron-dhcp-agent restart
- 4.1 OpenVswitch
# service neutron-linuxbridge-agent restart
- 4.2 LinuxBridge
# service neutron-openvswitch-agent restart
注意:为了支持 DHCP,网络节点应使用 Mellanox Dnsmasq 驱动程序作为 DHCP 驱动程序。
DHCP 服务器(通常是网络节点的一部分)
1. 根据 OVS 或 Linuxbridge 修改 /etc/neutron/dhcp_agent.ini,如下所示
dhcp_driver = mlnx_dhcp.MlnxDnsmasq # or interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver
2. 启动 DHCP 服务器
# service neutron-dhcp-agent restart
计算节点
要配置计算节点
1.配置 Mellanox OpenStack Juno 仓库
# sudo add-apt-repository http://www.mellanox.com/repository/solutions/openstack/juno/ubuntu
2. 安装 Mellanox RPM 包
# apt-get install -y openstack-neutron-mellanox eswitchd mlnx-dnsmasq
3. 编辑以下文件:/usr/lib/systemd/system/neutron-mlnx-agent.service
Change the /etc/neutron/plugins/mlnx/mlnx.ini to /etc/neutron/plugins/mlnx/mlnx_conf.ini
4. 运行
# service enable neutron-mlnx-agent
5. 运行
# service daemon-reload
6. 应用 MLNX Juno 补丁
# pushd /usr/lib/python2.7/site-packages/nova/virt/libvirt/ # wget http://www.mellanox.com/repository/solutions/openstack/juno/ubuntu/patch/mlnx_juno.patch # patch < mlnx_juno.patch # popd
7. 创建文件 /etc/modprobe.d/mlx4_ib.conf 并添加以下内容
options mlx4_ib sm_guid_assign=0
8. 重启 Nova
# /etc/init.d/nova-compute restart
9. 重启驱动程序
# /etc/init.d/opensm restart # /etc/init.d/openibd restart
10. 在文件 /etc/neutron/plugins/mlnx/mlnx_conf.ini 中,应将 tenant_network_type 和 network_vlan_ranges 参数配置为控制器
physical_interface_mappings = physnet1:<ib_interface>(for example physnet1:ib0)
11. 按照以下方式修改文件 /etc/eswitchd/eswitchd.conf
fabrics = physnet1:<ib_interface> (for example physnet1:ib0)
12. 启动 eSwitchd
# service eswitchd restart
13. 启动 Neutron agent
- service neutron-mlnx-agent restart
已知问题和故障排除
有关已知问题和故障排除选项,请参阅 Mellanox OpenStack 故障排除