使用 Linux on Power 刀片服务器实现复杂的网络

来源:developerWorks 中国 作者:Matthew B. Trevathan
  
刀片服务器是许多应用程序和服务的最佳选择,对于电信服务提供商尤其如此。但是,这些提供商网络的独特需求常常需要复杂的配置,需要预先进行详细的研究和规划,这样才能满足所有严格的功能性需求。通过本文我们可以学习在部署 POWER6™ JS22 刀片服务器时,如何规划和搭建必备的网络配置。

由于以下几个原因,基于刀片服务器的运营模型对于有线和无线电信领域极有价值:

  1. 内存占用量小,可以更有效地使用数据中心空间。
  2. 能够满足分布式部署的 NEBS 需求。(NEBS [Network Equipment Building System] 是连网设备为了实现兼容性必须满足的一组条件。)
  3. 为电信服务提供商提供经济有效的水平伸缩性,可以降低部署成本。
  4. 提供集中的管理支持,可以为服务提供商网络中的部署提供更好的 OAM&P 支持。(OAM&P 代表 “operations、administration、maintenance 和 provisioning”。这个术语表示管理所需的原理和软件)。
  5. 内置了对基于连续可用性的运营模型的支持(包括升级和维护活动),可以避免用户能够察觉到的服务停机时间。

另外,下面这些因素在电信服务提供商环境中也很重要,对于具有复杂配置的环境尤其如此:

  • 多个 VLAN。这些用于 CDN(Customer Data Network)和 Management(OAM&P)通信流。单独考虑它们以确保跨多个 LPAR(逻辑分区)有效地维持 QoS(服务质量)。
  • 微分区和虚拟化。这些战略有助于尽可能提高容量利用率和降低 TCO(总拥有成本)。
  • 现有网络的复杂性。现有网络的负载可能变化很大,因此需要在多个客户机 LPAR 之间进行负载平衡。

在本文中,讨论如何使用主动/被动配置的 Cisco 交换机组合实现一个刀片服务器机架的多 VLAN 配置。在我们的示例中,配置的网络连接到一台使用 Linux® on Power 的 BladeCenter® JS22 上的多个 VLAN。这个体系结构由 6 个 Cisco catalyst 交换机模块组成,每个模块有 14 个内部端口和 4 个外部的 1GB 端口。

为了适当地利用机架中的所有 6 个交换机,刀片服务器需要 6 个以太网接口。刀片服务器上的以太网接口 ent0 映射到刀片服务器机架上的第一个交换机;每个以太网接口依次映射到下一个可用的交换机。这种映射方式有一个限制,因为它不允许管理员把刀片服务器上的物理适配器映射到他们选择的交换机。

在为刀片服务器创建网络体系结构时,对于机架上希望使用的每个 Cisco 交换机,必须有一个物理接口。如果一些刀片服务器上的适配器数量与机架上的适配器数量不同,那么刀片服务器就无法使用那些没有相关联的刀片服务器物理适配器的交换机。

一定要了解刀片服务器上的以太网接口和机架中的交换机的配对方式。机架中的第一个交换机通常放在刀片服务器机架的左上方,就在电源插头的下面。它映射到刀片服务器上的 ent0,因为这是刀片服务器上的第一个接口。图 1 给出我们的配置中的交换机编号。


图 1. 我们使用的配置中的物理适配器交换机
我们使用的配置中的物理适配器交换机

决定交换机配对方式对于实现高可用性极其重要。在典型的配置中,一个电源分布单元(PDU)为刀片服务器机架的上半部分供电,另一个 PDU 为机架的下半部分供电。如果要创建冗余的解决方案,就一定要把主交换机和辅交换机分别放在机架的上半部分和下半部分。

在我们的示例中,创建的解决方案采用下面的交换机配对:(1, 9) (2, 3) (4, 7)。因为适配器对 (ent0, ent1)、(ent2, ent3) 和 (ent4, ent5) 在相同的物理 I/O 卡上,所以还需要确保目标 VLAN 的网络通信流不经过相同的 I/O 卡。我们的配置要跨多个 PDU 和多个接口分布通信流。

尽管适配器和交换机的配对看起来很简单,但是需要执行多个步骤来配置 IVM(Integrated Virtualization Manager)、交换机和 LPAR,才能利用这个体系结构。图 2 给出一个刀片服务器的设置以及相关联的交换机、聚合(trunk)和 VLAN 标记。这个配置使多个 VLAN 能够通过相同的物理适配器与多个交换机进行通信。


图 2. 一个刀片服务器以及相关联的交换机、聚合和 VLAN 标记
一个刀片服务器以及相关联的交换机、聚合和 VLAN 标记

在这个示例中,每个 LPAR 有两个以太网适配器,它们连接到 IVM 上的一个 Virtual Ethernet Adapter(VEA)。注意,IVM 上的 VEA 与多个 VLAN 相关联。每个 VLAN 的通信流通过它们的适配器分配到 LPAR。VEA 把 VLAN 的通信流集中在一起,通过一个链路聚合设备经过 Shared Ethernet Adapter(SEA)发送它们,并通过机架交换机之一发送出网络。交换机使用 VLAN 标记把 VLAN 通信流路由到适当的网络。

配置 VLAN 的 5 个步骤

为 IVM 上的客户机 LPAR 配置 VLAN 需要 5 个主要步骤(和一个可选步骤):

  1. 配置 Cisco 交换机。(这里有一个可选步骤 —— 创建一个链路聚合设备,通常称为 LNAGG 设备)。
  2. 在 IVM 上创建感知 802.1q IEEE VLAN 的接口,以便支持在每个接口上使用 VLAN。在做任何工作之前设计 VLAN 是非常重要的,因为以后不可能修改已经创建的感知 VLAN 的接口。需要删除它们并重新创建,这很浪费时间。
  3. 通过 IVM 中的 Virtual Ethernet 菜单把 Virtual Ethernet Adapter 分配给物理适配器(LNAGG)。
  4. 通过修改 LPAR 属性把新的虚拟适配器分配给 LPAR 适配器。在修改网络设备属性之前,一定要禁用 LPAR。
  5. 引导每个 LPAR 并配置新接口。

本文中的示例适用于刀片服务器的全新安装。





步骤 1:配置 Cisco 交换机

如果交换机已经配置了希望使用的 VLAN,那么可以跳过这个步骤。这个示例并不演示如何配置跨越树及其所需的交换机优先级。如果您希望实践这个示例,那么应该使自己的交换机符合以下配置。

登录交换机

依次输入以下命令:

  • enable
  • config
  • interface GigabitEthernet0/1
  • description blade1
  • switchport trunk native vlan 383
  • switchport trunk allowed vlan 373,383
  • switchport mode trunk

这些命令把交换机上的端口 1 配置为执行聚合。如果通信流从刀片服务器发送到交换机,或者从刀片服务器的外部接口发送到交换机,而且它们没有 VLAN 标记,那么交换机会给它们加上标记 VLAN 383。在这里,switchport(外部端口)只允许来自 373 和 383 的通信流,这些通信流来自或路由到 IVM 的 VEA。要想改变从 IVM 访问这个端口所需的 VLAN,只需修改允许聚合的 VLAN 号。

分割通信流

通信流被聚合并发送到交换机之后,交换机会决定用哪个外部端口路由 VLAN 通信流。在这个示例中,通过端口 17 发送外部 VLAN 373 通信流,通过端口 20 发送 VLAN 383 通信流。

为了通过端口 17 发送 VLAN 373 通信流,在 Cisco 交换机上输入以下命令:

  • interface GigabitEthernet0/17
  • description extern1
  • switchport access vlan 373
  • switchport mode access

为了通过端口 20 发送 VLAN 383 通信流,在 Cisco 交换机上输入以下命令:

  • interface GigabitEthernet0/20
  • description extern4
  • switchport access vlan 383
  • switchport mode access

在设置外部端口配置之后,输入 exit 两次,退出命令行的配置模式。然后运行 show run 命令查看配置。show run 命令显示当前正在运行的交换机配置。配置还没有写到交换机的内存中,但是可以在交换机上看到当前的修改。如果查看配置,可以看到上面步骤中所做的修改。在配置之后,查看刀片服务器 1 的以太网端口:


清单 1. 显示交换机端口 1 的配置
interface GigabitEthernet0/1
       description blade1
       switchport trunk native vlan 383
       switchport trunk allowed vlan 373,383
       switchport mode trunk

如果发出 show config 命令,会看到以前的接口配置,而不是刚才配置的。如果在这种状态下重新引导交换机,当前的配置就会丢失。要想把当前配置写到内存中,应该在交换机的命令行上输入 write。如果再次运行 show config,交换机上存储的接口配置就会与当前配置一致。





可选步骤:创建链路聚合适配器

可以使用链路聚合设备把两个物理适配器连接在一起,让它们看起来像一个适配器一样。这有助于创建故障转移所需的主动/被动配置。

在我们的示例中,希望在链接在一起的 ent0 和 ent5 刀片服务器适配器上创建一个主动/被动配置。在 IVM 的命令行上,执行以下命令创建链路聚合设备(LNAGG)并以 ent5 上的适配器作为备份适配器:

$ mkvdev -lnagg ent0 -attr backup_adapter=ent5

使用 lsdev 命令检查是否成功创建了 LNAGG 设备。


清单 2. 检查是否创建了 LNAGG 设备
$lsdev |grep ^ent
ent0             Available   Logical Host Ethernet Port (lp-hea)
ent1             Available   Logical Host Ethernet Port (lp-hea)
ent2             Available   Gigabit Ethernet-SX Adapter (e414a816)
ent3             Available   Gigabit Ethernet-SX Adapter (e414a816)
ent4             Available   Gigabit Ethernet-SX PCI-X Adapter (14106703)
ent5             Available   Gigabit Ethernet-SX PCI-X Adapter (14106703)
ent6             Available   Virtual I/O Ethernet Adapter (l-lan)
ent7             Available   Virtual I/O Ethernet Adapter (l-lan)
ent8             Available   Virtual I/O Ethernet Adapter (l-lan)
ent9             Available   Virtual I/O Ethernet Adapter (l-lan)
ent10            Available   EtherChannel/IEEE 802.3ad Link Aggregation
ent11            Available   EtherChannel/IEEE 802.3ad Link Aggregation
ent12            Available   EtherChannel/IEEE 802.3ad Link Aggregation
ent13            Available   Virtual I/O Ethernet Adapter (l-lan)
ent14            Available   Virtual I/O Ethernet Adapter (l-lan)
ent15            Available   Virtual I/O Ethernet Adapter (l-lan)
ent16            Available   Shared Ethernet Adapter
ent17            Available   Shared Ethernet Adapter
ent18            Available   Shared Ethernet Adapter

在 lsdev 命令的输出中,可以看到链路聚合设备(ent10 - ent12)就像是一个物理适配器。这样就可以通过 Shared Ethernet Adapter(ent16 - ent18)把这个链路聚合设备映射到一个虚拟设备(ent13 - ent15)。SEA 把这个链路聚合设备(LNAGG)当作一个物理适配器对待。Virtual Ethernet Adapter(VEA)ent6 - ent9 是默认创建的,是不能感知 VLAN 的设备,也不能把它们修改为感知 VLAN 的。ent0 - ent5 是刀片服务器上的物理适配器。

通过在 lsdev 命令上使用 attr 标志,可以查看 LNAGG 设备与物理适配器的映射方式。$lsdev -dev ent10 -attr 会产生表 1 所示的映射。


表 1. $lsdev -dev ent10 -attr 显示的 LNAGG 到 PA 映射
属性 说明 用户是否可以设置?
adapter_names ent0 EtherChannel 适配器 可以 < 主
alt_addr 0x000000000000 Alternate EtherChannel Address 可以
auto_recovery no 启用故障转移后的自动恢复 可以
backup_adapter ent5 在整个通道发生故障时使用的适配器 可以 < 备份
hash_mode default 决定如何选择外出适配器 可以
mode standard EtherChannel 操作模式 可以
netaddr   要 ping 的地址 可以
noloss_failover yes 启用 ping 失败之后的无损故障转移 可以
num_retries 8 失败之前的 ping 重试次数 可以
retry_time 1 ping 操作之间等待的时间(秒数) 可以
use_alt_addr no 启用 Alternate EtherChannel Address 可以
use_jumbo_frame no 启用 Gigabit Ethernet Jumbo Frames 可以




步骤 2:在 IVM 上创建虚拟适配器

在这个示例中,希望让 VLAN 373 和 383 的网络通信流通过 Virtual Ethernet Adapter。配置这个解决方案的第一步是在 IVM 上创建虚拟适配器,以便传输客户机 LPAR 的通信流。我们来创建一个虚拟适配器,它的主端口是 373,辅端口是 383。

按照以下步骤在 IVM 上创建感知 VLAN 的接口:

  1. 使用您喜欢的(putty)telnet 程序,打开一个连接 IVM 的窗口,作为 padmin 登录(默认密码是 “passw0rd”,其中的 “0” 是零而不是 “O”)。
  2. 使用 shwres -r virtualio --rsubtype eth --level lpar 命令列出以太网资源:

    清单 3. 列出以太网资源
    $lshwres -r virtualio --rsubtype eth --level lpar
    lpar_name=IVM_01,lpar_id=1,slot_num=3,state=1,ieee_virtual_eth=0,port_vlan_id=1,
     addl_vlan_ids=none,is_trunk=1,trunk_priority=1,is_required=0,mac_addr=463337C4B503
    lpar_name=IVM_01,lpar_id=1,slot_num=4,state=1,ieee_virtual_eth=0,port_vlan_id=2,
     addl_vlan_ids=none,is_trunk=1,trunk_priority=1,is_required=0,mac_addr=463337C4B504
    lpar_name=IVM_01,lpar_id=1,slot_num=5,state=1,ieee_virtual_eth=0,port_vlan_id=3,
     addl_vlan_ids=none,is_trunk=1,trunk_priority=1,is_required=0,mac_addr=463337C4B505
    lpar_name=IVM_01,lpar_id=1,slot_num=6,state=1,ieee_virtual_eth=0,port_vlan_id=4,
     addl_vlan_ids=none,is_trunk=1,trunk_priority=1,is_required=0,mac_addr=463337C4B506
    

  3. 使用 chhwres 命令在 IVM 上创建一个支持 IEEE VLAN 感知的虚拟适配器以及希望在这个接口上使用的额外 VLAN。这需要在 IVM 的命令行上执行以下命令:$ chhwres -p IVM_01 -o a -r virtualio --rsubtype eth -s 15 -a\ '"ieee_virtual_eth=1","port_vlan_id=373","addl_vlan_ids=383","is_trunk=1","trunk_priority=1"'。chhwres 命令告诉 IVM 如何构造一个新的感知 VLAN 的 Virtual Ethernet Adapter。

    为了在 IVM 上创建多个虚拟适配器,需要了解这个命令的一些重要特性:
    • -p partition:在这个命令中,通过使用 -p 标志告诉 chhwres 要修改 IVM 分区。
    • -s nn:这告诉 IVM 我们要使用一个特定的插槽号。如果没有指定这个参数,IVM 将使用下一个可用插槽。当从 IVM 删除设备时需要插槽号。
    • ieee_virtual_eth:如果值为 1,就通知 IVM 这个适配器支持 IEEE 802.1Q。如果需要额外的 VLAN,就需要把这个参数设置为 1。
    • port_vlan_id:这是虚拟适配器的主 VLAN。
    • add_vlan_ids:如果启用了聚合,那么这个参数接受额外的 VLAN。
    • is_trunk:如果使用多个 VLAN,这个属性也必须设置为 1。
    • trunk_priority:如果启用了聚合,适配器的优先级必须设置在 1-15 之间。
  4. 再次运行 lshwres 命令并寻找新设备,从而确认已经创建了虚拟适配器。

    清单 4. 显示新设备
    $lshwres -r virtualio --rsubtype eth --level lpar
    lpar_name=IVM_01,lpar_id=1,slot_num=3,state=1,ieee_virtual_eth=0,port_vlan_id=1,
     addl_vlan_ids=none,is_trunk=1,trunk_priority=1,is_required=0,mac_addr=463337C4B503
    lpar_name=IVM_01,lpar_id=1,slot_num=4,state=1,ieee_virtual_eth=0,port_vlan_id=2,
     addl_vlan_ids=none,is_trunk=1,trunk_priority=1,is_required=0,mac_addr=463337C4B504
    lpar_name=IVM_01,lpar_id=1,slot_num=5,state=1,ieee_virtual_eth=0,port_vlan_id=3,
     addl_vlan_ids=none,is_trunk=1,trunk_priority=1,is_required=0,mac_addr=463337C4B505
    lpar_name=IVM_01,lpar_id=1,slot_num=6,state=1,ieee_virtual_eth=0,port_vlan_id=4,
     addl_vlan_ids=none,is_trunk=1,trunk_priority=1,is_required=0,mac_addr=463337C4B506
    lpar_name=IVM_01,lpar_id=1,slot_num=15,state=1,ieee_virtual_eth=1,port_vlan_id=383,
     addl_vlan_ids=378,is_trunk=1,trunk_priority=1,is_required=0,mac_addr=463337C4B50F
    lpar_name=IVM_01,lpar_id=1,slot_num=16,state=1,ieee_virtual_eth=1,port_vlan_id=6,
     "addl_vlan_ids=22,23",is_trunk=1,trunk_priority=1,is_required=0,
     mac_addr=463337C4B510
    lpar_name=IVM_01,lpar_id=1,slot_num=17,state=1,ieee_virtual_eth=1,port_vlan_id=7,
     "addl_vlan_ids=565,566,567,568",is_trunk=1,trunk_priority=1,is_required=0,
     mac_addr=463337C4B511
    





步骤 3:把虚拟以太网 ID 分配给物理适配器

创建链路聚合设备之后,需要把它映射到虚拟适配器。这很容易通过图 3 所示的 IVM GUI 完成。


图 3. 通过 IVM GUI 把 LNAGG 映射到虚拟适配器
通过 IVM GUI 把 LNAGG 映射到虚拟适配器

在登录这个 GUI 之后,在左边的导航栏中选择 “View/Modify Virtual Ethernet”,然后选择 “Virtual Ethernet Bridge” 选项卡。在这个菜单上,可以看到前面创建的虚拟以太网适配器(主 VLAN 为 383,辅 VLAN 为 373)。可以从下拉框中选择前面创建的链路聚合设备。选择新设备之后,单击 Apply。这会在 IVM 中创建一个 Shared Ethernet Adapter(SEA)。





步骤 4:修改 LPAR 的属性

把物理适配器或 LNAGG 设备映射到 IVM 上的虚拟以太网 ID 之后,需要为每个逻辑分区创建虚拟适配器。第一步是登录 IVM GUI(见图 4)。


图 4. 为每个 LPAR 创建虚拟适配器
为每个 LPAR 创建虚拟适配器

在登录之后,选择左上角的 View/Modify Partition。页面刷新之后,选择要修改的 LPAR。

在菜单中选择客户机 LPAR 并确认您的浏览器支持弹出菜单。在弹出菜单中,选择 “Ethernet” 选项卡(图 5)。


图 5. 在修改属性时必须关闭 LPAR
在修改属性时必须关闭 LPAR

在图 5 中,可以看到 Virtual Ethernet 下拉框是灰色的;这是因为在截取这个屏幕图时 LPAR 正在运行。在修改属性之前,一定要关闭或禁用客户机 LPAR。

在这个屏幕上,使用下拉框把感知 VLAN 的 VEA 映射到客户机 LPAR 的适配器。注意,虚拟适配器与一个 VLAN 相关联,这使 IVM 可以给操作系统发出的通信流加上 VLAN 标记并发送到适当的 LNAGG 设备。如果需要更多适配器,那么单击 Create Adapter。





步骤 5:通过配置 Linux 使用感知 VLAN 的接口

配置了 IVM 和 Cisco 交换机之后,如果配置需要 Linux 分区的静态 IP 地址,那么可能需要执行另一个步骤。在 IVM GUI 上,启用 LPAR。

  1. 登录机器并把用户改为根用户。
  2. 输入以下命令:cd /etc/sysconfig/network-scripts。

如果执行 ifconfig 命令,就会看到映射到 LPAR 的虚拟适配器 VLAN。使用您喜欢的编辑器,根据配置需求修改接口参数。下面是一个使用静态 IP 地址的接口示例 ifcfg-eth0:


清单 5. 具有静态 IP 地址的接口
DEVICE=eth0
BOOTPROTO=static
BROADCAST=192.168.1.31
HWADDR=00:1A:64:8C:B2:32
IPADDR=192.168.1.44
NETMASK=255.255.255.0
ONBOOT=yes
TYPE=Ethernet
GATEWAY=192.168.1.1

使用 /etc/init.d/network restart 重新启动接口。





结束语

与任何部署工作一样,规划是获得成功的关键。为了避免返工,在刀片服务器机架中实现复杂的网络之前,一定要完成网络设计。根据我们的经验,重新配置支持 IVM 的复杂网络是相当费事的;实际上,管理员常常必须在重新配置之前删除 以前的配置。

规划对于安装也很重要,因为无法在 IVM 中动态地在虚拟适配器上添加新的 VLAN。由于在 JS22 中只能有一个 IVM,所以不能像传统的 VIOS 安装中那样使用 SEA 故障转移。链路聚合提供了跨多个交换机路由通信流的机制,有助于防止交换机造成的网络故障。在考虑刀片服务器中的冗余设计时,要记住一个 PDU 为刀片服务器机架的上半部分供电,另一个 PDU 为下半部分供电。

所有这些因素决定了网络实现的复杂性,所以建议在行动之前一定要做好规划。

(责任编辑:A6)


时间:2008-08-27 16:33 来源:developerWorks 中国 作者:Matthew B. Trevathan 原文链接

好文,顶一下
(0)
0%
文章真差,踩一下
(0)
0%
------分隔线----------------------------


把开源带在你的身边-精美linux小纪念品
无觅相关文章插件,快速提升流量