嘘~ 正在从服务器偷取页面 . . .

Nutanix网络架构介绍(AHV Network)


简介

Nutanix默认的AHV网络配置为用户虚拟机(Guest VM)和Nutanix控制器虚拟机(CVM)提供了一个
高度可用的网络。这种结构包括使用VLAN对来用户虚拟机流量进行简单的控制和分段,以及IP地址
管理。Prism中提供的AHV网络可视化还提供了用于故障排除和验证的来宾和主机网络配置视图。当
默认值与客户要求不匹配时,此高级指南非常有用。配置选项包括主机网络高可用性和超出默认活
动备份的负载平衡机制,主机和CVM流量的标记VLAN分段,以及详细命令行配置方法介绍。

网络架构

下图展示了Nutanix AHV的一个典型的基本网络结构,AHV使用Open vSwitch (OVS)将Controller
VM、Hypervisor和客户机VM相互连接,并连接到每个节点上的物理网络。物理网络位于物理交换机
上,而虚拟网络位于虚拟交换机(vSwitch)上。Nutanix AHV默认情况下创建两个虚拟交换机:
● A Linux bridge (virbr0)
● An open vSwitch (br0)

Linux Bridge
Linux Bridge是一个私有的内部Switch,并且没有连接到任何物理网络上。它专门用于CVM和AHV上称
为virbr0的内部接口之间的通信,主要是CVM和AHV主机之间的管理通信和存储的通信。这个virbr0默
认已经配置好了一个私有IP地址:192.168.5.1。所有其他的存储、主机和VM网络的流量则都通过OVS
Bridge(br0)。AHV主机、vm和物理接口使用“端口”连接到Bridge。

Open vSwitch(OVS)
OVS是一个在Linux内核中实现的开源软件交换机,用于在多服务器虚拟化环境中工作。默认情况下,
OVS类似于维护MAC地址表的layer-2 learning switch。Hypervisor主机和VM连接到交换机上的虚拟
端口。OVS支持许多流行的交换特性,如VLAN标签、负载平衡和链路聚合控制协议(LACP)。每个AHV服
务器维护一个OVS实例,所有的OVS实例组合在一起形成一个逻辑的交换机并通过Bridges管理驻留在
AHV主机上的交换机实例。

###端口(Ports)
1、端口是在Bridge中创建的逻辑结构,用来表示到虚拟交换机的连接。Nutanix使用几种端口类型,
包括Internal、Tap、Vxlan和Bond。
● Internal: 与默认Bridge(BR0)同名的内部端口提供对AHV主机的访问。
● Tap:Tap端口将虚拟网卡连接到虚拟机。
● VXLAN端口: 用于Acropolis提供的IP地址管理功能。
● Bond端口:绑定端口为AHV主机的物理接口提供NIC Teaming。

下图是CVM的网卡,其中vnet0为CVM的external IP地址,vnet1为CVM internal IP地址。tap3是虚
拟机的网卡。

2、通过SSH登录到CVM,查看CVM的网络配置,如下图为CVM的各个各网络接口,可以与前在的图进行
对应。

3、SSH登录到AHV,查看AHV的网络配置,如下图为br0、tap、vnet、virbr0以及vxlan接口。

Bond端口

1、绑定端口(Bond)聚合了AHV主机上的物理接口。默认情况下,系统在包含所有物理接口的BR0桥中
创建名为BR0的绑定。默认的Bond名称为bond0,Nutanix建议使用br0-up来快速将此接口标识为br0
的上行链路。使用这个命名方案,您还可以很容易地将附加桥的上行链路彼此区分开来例如br0-up和
br1-up。OVS绑定允许几种负载平衡模式,包括活动备份、balance-slb和balance-tcp。管理员还可
以激活用于绑定的LACP,以便通过物理交换机协商链接聚合。因为bond_mode设置在安装期间没有指
定,所以默认为active-backup,Nutanix推荐使用active-backup模式。

2、下面我们来演示一下如何配置Bond。使用如下命令查看节点上的网卡。如下图可以看到主机具有8
个千兆网口,eno1eno4,ens2f0ens2f3,另外的enp网卡为bmc的网卡。这里只有eno网卡连接到了
上层交换机,所以这里我们主要使用eno网卡来演示。
manage_ovs show_interfaces

3、使用以下命令查看br0默认的bond配置。如果要在集群中所有节点进行查看,需要使用allssh命
令,同样在执行更改操作时,也要使用allssh,以便所有节点保持同步,这一点非常重要,如果节
点配置不一致,会导致异常。从下图中可以看到当前默认的bond名称为bond0,模式为active-backup.
同时默认会将集群中所有网络接口都放到同一个bond0中。
manage_ovs –bridge_name br0 show_uplinks

4、这里我们计划使用eno1、eno2配置br0, 使用eno3、eno4配置br1。所以我们要先更改br0的配置。
使用如下命令进行接口的更改,然后再次查看br0配置信息。可以看到bond名称已经更 新为br0-up,
上行接口只有eno1和eno2。
manage_ovs –bridge_name br0 –interfaces eno1,eno2 update_uplinks
manage_ovs –bridge_name br0 show_uplinks

5、然后使用以下命令创建一个新的Bridge,命名为br1,使用接口eno3和eno4。
manage_ovs –bridge_name br1 create_single_bridge
manage_ovs –bridge_name br1 –interfaces eno3,eno4 update_uplinks
manage_ovs –bridge_name br1 show_uplinks

6、这里需要提到一点,执行此操作可能会导致CVM或AHV的ssh链接中断,如果出现这种情况,则可以
通过服务器的BMC远程控制台来操作,通过internal IP地址来操作,如下图,我们通过内部接口来查
看bond配置。
ssh root@192.168.5.1 “ovs-appctl bond/show br0-up”
ssh root@192.168.5.1 “ovs-appctl bond/show br1-up”

7、从查看节果可以看到br0和br1都按照我们的计划配置了上行接口,并且是默认的active-backup
模式。使用active-backup模式时,只有一条链路是活动的,另名一条链路处于backup状态。

8、在Prism中,也可以在网络页面看到我们创建的br0与br1。

VLAN的创建

1、AHV支持对CVM、AHV主机和客户机VM使用vlan。Nutanix建议对CVM和AHV网络使用默认Vlan配置,
不建议对其使用Tagged Vlan以确保AHV和CVM的网络稳定性并且易于访问,除非网络环境有特别的要
求需要对AHV和CVM配置VLAN标签。这里我们主要演示为虚拟机网络配置VLAN。AHV中的每个虚拟网络
都映射到一个VLAN和Bridge。在AHV主机上配置VLAN之前,需要先确保已经在物理交换机上做好了相
应的VLAN配置。

2、默认情况下,所有虚拟nic都是在“access”模式下创建的,该模式只允许每个虚拟网络使用一个
VLAN。但是,您可以选择使用aCLI在“集群”模式下配置一个虚拟NIC,从而允许在一个VM NIC上为
网络感知用户VM配置多个vlan。

3、使用aCLI进行VLAN配置,如下图我们在br1上配置3个VLAN: VLAN97、VLAN98、VLAN99。VLAN名
称可以用bridge name + vlan id的方式命名,这样以后可以快速识别这个VLAN是创建在哪个Bridge
上。方便管理和维护。
acli net.create br1_vlan97 vswitch_name=br1 vlan=97
acli net.create br1_vlan98 vswitch_name=br1 vlan=98
acli net.create br1_vlan99 vswitch_name=br1 vlan=99

4、VLAN创建完成后,在Prism上也可以看到创建网络的任务。

5、在Prism的网络页面,可以看到前面创建好的三个虚拟机网络,分别对应不同的VLAN。在创建虚拟
机时,可以选择不同的VLAN。

6、前面我们讲过,默认情况下创建的虚拟机网卡都是在“access”模式下创建的,该模式只允许每个
虚拟网络使用一个VLAN。如果需要使虚拟机网卡可以访问所有VLAN,则需要为虚拟机添加一个使用
Trunked模式的虚拟网卡,也可以修改虚拟机现有的网卡为trunked模式。示例命令如下为虚拟机添加
一个新的trunk模式的虚拟网卡:
acli net.list
acli vm.nic_create TestVM97-1 network=br1_vlan97 vlan_mode=kTrunked trunked_networks=98,99

7、通过查看虚拟机配置,可以看到原有有网卡为“kAccess”模式,只能访问VLAN97,新创建的网卡为
“kTrunked”模式,可以访问VLAN97,98,99。
acli vm.get TestVM97-1

IP Address Management (IPAM)

1、除了网络创建和VLAN管理之外,AHV还支持IP地址管理(IPAM),如下图所示。IPAM允许AHV使用
DHCP自动将IP地址分配给vm。管理员可以使用特定的IP子网、相关的域设置和可供分配的IP地址池
组来配置每个虚拟网络。

2、管理员可以使用AHV和IPAM从统一Prism接口交付完整的虚拟化部署,包括网络管理。为了避免地
址重叠,在启用IPAM特性之前,一定要与您的网络团队合作,为vm保留一定范围的地址。AHV在创建
托管VM NIC时从地址池分配一个IP地址,只有在删除VM NIC或VM时,地址才会释放回IP地址池。在
托管网络中,AHV拦截DHCP请求,并绕过传统的基于网络的DHCP服务器。AHV使用DHCP服务器的最后一
个网络IP地址,除非在创建网络时选择Override DHCP服务器。

3、前面我们创建的三个VLAN都没有配置IPAM,所以在创建虚拟机时,还需要手动配置IP地址或者从
网络上的DHCP服务器上获取IP地址。下面我们创建一个带有IPAM功能的VLAN:VLAN96。使用以下命
令进行创建。另外确保物理交换机上已经正确配置了VLAN。
acli net.create br1_vlan96 vswitch_name=br1 vlan=96 ip_config=192.168.96.1/24
acli net.list
acli net.add_dhcp_pool br1_vlan96 start=192.168.96.100 end=192.168.96.200

4、创建完成后,在Prism上可以看到新创建的br1_vlan96中已经启用了IP地址管理并包含一个IP地址
池用于DHCP分配IP地址。

5、如下图可以看到,在创建完VM虚拟机后,IP地址就已经自动分配,此时VM还没有开机,也没有安
装操作系统,所以这个IP地址是与虚拟机的MAC地址进行绑定的。

Load Balancing within Bond Interfaces

1、OVS通过绑定接口将AHV主机连接到网络。每个Bond都包含多个物理接口,可以连接到一个或多个
物理交换机。Bond定义了bond模式来规定如何在bond中的接口之间传输流量。有三种键模式设置:
● Active-backup
这是默认的和推荐的绑定模式,如果在安装期间没有指定“bond_mode”设置,则默认使用推荐的
active-backup模式。
● Balance-slb
Bond中的所有接口都是活动的,不需要在交换机上进行配置。此模式是一个简单的静态链接聚合。
● Balance-TCP
Bond中的所有接口都是活动的,需要在交换机上配置port channel或LACP。

2、OVS中的balance-slb bond模式利用bond中的所有链接,并使用已测量的流量负载来重新平衡VM
流量,使其从频繁使用的接口转向较少使用的接口。当可配置的Bond再平衡间隔过期时,OVS使用每
个接口的测量负载和每个源MAC散列的负载来均匀地在Bond链接之间传播流量。来自某些源MAC散列的
流量可能会转移到一个不太活跃的链接,以更均衡地平衡键成员利用率。根据源MAC散列的数量和它
们的流大小,可能并不总是能够实现完美的平衡。

3、由于多播流量警告的原因,Nutanix并不推荐balance-slb,为了利用多个链路的带宽,可以考虑
使用LACP和balancetcp的链路聚合来代替balance-slb。要充分利用从一个VM到上游交换机的多个链
接所提供的带宽,需要在OVS中进行链路聚合,并使用balance-tcp与LACP进行动态协商。Nutanix推
荐使用LACP进行动态链接聚合,而不是静态链接合,因为LACP可以提供更好的链路故障检测和恢复。

4、注意,在从CVM配置AHV主机之前,必须使用LACP为链路聚合配置上游交换机。上游的LACP设置
(如计时器)应该与AHV主机设置匹配,以保持配置一致性。如果与上游LACP协商失败,默认的AHV主
机配置将禁用绑定,从而阻塞所有流量。使用下面的命令允许在LACP协商失败时,在AHV主机上退回
到active-backup bond模式:
ssh root@192.168.5.1 “ovs-vsctl set port br0-up other_config:lacp-fallbackab=true”

5、使用以下命令配置Bond模式为LACP并设置hash算法为balance-tcp。
ssh root@192.168.5.1 “ovs-vsctl set port br0-up other_config:lacp-time=fast”
ssh root@192.168.5.1 “ovs-vsctl set port br0-up lacp=active”
ssh root@192.168.5.1 “ovs-vsctl set port br0-up bond_mode=balance-tcp”

6、使用ov -appctl确认与上游交换机或交换机的LACP协商,在状态行中查找单词“negotiation”。

7、在交换机上也可以看到LACP协商成功。

8,查看bridge br1的上行链接状态,bond模式为:balance-tcp。

9、如果在配置LACP时,不清楚服务器的网卡连接到交换机的哪个端口上,又无法到现场查看,可以
使用LLDP进行确认。如下图,通过MAC地址对比,可以确认port 12、25是需要配置LACP的端口。

10,在交换机上查看LACP聚合状态。

11、现在我们创建一些虚拟机,并配置不同的VLAN,确认所有虚拟机的VLAN通信正常。

12、在交换机上为每个VLAN配置ip interface

13、确认虚拟机之间通信正常,我们在前面创建了Trunked虚拟网卡的虚拟机上(TestVM-97-1)和
交换机上来进行验证。


文章作者: kclouder
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 kclouder !
  目录