配置第 3 层群集
了解 L3 群集
扩展高可用性部署和提高不同网络上的客户端流量可扩展性的需求被引导到建立 L3 群集。L3 群集允许您在单个子网(L2 群集)上对 NetScaler 设备进行分组。
L3 群集也被称为“独立网络配置 (INC) 模式下的群集”。在 L3 群集部署中,同一网络中的群集节点被分组为一个节点组。L3 群集使用 GRE 通道在网络上引导数据包。在 L3 群集上路由心跳消息。
体系结构
L3 群集架构包括以下组件:
-
节点组 - 来自每个网络(n1、n2)和(n3、n4)的群集节点分组形成一个节点组,如下图所示。这些节点组终止到网络两端的第 3 层交换机。
- 群集通过群集节点和客户端连接 设备之间的物理连接与客户端进行通信。这些物理连接的逻辑分组称为客户端数据平面。
- 群集通过群集节点和服务器端连接设备之间的物理连接与服务器通信。这些物理连接的逻辑分组称为 服务器数据平面。
- 背板交换机 - 同一网络中的群集节点使用群集背板相互通信。背板是一组接口,其中每个节点的一个接口连接到公共交换机,该交换机称为群集背板交换机。
-
通道 - 默认情况下,L3 群集中的节点之间的数据包通过未加密的 GRE 通道交换,该通道使用源节点和目标节点的 NSIP 地址进行路由。属于不同网络的节点的转向机制会发生变化。数据包通过 GRE 通道引导到另一个子网上的节点,而不是重写 MAC。
注意:
对于新的部署,我们建议使用 UDP 通道来引导数据包通过网络。使用 UDP 通道的优点是:
- 数据包引擎之间的控制基于 4 元组,这提供了更好的分配。
- 您可以避免 CPU 利用率的偏差。
请参阅下表,了解如何在不同的隧道模式下引导数据包。
通道模式 相同的网络 不同的网络 无 背板用于引导数据包。 GRE 通道用于引导流量。 GRE GRE 通道用于引导数据包。 GRE 通道用于引导数据包。 UDP UDP 通道用于引导数据包。 UDP 通道用于引导数据包。
示例
举一个包含以下内容的 L3 群集部署示例:
- 三个 NetScaler 设备(n1、n2 和 n3)节点分组到节点组 1 中。
- 同样,节点 n4 和 n5 被分组到节点组 2 中。在第三个网络中,有两个节点组。节点组 3 包括 n6 和 n7,节点组 4 包括 n8 和 n9。
- 属于同一网络的 NetScaler 设备组合成一个节点组。
配置 L3 群集之前需要考虑的几点
在 NetScaler 设备上配置 L3 群集之前,请考虑以下几点:
- 配置 L3 子网时,背板不是必需的。如果未指定背板,则该节点不会进入背板故障状态。
注意:
如果您在同一 L2 网络中有多个节点,则必须定义背板接口。如果未提及背板接口,则节点进入背板故障状态。
-
L3 群集不支持 L2 功能和条带 SNIP。
- L3 群集中的外部流量分布仅支持等价多路径 (ECMP)。
- 在 L3 群集部署中禁用转向时,不会处理 ICMP 错误和分段:
- 网络实体(
route, route6, pbr
和pbr6
)必须绑定到配置节点组。 - VLAN、RNAT 和 IP 通道无法绑定到配置节点组。
- 配置节点组必须始终具有 STRICT 属性“是”。
- 不得通过“add cluster node”命令将群集节点添加到配置节点组。
-
add cluster instance -INC enabled
命令清除网络实体(路由、route6、PBR、pb6、RNAT、IP 通道、ip6tunnel)。 -
clear config extended+
命令不清除 L3 群集中的实体(route、route6、PBR、pb6、RNAT、IP tunnel、ip6tunnel)。
配置 L3 群集
在 L3 群集配置中,cluster 命令具有不同的属性要配置,这些属性基于节点和节点组。除了 IPv4 配置文件之外,L3 群集配置文件还包括 IPv6 配置文件。
在 NetScaler 设备上配置 L3 群集包括以下任务:
- 创建群集实例
- 在 L3 群集中创建节点组
- 将 NetScaler 设备添加到群集并使用节点组进行分组
- 向节点添加群集 IP 地址
- 启用群集实例
- 保存配置
- 向现有节点组添加节点
- 在 L3 群集中创建节点组
- 将新节点分组到新创建的节点组
- 将节点加入群集
使用 CLI 配置以下内容
-
创建群集实例
add cluster instance <clid> -inc <ENABLED|DISABLED> -processLocal <ENABLED|DISABLED>
注意:
必须为 L3 群集启用“inc”参数。
-
在 L3 群集中创建节点组
add cluster nodegroup <name>
-
将 NetScaler 设备添加到群集并与节点组关联
add cluster node <nodeid> <nodeip> -backplane <interface_name> nodegroup <ng> –tunnelmode UDP
-
在此节点上添加群集 IP 地址
add ns ip <IPAddress> <netmask> -type clip
-
启用群集实例
enable cluster instance <clId>
-
保存配置
save ns config
-
热重启设备
reboot -warm
-
向现有节点组添加新节点
add cluster node <nodeid> <nodeip> -nodegroup <ng> –tunnelmode UDP
-
在 L3 群集中创建新的节点组
add cluster nodegroup <ng>
-
将新节点分组到新创建的节点组
add cluster node <nodeid> <nodeip> -nodegroup <ng> –tunnelmode UDP
-
将节点加入群集
join cluster –clip <ip_addr> -password <password>
Example: The following is an example configuration for nodegroup1 and nodegroup2.
> add cluster instance 1 –inc ENABLED –processLocal ENABLED
Done
> add cluster nodegroup ng1
Done
> add cluster node 0 1.1.1.1 –state ACTIVE -backplane 0/1/1 –nodegroup ng1 –tunnelmode UDP
Done
> add ns ip 1.1.1.100 255.255.255.255 –type clip
Done
> enable cluster instance 1
Done
> save ns config
Done
> add cluster node 1 1.1.1.2 –state ACTIVE –nodegroup ng1 –tunnelmode UDP
Done
> add cluster nodegroup ng2
Done
> add cluster node 4 2.2.2.1 –state ACTIVE –nodegroup ng2 –tunnelmode UDP
Done
> add cluster node 5 2.2.2.2 –state ACTIVE –nodegroup ng2 –tunnelmode UDP
Done
> join cluster -clip 1.1.1.100 -password nsroot
<!--NeedCopy-->
L3 群集的广告群集 IP 地址
配置要向上游路由器通告的群集 IP 地址,以使群集配置可以从任何子网访问。群集 IP 地址由节点上配置的动态路由协议作为内核路由公布。
公布群集 IP 地址包括以下任务:
- 启用群集 IP 地址的主机路由选项。主机路由选项将群集 IP 地址推送到 ZebOS 路由表,以便通过动态路由协议进行内核路由重新分配。
- 在节点上配置动态路由协议。动态路由协议将群集 IP 地址通告给上游路由器。有关配置动态路由协议的更多信息,请参阅配置动态路由。
使用 CLI 启用群集 IP 地址的主机路由选项
在命令提示符下,键入:
add nsip <IPAddress> <netmask> -hostRoute ENABLED
show nsip <IPAddress>
> add ns ip 10.102.29.60 255.255.255.255 -hostRoute ENABLED
> Done
<!--NeedCopy-->
在 L3 群集上发现了部分条带化配置
L3 群集上的斑点配置和部分条带化配置与 L2 群集略有不同。由于节点位于不同的子网上,因此配置可能因节点而异。在 L3 群集中,网络配置可以是特定于节点的,因此您必须根据以下参数配置斑点配置或部分条带配置。
要在 L3 群集上的 NetScaler 设备上配置发现的、部分条带化的配置,请执行以下任务:
- 将群集所有者组添加到 IPv4 静态路由表
- 将群集所有者组添加到 IPv6 静态路由表
- 将群集所有者组添加到基于 IPv4 策略的路由 (PBR)
- 将群集所有者组添加到 IPv6 PBR
- 添加 VLAN
- 将 VLAN 绑定到群集节点组的特定所有者组
使用 CLI 配置以下内容
-
将群集所有者组添加到 NetScaler 设备的 IPv4 静态路由表中
add route <network> <netmask> <gateway> -owner group <ng>
-
将群集所有者组添加到 NetScaler 设备的 IPv6 静态路由表中
add route6 <network> -owner group <ng>
-
将群集所有者组添加到 IPv4 PBR
add pbr <name> <action> -owner group <ng>
-
将群集所有者组添加到 IPv6 PBR
add pbr6 <name> <action> -owner group <ng>
-
添加 VLAN
add vlan <id>
-
将 VLAN 绑定到群集节点组的特定所有者组
bind vlan <id> -ifnum – [IPAddress <ipv4_addr | ipv6_addr> [-owner group <ng>]
以下命令是可使用 CLI 配置的斑点配置和部分条带化配置的示例示例。
> add route 10.102.29.0 255.255.255.0 10.102.29.2 –ownergroup ng2
Done
> add route6 fe80::9404:60ff:fedd:a464/64 –ownergroup ng1
Done
> add pbr pbr1 allow –ownergroup ng1
Done
> add pbr6 pbr2 allow –ownergroup ng2
Done
> add vlan 2
Done
> bind vlan 2 –ifnum 1/2 –[IPAddress 10.102.29.80 | fe80::9404:60ff:fedd:a464/64-ownergroup ng1
Done
<!--NeedCopy-->
配置节点组
在 L3 群集中,要在多个节点组上复制相同的配置集,请使用以下命令:
使用 CLI 配置以下内容
-
向 NetScaler 设备的路由表中添加 IPv4 静态路由
add route <network> <netmask> <gateway> -ownerGroup <ng>
示例配置:
add route 0 0 10.102.53.1 –ownerGroup ng1
add route 0 0 10.102.53.1 –ownerGroup ng2
<!--NeedCopy-->
您定义了一个新的节点组“all”以支持上述配置,并且必须配置以下命令:
使用 CLI 配置以下内容
-
使用严格参数向群集添加新节点组
add cluster node group <name> -strict <YES | NO>
-
将群集节点或实体绑定到给定的节点组
bind cluster nodegroup <name> -node <nodeid>
-
向所有者组添加 IPv4 静态路由
add route <network> <netmask> <gateway> -ownerGroup <ng>
示例配置:
add cluster nodegroup all –strict YES
bind cluster nodegroup all –node 1
bind cluster nodegroup all –node 2
add route 0 0 10.102.53.1 –ownerGroup all
<!--NeedCopy-->
L3 群集中的流量分配
在群集设置中,外部网络将 NetScaler 设备的集合视为单个实体。因此,群集必须选择必须接收流量的单个节点。在 L3 群集中,此选择是使用 ECMP 完成的。所选节点称为流量接收器。
注意
对于 L3 群集(跨不同网络的节点),只能使用 ECMP 流量分配。
流量接收器获取流量,然后使用内部群集逻辑确定必须处理流量的节点。此节点称为流处理器。如果流量接收器和流量处理器位于同一个网络上,则流量接收器通过背板将流量引导到流量处理器。如果流量接收器和流量处理器位于不同的网络上,则流量将通过通道引导。
注意
流量接收器和流量处理器必须是能够服务流量的节点。
从 NetScaler 11 开始,您可以在群集背板上禁用转向。有关更多信息,请参阅 禁用群集背板上的转向。
上图显示了流经群集的客户端请求。客户端向虚拟 IP (VIP) 地址发送请求。在客户端数据层面上配置的流量分配机制选择其中一个群集节点作为流量接收器。流量接收器接收流量,确定必须处理流量的节点,并将请求引导到该节点(除非流量接收器选择自己作为流量处理器)。如果流量处理器和流量接收器位于同一节点组中,则数据包将导向在底板上。如果流量处理器和流量接收器位于不同的节点组中,则数据包将通过路由路径通过通道进行引导。
流处理器与服务器建立连接。服务器处理请求并将响应发送到向服务器发送请求的子网 IP (SNIP) 地址。由于在 L3 群集中,SNIP 始终是一个斑点 SNIP,所以拥有 SNIP 地址的节点将接收来自服务器的响应。