了解如何在虚拟交换机上配置各种负载均衡算法,以确定网络流量在网卡组中的物理网卡之间如何分布。
基于源虚拟端口的路由
虚拟交换机可根据 vSphere 标准交换机或 vSphere Distributed Switch 上的虚拟机端口 ID 选择上行链路。
基于源虚拟端口的路由是 vSphere 标准交换机和 vSphere Distributed Switch 上的默认负载平衡方法。
ESXi主机上运行的每个虚拟机在虚拟交换机上都有一个关联的虚拟端口 ID。要计算虚拟机的上行链路,虚拟交换机将使用虚拟机端口 ID 和网卡组中的上行链路数目。虚拟交换机为虚拟机选择上行链路后,只要该虚拟机在相同的端口上运行,就会始终通过此虚拟机的同一上行链路转发流量。除非在网卡组中添加或移除上行链路,否则虚拟交换机仅计算虚拟机上行链路一次。
当虚拟机在同一主机上运行时,虚拟机的端口 ID 固定不变。如果迁移或删除虚拟机,或者关闭虚拟机电源,则此虚拟机在虚拟交换机上的端口 ID 将变为空闲状态。虚拟交换机将停止向此端口发送流量,这会减少其关联的上行链路的总流量。如果打开虚拟机电源或迁移虚拟机,则虚拟机可能会出现在不同的端口上并使用与新端口关联的上行链路。
注意事项 | 描述 |
---|---|
优势 |
|
劣势 |
|
基于源 MAC 哈希的路由
虚拟交换机可基于虚拟机 MAC 地址选择虚拟机的上行链路。要计算虚拟机的上行链路,虚拟交换机将使用虚拟机 MAC 地址和网卡组中的上行链路数目。
注意事项 | 描述 |
---|---|
优势 |
|
劣势 |
|
基于 IP 哈希的路由
虚拟交换机可根据每个数据包的源和目标 IP 地址选择虚拟机的上行链路。
要计算虚拟机的上行链路,虚拟交换机会获取数据包中源和目标 IP 地址的最后一个八位字节并对其执行 XOR 运算,然后根据网卡组中的上行链路数将所得的结果用于另一个计算。结果是一个介于 0 和组中上行链路数减一之间的数字。例如,如果网卡组有四个上行链路,则结果是一个介于 0 和 3 之间的数字,因为每个数字与组中的一个网卡相关联。对于非 IP 数据包,虚拟交换机会从 IP 地址所在的帧或数据包中提取两个 32 位二进制值。
任何虚拟机都可根据源和目标 IP 地址使用网卡组中的任何上行链路。因此,每台虚拟机都可以使用网卡组中任何上行链路的带宽。如果虚拟机在包含大量独立虚拟机的环境中运行,则 IP 哈希算法可在组中的网卡之间均匀地分布流量。当虚拟机与多个目标 IP 地址通信时,虚拟交换机可为每个目标 IP 生成不同的哈希。因此,数据包可以使用虚拟交换机上的不同上行链路,从而可能实现更高的吞吐量。
但是,如果环境中包含的 IP 地址较少,则虚拟交换机可能会始终通过组中的一个上行链路传递流量。例如,如果一个应用程序服务器访问一个数据库服务器,则虚拟交换机会始终计算同一个上行链路,因为只存在一个源-目标对。
物理交换机配置
要确保 IP 哈希负载平衡运行正常,必须在物理交换机上配置以太通道。以太通道可以将多个网络适配器合并到单条逻辑链路中。如果将多个端口绑定到一个以太通道,则每次物理交换机接收不同端口上同一虚拟机 MAC 地址发出的数据包时,该交换机会正确更新其内容可寻址内存 (CAM) 表。
例如,如果物理交换机在端口 01 和 02 上收到 MAC 地址 A 发出的数据包,则该交换机会在其 CAM 表中创建 01-A 和 02-A 条目。因此,物理交换机会将入站流量分布到正确的端口。如果没有以太通道,则物理交换机会首先记录下在端口 01 上收到 MAC 地址 A 发出的数据包,然后将同一记录更新为在端口 02 上收到 MAC 地址 A 发出的数据包。因此,物理交换机只会转发端口 02 上的入站流量,并可能导致数据包无法到达其目标以及相应的上行链路过载。
限制和配置要求
- ESXi主机支持单个物理交换机或堆栈交换机上的 IP 哈希绑定。
- ESXi主机仅支持静态模式下的 802.3ad 链路聚合。只能将静态以太通道与 vSphere 标准交换机配合使用。不支持 LACP。如果启用 IP 哈希负载平衡但无 802.3ad 链路聚合(或者相反),则可能会遇到网络中断。
- 必须使用“仅链路状态”作为网络故障检测方法,并使用 IP 哈希负载平衡。
- 必须在“活动故障切换”列表中设置组的所有上行链路。“备用”和“未使用”列表必须为空。
- 以太通道中的端口数必须与组中的上行链路数相同。
使用基于 IP 哈希的路由的注意事项
注意事项 | 描述 |
---|---|
优势 |
|
劣势 |
|
基于物理网卡负载的路由
基于物理网卡负载的路由以基于源虚拟端口的路由为基础,其中虚拟交换机将检查上行链路的实际负载,并采取措施以减少过载上行链路上的负载。仅适用于 vSphere Distributed Switch。
Distributed Switch 将使用虚拟机端口 ID 和网卡组中的上行链路数目来计算虚拟机的上行链路。Distributed Switch 将每 30 秒测试一次上行链路,如果上行链路的负载超过 75% 的使用率,则拥有最高 I/O 的虚拟机的端口 ID 将移到其他上行链路。
注意事项 | 描述 |
---|---|
优势 |
|
劣势 |
|
使用明确故障切换顺序
没有可用于此策略的实际负载平衡。虚拟交换机始终使用“活动适配器”列表中按故障切换顺序位于最前列且符合故障切换检测标准的上行链路。如果活动列表中没有可用的上行链路,则虚拟交换机将使用备用列表中的上行链路。