网络管理器的目的是检查网卡和电缆故障并从中恢复,以便网络服务对客户端保持高可用性。此功能实际上就是指将每个程序包的IP地址分配给其运行的节点上的主LAN接口卡,监视所有接口的运行状况,并在必要时进行切换。
网络管理器固定和可重新定位的IP地址
每个节点(主机系统)的每个活动网络管理器接口都至少应有一个IP地址。该地址称为固定IP地址,在节点的/etc/rc.config.d/netconf文件或/etc/rc.config.d/netconf-ipv6文件中配置。固定IP地址不能转移到另一个节点上,但是可以转移到备用LAN接口卡上。固定IP地址不与程序包关联。固定IP地址用于传送心跳线消息(有关详细内容,请参考“群集管理器如何工作”)和其他数据。
除固定IP地址外,通常还要为每个故障切换程序包分配一个或多个唯一的IP地址。程序包启动时,程序包控制脚本中的cmmodnet命令会将程序包IP地址分配给主LAN接口卡。
与程序包相关联的IP地址称为可重新定位的IP地址(也称为程序包IP地址或浮动IP地址),因为这些地址实际上可以从一个群集节点移动到另一个群集节点。在一个群集中可使用多达200个可重新定位的IP地址,并且可将它们分配给最多150个程序包。这种地址可以是IPv4和IPv6地址的组合地址。
由于系统多节点程序包及多节点程序包不进行故障切换,因此它们没有可重新定位的IP地址。
可重新定位的IP地址就像是分配给程序包的虚拟主机IP地址。建议通过DNS(域名系统)为每个程序包配置名称。然后程序就能像使用主机名一样将程序包名作为gethostbyname()的输入,它可返回程序包的可重新定位地址。
在局域网卡出现故障的情况下,固定的IP地址和可重新定位的IP地址都将切换到备用LAN接口上。另外,如果程序包的控制转移了,可重新定位地址(但不包括固定地址)可以由另一个代管节点接管。这意味着应用程序无须了解程序包当前驻留在哪个节点上就可以通过它的可重新定位地址来访问程序包。
网络管理器IP地址的类型
Serviceguard同时支持IPv4和IPv6地址类型IPv4地址是形式为“n.n.n.n”的传统地址,其中“n”是介于0与255之间的一个十进制数。IPv6地址的形式为“x:x:x:x:x:x:x:x”,其中“x”为十六进制数,每个地址包含八个16位地址段,共128位。心跳线地址只支持使用IPv4地址,但群集中定义的固定IP地址既可以是IPv4地址,也可以是IPv6地址(包括各种组合形式)。IPv4和IPv6地址都可以用做可重新定位(程序包)的IP地址。
网络管理器添加和删除可重新定位的IP地址
程序包启动后,可重新定位的IP地址便添加到指定的IP子网上。程序包停止后,可重新定位的IP地址就从指定的子网中删除掉。添加和删除可重新定位的IP地址由程序包控制脚本中的cmmodnet命令处理,有关此脚本的详细说明,请参阅第6章“配置程序包及其服务”。
IP地址仅配置在每个主网络管理器接口卡上;备用卡不能配置IP地址。同一个网卡上的多个IPv4地址必须属于同一个IP子网。
网络管理器分载
在一个程序包中,可以将多个服务与同一IP地址关联。如果其中一个服务移到了新的系统,则使用相同IP地址的其他服务也将转移。可以通过使每个服务都有自己的程序包并为其分配一个唯一的IP地址来实现分载。这使管理员能够将所选的服务移到负载较少的系统。
网络管理器监视LAN接口和检测故障
每隔一定时间,Serviceguard就会轮询群集配置文件中指定的所有网络管理器接口卡。将按下列方式检测每个节点内的网络故障。节点上的某个接口被指定为轮询者。轮询者将轮询该节点所属桥接网中其他主接口和备用接口,以检查它们的运行状况是否正常。通常,轮询者是一个备用接口;如果桥接网中没有备用接口,则将指定主接口来执行轮询任务(有关桥接网的说明,请参阅第2章中的“冗余网络部件”)。
轮询接口将LAN信息包发送给节点中同一个桥接网上其他接口,并接收它们返回的信息包。
一旦LAN驱动程序报告错误,Serviceguard就会立刻声明相应的卡已停止,并执行本地切换。例如,如果该卡无法发送信息,Serviceguard就会立刻收到错误通知,并将该卡标记为已停止。
ServiceguardNetworkManager还会监视某个接口上发送和接收的数据包的数量,以确定卡是否出现问题。Serviceguard处理发送和接收的数据包的数量有两种方式。在群集配置文件中,为NETWORK_FAILURE_DETECTION参数选择下列两个值之一:
INOUT:如果在预定的时间内入站和出站数均停止增加,则Serviceguard就会将该卡声明为已停止。如果只有入站数停止增加,或者只有出站数停止增加,Serviceguard不会将该卡声明为出现故障。入站数和出站数都必须停止增加。这是缺省值。
INONLY_OR_INOUT:如果入站数和出站数都停止增加,此选项也会将该卡声明为出现故障。但如果只有入站数增加,它也会将其声明为出现故障。
此选项是从ServiceguardA.11.16开始提供的。它不适用于所有环境。选择此选项之前,务必满足下列条件:
群集中的每个桥接网都应有两个以上的接口。
每个主接口至少应有一个备用接口,并应与一个备用交换机相连。
主交换机应直接与其备用交换机相连。
所有桥接网中的任何位置均不应有单点故障。
网络管理器本地切换
本地网络切换包括检测本地网络管理器接口故障及故障切换到本地备份局域网卡(也称为备用局域网卡)。备份局域网卡不能配置任何IP地址。
本地网络切换时,以太网的TCP/IP连接不会丢失,但IEEE802.3连接将丢失。对于IPv4来说,以太网、令牌环网和FDDI使用ARP协议,且HP-UX发送无需应答的ARP来通知远程系统进行MAC(链路层)地址和IP层地址之间的地址映射。IEEE802.3没有rearp功能。
IPv6使用NDP(NeighborDiscoveryProtocol),而不是ARP协议。主机和路由器使用NDP协议执行以下操作:
确定相同链路上相邻路由器的链路层地址,并快速清空无效的缓冲值。
查找可以代替它转发数据包的相邻路由器。
主动跟踪哪些相邻路由器是可以到达的,哪些是不可到达的,并检测发生变化的链路层地址。
当到达某个路由器的路径出现故障时,搜索其他正常运行的路由器。
以太网系列支持以下本地切换配置。
1000Base-SX和1000Base-T
1000Base-T或1000BaseSX以及100Base-T
但是,在HP-UX11i上,仅当配置了1000Base-T或1000Base-SX卡时,才能使用特大帧。100Base-T和10Base-T不支持特大帧。另外,运行1000Base-T或1000Base-SX的网络管理器接口卡不能本地故障切换到10BaseT。
在转移过程中,IP信息包将丢失,但TCP(传输控制协议)将重新传送这些信息包。使用UDP(用户数据报协议)时,协议将不会自动传送这些信息包。但是,由于UDP是一种不可靠的服务,所以应使UDP应用程序准备好如何处理丢失网络信息包并正确地进行恢复。注意仅在同一类型的两个LAN之间才支持本地切换。例如,不支持以太网和FDDI接口之间的本地切换,但支持10BT以太网和100BT以太网之间的本地切换。
图3-16“本地网络切换前的群集”显示了在一个桥接网中连接的两个节点。LAN段1和段2由一个集线器连接。
图3-16本地网络切换前的群集
节点1和节点2通过LAN网段2通信,LAN网段1是一个备用LAN网段。
图3-17“本地网络切换后的群集”中显示了当节点1上的LAN网段2的网络管理器接口卡发生故障时将发生的情况。
图3-17本地网络切换后的群集
备用接口接管后,IP地址将切换到与备用接口关联的硬件路径。这种切换在TCP/IP层上是透明的。所有应用程序都继续在它们的原节点上运行。此时,由于发生转移,节点1上的IP通信将延迟。但是TCP/IP连接仍将继续保持,应用程序也将继续运行。节点1上的程序包控制将不受影响。
注释:在以太网上,Serviceguard支持在配置有“以太网协议”的网络管理器接口之间、或在配置有“封装在IEEE802.3协议内的SNAP”的网络管理器接口之间进行本地故障切换。不能在同一接口上同时使用这两种协议,也不能在使用不同协议的接口之间进行本地故障切换。
图3-18“电缆出现故障后的本地切换”显示了本地切换的另一个示例。此时,影响网段2的故障导致了两个节点都切换到了连接到网段1的局域网卡上。
图3-18电缆出现故障后的本地切换
本地网络切换适用于包含一个或多个节点的群集。您可以设计一个单节点群集,以便在只需一个节点且不希望设置复杂群集的情况下利用此本地网络切换功能。
网络管理器本地切换后再切换回主LAN接口
如果主接口发生故障,则子网将切换到备用接口。如果主接口稍后恢复,则群集守护程序会将子网切换回主接口。每当节点暂停时,群集守护程序(cmcld)总会试图将运行在备用接口上的任何配置了Serviceguard的子网切换回主接口。进行此操作时将不会考虑主接口的链路状态。这种切换回操作的目的是要保持群集启动前的原始网络配置。如果执行cmhaltnode命令,则将在特定节点上发生这种切换回操作,如果执行cmhaltcl命令,则它将在群集内的所有节点上发生。
网络管理器远程切换
远程切换(即程序包切换)涉及将程序包和与之相关的IP地址移动到新系统中。新系统必须已配置好相同的子网并且运行正常,否则程序包将无法启动。进行远程切换时会丢失TCP连接。TCP应用程序必须重新进行连接;此过程不会自动进行。注意,如果程序包依赖于多个子网,则在程序包启动之前目标节点上的所有子网都必须是可用的。
注意仅在同一类型的LAN之间支持远程切换。例如,如果某台机器使用的是以太网接口,而故障切换机器使用的是FDDI接口,则不支持它们之间的远程切换。可重新定位的IP地址的远程切换如上面的图3-5“切换程序包前”和图3-6“程序包切换后”中所示。
网络管理器切换后的地址解析消息
当浮动IPv4地址移到一个新接口(本地或远程的)时,就会广播一个ARP消息,说明IP地址和链路层地址之间的新映射。对于每个已移动的IPv4地址,都会发送与其对应的ARP消息。接收广播的所有系统都将更新相关联的ARP高速缓存项来反映此变化。目前,ARP消息是在IP地址添加到新系统时发送的。并且,该消息是以ARP请求的形式发送的。ARP请求消息的发送者和接收者协议地址字段都设置为同一个浮动IP地址。这将确保收到此消息的节点不会发送答复。
与IPv4不同,IPv6地址使用NDP消息来确定其相邻路由器的链路层地址。
网络管理器自动端口聚合
Serviceguard通过HP-APA(Auto-PortAggregation,HP产品J4240AA)支持使用自动端口聚合。HP-APA是一种联网技术,它可以将多个物理快速以太网或千兆字节以太网端口聚集到逻辑链路聚合中。以多个100Mbps快速以太网链路或多个1Gbps以太网链路(或分别为200Mbps和2Gbps全双工)为基础,HP-APA可提供灵活的、可伸缩的带宽。它的其他优点包括物理链路的负荷平衡、自动故障检测以及恢复,这些优点都可用在需要高可用性的环境中。端口聚合能力有时称为链路聚合或主干线。双堆栈内核也支持APA。
一旦启用,每个链路聚合都可以看作由多个物理端口组成的单个逻辑链路,使用一个IP和MAC地址。HP-APA可以在一个链路聚合中最多聚集四个物理端口;每个系统允许的链路聚合数为50个。空链路聚合的MAC地址个数为零。可以聚集多端口网卡(当前最多具有四个可用端口的网卡)中的端口。此外,也可以聚集多个网卡上的端口。图3-19“聚合的联网端口”中显示了两个示例。
图3-19聚合的联网端口
非聚合配置中的单端口和双端口LAN都有四个局域网卡,每个网卡都与独立的非聚合IP地址和MAC地址关联,并且都有自己的LAN名称(lan0、lan1、lan2、lan3)。当聚集这些端口后,全部四个端口与一个IP地址和MAC地址关联。在上面的例子中,聚合端口整体称为lan900,HP-UX11i通过该名称知道聚合的存在(在HP-UX11.0上,聚合应从lan100开始)。
可以随意组合各种以太网卡类型(单个或两个端口)和聚合组,但极其重要的是在任何APA的组合中必须至少使用两个物理网卡以避免心跳线连接的单点故障。HP-APA当前支持对链路聚合进行自动配置和手动配置。
有关使用Serviceguard实现APA的信息,请参阅《《HPAutoPortAggregation(APA)SupportGuide》》(部件号J4240-90027,发行日期2004年9月)以及在《http://docs.hp.com》上的NetworkingandCommunications文档集中发布的其他APA文档。
网络管理器VLAN配置
现在,Serviceguard群集支持使用HP-UXVLAN软件的虚拟LAN配置。双堆栈内核也支持VLAN。
什么是VLAN
虚拟LAN(或VLAN)不考虑节点的物理位置,而是根据某种结合规则将网络节点进行分组的一种网络连接技术。具体而言,可以使用VLAN将一个物理LAN分成多个逻辑LAN网段或广播域。逻辑LAN中的每个接口在配置时被分配了一个标记ID。具有相同标记ID的VLAN接口可以相互进行通信,就如同它们在同一个物理网络中一样。创建虚拟LAN的优点在于:减少广播流量,提升网络性能和安全性,并提升网络的可管理性。在HP-UX中,VLAN的初始结合规则是基于端口、IP和协议的。可以根据一个物理LAN接口配置多个VLAN接口,而对于应用程序而言,这些接口与常规的网络管理器接口没有任何差别。然后,可以为这些VLAN接口分配IP地址,以构成它们的子网。有关如何配置VLAN接口的详细内容,请参考《《UsingHP-UXVLAN》》(T1453-90001)文档。
支持HP-UXVLAN
对VLAN的支持与对其他连接技术的支持类似。VLAN接口可以用做群集中的心跳线和数据网络。网络管理器将监视群集中配置的VLAN接口的运行状态,并在检测到VLAN接口出现故障时,执行本地和远程故障切换。但物理NIC端口出现故障时,VLAN接口通常会发生故障,因为VLAN接口是基于这些端口创建的。
配置限制
HP-UX允许根据物理NIC端口创建最多1024个VLAN。显然,满足这样的配置需要大量的系统资源。如果使用VLAN技术在每个群集节点中配置了大量网络管理器接口,那么Serviceguard可能会面临潜在性能降低、高CPU使用率和内存不足等问题。为了在VLAN网络中提供足够的灵活性,Serviceguard解决方案应遵循下列VLAN和通用网络配置要求。
在群集ASCII文件中支持每个节点最多配置30个网络管理器接口。这些接口可以是物理NIC端口、VLAN接口、APA聚合或三者的任意结合。
为满足Serviceguard心跳线的要求,物理LAN接口(VLAN根据这些接口创建)应与VLAN接口一起配置在ASCII文件中。
如果在一个群集节点中VLAN至少配置了两个NIC端口,则每个物理NIC端口最多可支持14个VLAN接口。如果物理NIC端口是VLAN配置的唯一NIC端口,则这种限制可以增加到28个VLAN接口。每个节点最多可以有30个网络管理器接口。说明该配置的一个示例为:带有两个单端口NIC卡的群集节点,两个NIC卡都配置为心跳线网络。然后,每个网络中的每个NIC卡最多可以有14个VLAN接口,每个节点总共有30个网络管理器接口。
VLAN的本地故障切换必须在同一链路类型上进行。主VLAN和备用VLAN必须具有相同的VLANID(或标记ID)。
只有HP-UX11i支持VLAN配置。
只支持基于端口和基于IP子网的VLAN。因为Serviceguard不支持除TCP/IP以外的任何其他传输协议,所以基于协议的VLAN不被支持。
为了保证能够正确运行,必须为每个VLAN接口在每个独立的子网中分配一个IP地址,除非该VLAN是做为主VLAN接口的一个备用接口。
不支持建立在APA聚合基础之上的VLAN接口。
由于VLAN软件的限制,不支持从物理LAN接口到VLAN接口或反向的故障切换。
不支持在广域网群集中使用VLAN。
如果使用CVM磁盘组,则不得在VLAN接口上配置Serviceguard心跳线。
网络管理器增强心跳线的要求
VLAN技术可以使公司的网络配置具有更大的灵活性。为保证Serviceguard在这种动态环境中成功运行,同时保持其可靠性和可用性,当群集中存在VLAN时,必须继续应用现有的心跳线规以及更多的限制。
现有的最低心跳线要求是无法更改的,但将根据物理网络对这些要求进行检查,而不是根据LAN接口进行检查,其中可以包括对VLAN接口进行检查,从而避免了单点故障。
对于所有网络,包括VLAN,仍然建议使用心跳线。
如果VLAN不首选使用心跳线网络,那么建议对群集ASCII文件中的其余物理网路使用心跳线。