1.1     NetScaler高可用概述

我们知道在高可用性环境中,一般需要2台相同型号的设备来完成高可用性环境的构建。高可用性环境的构建,可以确保NetScaler不至于成为系统的单点故障,保证后端的服务能够正常的不间断的提供服务访问。在两台NetScaler设备之间构建高可用(HA)集群时,两台NetScaler设备是通过UDP进行心跳信息检测的。NetScaler高可用集群中会存在一台主节点和一台辅助节点,主节点接管着所有的访问流量并管理着NetScaler所有的共享IP地址。辅助节点负责监视主节点的健康状况,以确保主节点的服务已启动并正在运行着。如果有问题,即主节点发生故障,那么该辅助节点就会接管着所有的访问流量并接管NetScaler所有的共享IP地址,保证对于后端服务的访问不会中断。

 

1.2     NetScaler HA体系结构

 

  下面是通用的NetScaler HA体系结构:

Citrix NetScaler HA(高可用性)解析_NetScaler

NetScaler所有的IP地址都是浮动的IP地址,并通过HA对成员进行共享,在HA中唯一的不共享的IP地址就是每台NetScaler设备的NSIP地址,即NetScaler的管理IP。并通过SNIP或着MIP和后端服务器进行通信,将前端请求的数据包交换传递给特定的所请求的服务器。

只有主的NetScaler(图中NetScaler 1)被使用。NetScaler 2的才会处于待机模式,并等待主节点发生故障。这两个节点交换数据包(HA同步)进行健康监测。

1.3     ARP/GARP/VMAC

NetScalers和其他网络设备一样使用ARP(地址解析协议)解析MAC地址来找到位于局域网上的其它设备的。例如,NetScaler设置了一个虚拟IP地址(VIP)。所有对VIP的请求数据包都会到达NetScaler的运行这个VIP服务的vServer网关,这时NetScaler将检查其自己的ARP缓存(位于预先解析的IP地址)对应的MAC地址。如果缓存为空,网关将通过LAN发送ARP广播包。相应的IP地址的设备将回复网关含有它的MAC地址的数据包。然后网关会把这个对于IPMAC地址对应关系放入自己的ARP缓存中。

可以通过NetScaler的命令查看ARP表:

Citrix NetScaler HA(高可用性)解析_健康状况_02

HA环境中,尤其是在故障转移的时候,在网关ARP缓存表中的前一个MAC地址是之前NetScaler主设备的MAC地址。这可能会导致问题。要解决这个问题,新的主设备将所有的NetScaler HA拥有的IP地址(VIPNSIPs等)发送GARPGratuitous ARP)广播数据包。网关将接收到这些数据包,并更新自己的ARP缓存表。

下面列出了几种情况下发送GARP的数据包的情况:

  • NetScaler 启动 (for MIP andSNIP)

  • 创建一个新的LB服务器

  • 添加新的IP

  • 设置新的VLAN

  • 故障转移

  需要注意的是有一些防火墙不支持GARP流量,因此,我们需要配置VMAC为部署。当使用VMACMAC地址是在两个节点之间共享的,因此它是不使用GARP更新MAC表。

如果主节点要是关闭或者如果它停止响应请求,辅助节点会接管所以的请求继续进行服务。在主节点和辅助节点之间使用心跳相互监视,通过每个节点的IP地址进行发送。

默认情况下,有一些端口需要打开防火墙规则以允许在高可用性设置的时候,NetScaler节点之间的通信,端口如下:

  • UDP端口3003用于交换心跳的通信UPDOWN状态

  • TCP端口3008是用于安全的高可用性配置同步

  • TCP端口3009用于安全命令传播和Metric Exchange ProtocolMEP

  • TCP端口3010是用于高可用性配置同步

  • TCP端口3011是用于命令传输和MEP

  NetScaler高可用这个功能需要我们有两个相同的型号和同一个系统的版本。运行HA时,如果型号不一致可能导致出现问题,例如,一个MPX5550和一个VPX 1000。如果是这样的配置出现问题Citrix并不会进行技术支持。

1.4     Netscaler HA设置选项说明

节点状态

  • STAYPRIMARY:此选项强制NetScaler设备停留在主节点模式。

  • STAYSECONDARY:此选项强制NetScaler设备留在辅助节点模式。

  • ENABLED:这是默认选项。该选项允许启用NetScaler的高可用性,对基于高可用性事件的NetScaler设备进行故障转移。

  • DISABLED:此选项禁用高可用性引擎。

故障保护

故障保护模式对两个节点的健康状况进行检查,确保一个节点始终是主节点。同时故障保护模式也是为了确保当一个主节点只有部分可用时,备份节点能够尽可能的处理流量。HA故障保护模式需要在每个节点上配置。

下面是产生的节点状态的HA的行为。

  • 故障保护禁用

Citrix NetScaler HA(高可用性)解析_NetScaler_03

  • 故障保护启用

Citrix NetScaler HA(高可用性)解析_健康状况_04

默认配置

 

主节点负责所有流量。

两个节点都有自己的NSIPs但共享大部分配置,包括VIPSNIPMIP

主节点上的更改被复制到辅助节点。(默认启用)

心跳(Hello间隔时间)为200ms

  • 使用UDP数据包的端口3003

  • 失效时间为3秒。

  • 当心跳包在3秒之后丢失就会发生故障转移。

故障保护默认是关闭的,开启需要在每个节点上配置。

默认情况下,通信并不加密,不走安全通道和协议:

  • HA对同步发生在端口3010TCP)。

  • 安全HA对同步发生在端口3008TCP)。

  • 命令传播发生在端口3011TCP)。

  • 安全命令传播发生在端口3009TCP)。

    1.5  Netscaler HA配置

为了建立一个高可用性主从节点,我们需要知道的其IP地址和默认的系统:用户名和密码。要求它们具有相同的RPC连接的用户名和密码,默认情况下,所有的NetScaler都必须相同。要建立一个高可用性对,去System | High Availability| Nodes,然后单击添加从节点之一。 这里我们提出了以下选项:

  • 远程IP地址(其他节点的NSIP

  • 配置远程系统参与高可用性设置

  • 关闭接口的HA monitor

  • 自节点上打开INC(独立网络配置)

  • 远程系统的凭据

我们需要做的就是输入IP地址,配置远程NetScaler系统的信息,关闭接口的HA monitor,并输入NetScaler的用户名和密码。

在接口上关闭HA monitor意味着,NetScaler不会使用该接口从一个节点到另一个节点发送的HA探针。

最后一个选项是,INC,如果设备在不同的子网,那么需要独立的网络配置,因为常规的HA选项使用相同的网络配置。之后,我们已经填入了信息并点击OK,主节点会开始与辅助节点传播其信息和配置,成立了高可用性对,如下面的截图:

Citrix NetScaler HA(高可用性)解析_HA_05

它也将开始同步文件,如SSL证书和应用防火、XML文件;您可以查看是同步的文件,不同的文件进程访问如下KB http://support.citrix.com/article/CTX138748

需要注意的是,有几个项目的同步是很重要的,而这些都是许可和ns.confrc.conf中的文件。你可以使用命令验证SSL同步情况,使用CLI命令:

Citrix NetScaler HA(高可用性)解析_HA_06

因为它是建立HA对,所做到主节点的操作和配置更改都将传播到辅助节点。

我们可以看到从GUI或使用下面的命令查看HA的节点:

Citrix NetScaler HA(高可用性)解析_NetScaler_07

在命令行显示出现的信息中,如果该节点的接口的活动的,说明该节点是主(活动)节点。

我们也可以使用故障切换界面进行查看;如果我们NetScaler有多个网络接口连接在了不同的交换机,就可以用它们来故障转移到另一个接口。

例如,如果我们的NetScaler采用两个接口,其中接口1连接交换机1,接口2连接到交换机2,我们可以使用故障切换接口设置故障转移从NIC1NIC 2,举个例子,交换机1关机。在一个大环境中,往往有跨越多个交换机的自动转移隧道自动处理。

GUI中,我们可以在每个节点上单击鼠标右键,并配置如同步或强制故障转移。强制故障切换可以让我们进行手动故障转移,这个一般在我们需要升级的时候进行手动故障切换。

默认情况下,当主节点出现故障,辅助节点将接管并自动成为主节点;当主主节点重新联机,原来的主节点就会降级为辅助节点。如果在一个环境中,我们的HA同步状态出现问题,辅助节点本身并没有同步到新更改的信息,那么在这个时候,我们要进行升级,为了保险起见,我们可以在升级辅助节点的时候,设置辅助节点为STAYSECONDARY状态,即强制NetScaler设备留在辅助节点模式。这将保证主节点在审计重启之后还将保持为主节点,辅助节点还是辅助节点。

如果您在使用HA功能的时候出现了一些问题,我们可以使用nsconmsg功能。通过运行命令nsconmsg –d event,我们可以得到一些控制台中发生的事件信息。

默认情况下,NetScaler使用Gratuitous ARPGARP)在发生故障转移后公布新的主节点的MAC地址。一些厂商如思科和一些老的防火墙厂商如瞻博网络不接受GARP请求数据包的类型。所以,如果您的环境中有不支持GARP的网络设备存在,且NetScaler的数据包需要通过该网络设备,那么就需要使用VMAC。关于GARP,通过登录到NetScalerCLI和运行命令set network L2 param garpReplyenabled。这个命令需要在设置了一对高可用性组的NetScaler设备上使用。

如果我们的防火墙或路由器不支持GARP,我们可以配置NetScaler使用VMAC VMAC允许的NetScaler之间具有一个浮动MAC地址,因此绕开GARP的问题。这可以通过System | Network | VMAC进行配置。

  下面我们就来定义一个虚拟路由器ID,例如100,并将其绑定到一个接口,这样的话VIP请求就会从该地址而来。虚拟路由器ID只是用作在VMAC中的标识符。这样做了之后,HA节点将复制这个虚拟的地址进行使用,HA节点之间使用的MAC是共享的同一个。我们可以去Network | Interfaces看VMAC面板,HA使用的虚拟MAC就在其中显示。