跳转到: 导航, 搜索

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

先决条件

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

  1. service neutron-mlnx-agent restart

已知问题和故障排除

有关已知问题和故障排除选项,请参阅 Mellanox OpenStack 故障排除