文章
服务器与存储管理
作者:Gregory King 和 Don Smerker
2013 年 6 月发布
Oracle VM Server for x86 支持广泛的网络设计方案。本文讨论 Oracle VM 网络的基本概念。了解这些概念将有助于您做出明智的设计选择,使您可以构建可扩展且通道高度分离的健壮网络架构。
|
本文的重点是理解使用绑定接口和 VLAN 标记的复杂 Oracle VM 网络基础架构(适用于 Oracle VM 3.1 和 3.2)。(有关其他版本的信息,请参见版本特定文档。)主题包括 Xen 域、物理硬件选择(包括网络绑定)、Oracle VM 逻辑网络和网络通道、VLAN 段和组。
注:本文不会深入介绍 Oracle VM 网络的具体规划和实施。今后我们将专门推出一篇文章,根据本文所涉及的概念设计复杂的 Oracle VM 网络。
Oracle VM Server for x86 支持广泛的网络设计方案,网络的配置可以简单到单个网络,也可以复杂到到包括网络绑定、VLAN、桥以及连接 Oracle VM 服务器和来宾的多个网络。您可以创建单独的网络来隔离流量,也可以为多个角色配置一个网络。网络设计取决于多种因素,包括网络接口的数量和类型、可靠性和性能目标、Oracle VM 服务器和来宾的数量以及预期负载。
Oracle VM Manager GUI 提供了四种不同的方法来创建 Oracle VM 网络(参见图 1):

图 1. 创建 Oracle VM 网络的四种不同方法。
本文重点介绍第二种方法,即仅使用 VLAN 设计复杂的 Oracle VM 网络基础架构,并详细介绍为 Oracle VM 服务器和来宾创建健壮网络基础架构所需的概念。使用 VLAN 所能创建的组网方案远远超出了服务器上所安装的物理网络设备数量。
注:本文介绍了许多网络内部细节;这些信息仅用于更加清晰地阐述概念 — 为了绕过 Oracle VM Manager 或为了在命令行中执行操作而使用任何内部细节的相关信息,任何情况下均不支持也不建议这么做。使用命令行“节省时间”只会适得其反,并将严重影响 Oracle VM 实施的完整性和可靠性。
Oracle VM Server 包含一个开源的 Xen 虚拟机管理程序组件,该组件经过定制和优化,可集成到 Oracle 研发的更大型虚拟化服务器中。在本文中,您需要对 Xen 域有基本的了解,因为本文在解释各网络组件之间的关系时,会使用术语 Dom0 和 DomU。以下解释过于简单,但足够理解本文了。
Xen 虚拟机管理程序只支持两种类型的域:
eth0 和 eth1)、端口绑定、VLAN 端口、Xen 桥以及 Dom0 和 DomU 上的 Xen 桥之间交换网络流量的 netback 设备。虽然以上描述在技术上都不够完整,但足以理解本文中的网络概念。
规划 Oracle VM 网络基础架构的第一步是确定物理网络环境:
show int status 命令收集每台交换机的此类信息。eth0、eth1 等)之间的关系。还应确切地知道每个服务器端口所连接的以太网交换机和端口 — 在出现故障时,这非常有利于快速排除故障。图 2 所示的屏幕截图显示了本文中用作示例的 Oracle VM 网络对象。

图 2. Oracle VM Manager 中显示的 Oracle VM 网络对象。
屏幕截图中的每一行都显示了一个 Oracle VM 网络,可表示以下两项:
pool1、pool2 和 pool3)都有十个子网。即,我们在三个服务器池中总共分配了三十个子网来执行各种功能。花点时间研究一下图 2 中对每个网络的描述,了解如何使用各 Oracle VM 网络。请注意第四行,网络对象的名称有助于说明其用法。该名称是一个文本字段,包含您所需的所有信息。Oracle 建议您指定一个名称,让用法更加明晰。例如,“Guest DataCtr1 POOL1 PUB bond1”表示该网络用作主要的公共接口,用于访问 pool1 中的所有 Oracle VM 来宾,并被分配给池中所有服务器上的 bond1。
仍然是图 2 中的这一行,请注意,所分配的虚拟机通道表示只能在 VM 来宾 (DomU) 上分配 IP 地址,不能在 Dom0 上分配。进一步关注该行,描述文本字段用于说明该网络应作为 eth0 在每个来宾上进行分配,并且与 bond1 上的 VLAN ID 200 相关联。此外,这两个文本字段(名称和描述)可包含所需的所有信息,也可以不包含任何信息;但您提供的信息越多,维护和故障排除将越简单。
可以从 VLAN 组分配一个 VLAN 段来创建 Oracle VM 网络对象。此时,给网络设置一个易于理解的名称和说明(如果可以)有助于进一步解释网络的角色。VLAN 段定义了网络流量将流经的子网和绑定。
在我们的示例中,Oracle VM 网络对象是使用其他网络对象作为属性组合而成的一种结构:
eth0 和 eth1 等都属于以太网端口。以太网端口可用于创建绑定接口,您也可以将它们保留为未绑定状态,这完全取决于您。Bond0 是在安装期间创建的,最初只能将一个以太网端口添加到 bond0。Bond0 可保持只有一个端口的状态,也可以再添加三个端口。在我们的示例中,我们将六个以太网端口聚合成名称分别为 bond0、bond1 和 bond2 的三个绑定接口。后面将在“了解绑定”一节中更详细地介绍绑定。图 3 显示 Oracle VM 配置中网络绑定端口的屏幕截图。绑定是将多个以太网端口聚合或关联到一个逻辑网络接口。将端口聚合成一个接口可消除指定子网的单点故障,从而实现高可用性:如果绑定接口中的某个端口出现故障,网络流量仍会流经其他所有以太网端口。高可用性解决方案的有效性很大程度上依赖于数据中心基础架构团队。该团队的作用是确保 Oracle VM 服务器上的以太网端口物理连接到冗余交换机基础架构。

图 3. Oracle VM Manager 中显示的绑定。
Oracle VM 3 提供了三种不同类型的绑定模式,用于将多个网络设备(端口)聚合成一个绑定。在 Oracle VM 3.2 中,每个绑定接口最多支持四个端口;在 Oracle VM 3.1 和早期版本中,每个绑定最多支持两个端口。作为绑定成员的所有网络设备/端口必须具有相同的类型和速度。
以下所有模式均具有高可用性:如果网络端口出现故障,网络流量将继续流经其他所有设备/端口。三种绑定模式中的其中两个还提供了聚合带宽,这有效地扩展了绑定接口的总带宽,可根据作为绑定成员的以太网端口的数量成倍增加。
eth0)用于网络流量,仅当它出现故障时,才会由另一个端口(如 eth1)接管。活动/备份模式支持具有 VM 流量的 VLAN 段。图 4 显示在 Oracle VM Manager 中创建绑定时每个 Oracle VM 服务器上创建的网络设备。使用 Oracle VM 命名法,绑定将一到四个以太网端口聚合成一个绑定端口。

图 4. Oracle VM 服务器中绑定的逻辑图。
注意,图 5 显示使用活动/备份模式的 bond0。还必须注意,任何时候我们都不会将虚拟机通道角色分配给 bond0。如果将来某个时候您想为 bond0 上的 Oracle VM 来宾流量分配虚拟机通道,请勿使用自适应负载平衡。如果要为 Oracle VM 来宾流量使用 bond0,则可使用活动/备份或动态链路聚合作为 bond0 的绑定模式。

图 5. 绑定的逻辑图。
对网络管理员而言,在网络基础架构上配置 LACP 通常既复杂又耗时 — 必须为网络管理员提供充足的前导时间来配置和验证 LACP。如果无法与网络管理团队一起工作,请考虑为您的绑定模式使用活动/备份或自适应负载平衡,同时注意自适应负载平衡在 VLAN 和 Oracle VM 来宾桥上的局限性。
图 6 显示 Oracle VM 配置中 VLAN 段的屏幕截图。

图 6. Oracle VM Manager 中显示的 VLAN 段。
Oracle VM 使用现有 VLAN 段;不创建 VLAN 段。必须先在物理以太网交换机上配置 VLAN 段(标记),然后才能将其用作 Oracle VM 网络基础架构的一部分。网络管理员将告知您哪些 VLAN ID 分配给交换机上的哪些端口。然后您需要确保服务器上的网络端口已连接到正确的交换机端口。这些端口已使用您希望通过指定的任何网络端口访问的 VLAN ID 进行配置。
在 VLAN 规范出台之前,一个网络端口可在一个子网中交换流量。因此,如果服务器上有四个未绑定的网络端口,那么您总共可以访问四个不同的子网。VLAN 规范的目的是让一个网络端口能够通过与一个交换机端口相连的一根线缆访问多个子网。因此,通过使用分配给一个交换机端口的多个 VLAN,您可以访问一个网络端口上的多个子网。这意味着一台具有四个物理网络端口的服务器可以访问四个以上的子网。
任意数量的 VLAN 段或主干都可与单个端口或绑定相关联。但实际网络通信量存在一定的限制,具体取决于端口或绑定的潜在吞吐量。例如,如果将四个 VLAN 分配给一个 1GB 的以太网 (GbE) 端口,并且每个 VLAN 上的预期网络负载为 800MB,那么极有可能会出现网络性能问题,因为端口可能会超负荷工作:1 GbE 的端口上可能要处理 3.2 GB (3200MB) 的流量。
每个 VLAN ID 代表一个单独的子网(或广播域),具有自己的 IP 范围、子网掩码和网关。将包含一个或多个 VLAN 段的 VLAN 组分配给网络端口时,每个 Oracle VM 服务器上都会创建一个网络设备,例如图 7 所示的 bond1。

图 7. Oracle VM 服务器中绑定的逻辑设备图。
VLAN 组是一个容器,包含您希望与每个服务器上特定端口或绑定相关联的任意数量的 VLAN 段。截至本文撰写时,指定绑定或端口与 VLAN 组之间是一对一的关系:将 VLAN 组分配给端口或绑定后,该端口或绑定不能再用于其他组。
不论您使用具有端口或绑定的 VLAN 实施简单的网络基础架构,还是复杂的网络基础架构,使用 VLAN 创建 Oracle VM 网络时都需要使用 VLAN 组。如果一个 Oracle VM Manager 控制多个服务器池,那么 VLAN 组是成功设计复杂网络的关键。您的主要精力应该用在 VLAN 组规划上,因为如果不能正确规划 VLAN 组,就无法创建和部署复杂的 Oracle VM 网络 — 因此,花些时间仔细思考一下可以省很多事。
在 Oracle VM 中,VLAN 组允许将任意数量的子网划分成适合您环境的逻辑分组。例如,您可能有 300 个 VLAN 段,适用于各种情况,但服务器 pool1 中的来宾仅需要其中的 6 个子网,而服务器 pool2 中的来宾需要其中的 22 个子网。VLAN 组允许自定义各服务器池中的 Oracle VM 服务器可以访问哪些 VLAN,避免了为每台服务器分配数百个从不使用的多余 VLAN 所造成的混乱情况。
虽然图 8 只是 VLAN 组设计方法的一个示例,但说明了您可以创建特定于不同数据中心特定服务器池的 VLAN 组。仅仅是因为每个服务器池中的服务器具有 bond0、bond1 和 bond2,并不意味着每个绑定只能有一个 VLAN 组 — 对于每个绑定,每个服务器池可以有一组完全不同的 VLAN 段,具体取决于各池中服务器的需求。(请不要让上述示例限制了您的想象力 — 有很多方法可以解决这个问题,因此,请设计符合数据中心要求的方案。)

图 8. Oracle VM Manager 中显示的 VLAN 组。
尝试创建 Oracle VM 网络之前,请先创建 VLAN 组。虽然有多次不同的机会可通过各种网络向导添加 IP 地址,但您应该习惯在创建每个 VLAN 组时(而不是在创建 Oracle VM 网络时)将所有相关的 IP 地址分配给 Dom0。
图 9 简要说明了如何使用 VLAN 组和段创建每个 Oracle VM 网络。在本示例中,我们将创建名为“OVM DataCtr1 POOL1 bond2.902”的 Oracle VM 网络,并为其分配网络角色“实时迁移”,专用于 Oracle VM 来宾在 Oracle VM 服务器之间的实时迁移。

图 9. 使用 VLAN 组和段创建 Oracle VM 网络。
图 10 从 pool1 中 Oracle VM 服务器的视角,说明了每个 VLAN 组中的 VLAN 段与每个绑定的逻辑关联。需要注意的是,每个 VLAN 组中的 VLAN 段只能用于已分配给特定 VLAN 组的绑定。

图 10. VLAN 组和段的逻辑图。
让我们了解一下网络通道在 Oracle VM 网络对象环境中的作用。使用 Oracle VM Manager GUI 创建 Oralce VM 网络时,您可以分配一个或多个以下通道:服务器管理、集群心跳检测、实时迁移、存储或虚拟机(参见图 11)。

图 11. Oracle VM Manager 中显示的网络通道。
在 Oracle VM Manager 和 Oracle VM 服务器中选择不同的通道会触发不同的行为。前三个通道(服务器管理、集群心跳检测和实时迁移)仅与服务器池管理有关,可在 Dom0 上配置各种特性;这些通道与 Oracle VM 来宾 (DomU) 没有任何关系。第四个通道(存储)显示当前在产品中未提供任何功能的存储。第五个通道(虚拟机)与 Oracle VM 来宾密切相关,但与 Oracle VM 服务器 (Dom0) 无关。
/etc/ocfs2/cluster.conf)。 实现高可用性的自然倾向是将此角色分配给多个 Oracle VM 网络,以防其中一个网络出现故障,并假定心跳检测可在同一服务器池中的其他网络上继续运行。但这是行不通的,因为对于 cluster.conf 文件中的每个服务器,OCFS2 仅支持一个 IP 地址/主机名。因此,将该角色分配给同一个服务器池中的多个网络实际上没有任何意义;每个服务器池只能有一个具有集群心跳检测角色的网络。
具有集群心跳检测角色的网络应与高负载网络分离,如实时迁移或 Oracle Real Application Clusters (Oracle RAC) 私有流量。每个服务器池均可共享一个心跳检测网络,但对于具有包含大量 Oracle VM 服务器的多个服务器池的 Oracle VM 环境而言,不具备可扩展性。Oracle 建议(虽然不要求)您准备一个完全独立的 VLAN/子网,专门用于每个服务器池的集群心跳检测。当然,如果您只有一个 bond0 并且与所有其他服务器使用同一个物理接口,就另当别论了。
xm migrate -l <DomU> <目标服务器的 IP 地址> 时,使用与位于该特定网络上的目标服务器相关联的 IP 地址。该网络应与高负载网络分离,如集群心跳检测。在 Oracle VM Manager 中选择虚拟机通道将指示每个 Oracle VM Server 上的代理创建与端口、绑定或 VLAN 段相关联的 Xen 桥。桥可充当每个 Oracle VM 服务器上的网络交换机,在 DomU 与其他对象之间交换网络流量。系统将为您创建的已选择虚拟机通道的任何 Oracle VM 网络创建桥;每个桥具有随机生成的唯一网络 ID,显示在 Oracle VM Manager 的 Networking 选项卡中。图 12 显示了 VLAN 接口 (bond1.200) 与 Oracle VM 来宾的 netback 驱动程序之间的关系。

图 12. 虚拟机通道创建的 Xen 桥充当了服务器上 Oracle VM 来宾的网络交换机。
每个 Oracle VM 服务器都需要具有服务器管理、集群心跳检测和实时迁移网络角色。截至本文撰写时,存储网络角色尚未完全实施。每个 Oracle VM 环境还需要具备一个或多个虚拟机网络。
图 13 显示了 Oracle VM 所使用的网络通道,同时说明了每个通道类型的变化范围。该图说明了哪些 Oracle VM 组件不仅需要彼此通信,还需要与外部通信。可使 Oracle VM(服务器管理、集群心跳检测和实时迁移)的管理流量仅限于专用于每个功能的小型非路由子网。例如,如果您的服务器池包含在一个刀片机架中,可将集群心跳检测和实时迁移通道连接到专用于机架内部通信的以太网交换机 — 完全没必要一路连接到机架外的交换机或路由器。

图 13. 各种 Oracle VM 网络通道的范围。
服务器管理通道包括 Oracle VM Manager 与服务器池中的 Oracle VM 服务器(而非来宾)之间的通信。集群心跳检测和实时迁移通道仅传输 Oracle VM 服务器之间的流量,并不传输与 Oracle VM Manager 之间的流量。对于这些通道,流量可通过私有的非路由子网传输 — 流量不需要访问路由器。由于通信仅在池中的服务器之间进行,所以流量只需访问连接服务器和管理器的交换机。
相比之下,虚拟机通道不仅包括 Oracle VM 来宾之间的流量,还包括与外部公共网络之间的通信。使用命令行界面查看 Oracle VM Manager 配置的网络时,在 Oracle VM 服务器上执行的命令将显示所有通道类型的网络设备。在 Oracle VM 来宾上执行的命令则仅显示分配有虚拟机通道的网络的网络设备。
创建 Oracle VM 网络或将来更改网络基础架构时,将分配网络通道。
Oracle VM Server for x86 支持广泛的网络设计方案。网络的复杂程度各有不同,其配置可以简单到单个网络,也可以复杂到到包含网络绑定、VLAN、桥以及连接 Oracle VM 服务器和来宾的多个网络。网络设计取决于多种因素,包括网络接口的数量和类型、可靠性和性能目标、Oracle VM 服务器和来宾的数量以及预期负载。
对于设计通道高度分离的复杂 Oracle VM 网络基础架构以实现更具扩展性的架构,理解 Oracle VM 网络的基本概念至关重要。
以下资源适用于 Oracle VM Server for x86:
Gregory King 作为最佳实践高级技术顾问加入 Oracle VM 产品管理团队,专门负责 Oracle VM Sever。自 1993 年以来,Greg 在高可用性、网络、存储和存储网络等方面(包括生产数据中心的 SAN 启动和服务器自动化技术)积累了大量实践经验。他与团队的主要职责是开发和记录解决方案(包括最佳实践),并促进用户更深入地了解 Oracle VM 的内部工作方式,让产品给人们带来更多价值。
Don Smerker 涉足 IT 行业已有二十余年,在收购 BEA Systems 期间加入 Oracle。他是网络运营团队的成员,负责设计和管理网络基础架构的各个方面。加入 Oracle 后,Don 成为 Oracle 的 GIT 网络组织成员,负责对办公室和停产的数据中心的网络基础架构进行日常管理。Don 目前是 Oracle 的 GSS 网络运营团队成员,负责关键性举措,如网络基础架构的重构、重组和整合,同时继续负责网络运营的一些日常管理工作。
| 版本 1.0,2013 年 6 月 7 日 |