Citrix NetScaler HA(高可用性)解析
Citrix NetScaler HA(高可用性)解析
来源 https://www.iyunv.com/thread-172259-1-1.html
1.1 NetScaler高可用概述
我们知道在高可用性环境中,一般需要2台相同型号的设备来完成高可用性环境的构建。高可用性环境的构建,可以确保NetScaler不至于成为系统的单点故障,保证后端的服务能够正常的不间断的提供服务访问。在两台NetScaler设备之间构建高可用(HA)集群时,两台NetScaler设备是通过UDP进行心跳信息检测的。NetScaler高可用集群中会存在一台主节点和一台辅助节点,主节点接管着所有的访问流量并管理着NetScaler所有的共享IP地址。辅助节点负责监视主节点的健康状况,以确保主节点的服务已启动并正在运行着。如果有问题,即主节点发生故障,那么该辅助节点就会接管着所有的访问流量并接管NetScaler所有的共享IP地址,保证对于后端服务的访问不会中断。
1.2 NetScaler HA体系结构
下面是通用的NetScaler HA体系结构:
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地址的数据包。然后网关会把这个对于IP和MAC地址对应关系放入自己的ARP缓存中。
可以通过NetScaler的命令查看ARP表:
在HA环境中,尤其是在故障转移的时候,在网关ARP缓存表中的前一个MAC地址是之前NetScaler主设备的MAC地址。这可能会导致问题。要解决这个问题,新的主设备将所有的NetScaler HA拥有的IP地址(VIP,NSIPs等)发送GARP(Gratuitous ARP)广播数据包。网关将接收到这些数据包,并更新自己的ARP缓存表。
下面列出了几种情况下发送GARP的数据包的情况:
- NetScaler 启动 (for MIP andSNIP)
- 创建一个新的LB服务器
- 添加新的IP
- 设置新的VLAN
- 故障转移
需要注意的是有一些防火墙不支持GARP流量,因此,我们需要配置VMAC为部署。当使用VMAC,MAC地址是在两个节点之间共享的,因此它是不使用GARP更新MAC表。
如果主节点要是关闭或者如果它停止响应请求,辅助节点会接管所以的请求继续进行服务。在主节点和辅助节点之间使用心跳相互监视,通过每个节点的IP地址进行发送。
默认情况下,有一些端口需要打开防火墙规则以允许在高可用性设置的时候,NetScaler节点之间的通信,端口如下:
- UDP端口3003用于交换心跳的通信UP或DOWN状态
- TCP端口3008是用于安全的高可用性配置同步
- TCP端口3009用于安全命令传播和Metric Exchange Protocol(MEP)
- 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的行为。
默认配置时,主节点负责所有流量。
两个节点都有自己的NSIPs但共享大部分配置,包括VIP,SNIP和MIP。
主节点上的更改被复制到辅助节点。(默认启用)
心跳(Hello间隔时间)为200ms。
- 使用UDP数据包的端口3003。
- 失效时间为3秒。
- 当心跳包在3秒之后丢失就会发生故障转移。
故障保护默认是关闭的,开启需要在每个节点上配置。
默认情况下,通信并不加密,不走安全通道和协议:
- HA对同步发生在端口3010(TCP)。
- 安全HA对同步发生在端口3008(TCP)。
- 命令传播发生在端口3011(TCP)。
- 安全命令传播发生在端口3009(TCP)。
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,主节点会开始与辅助节点传播其信息和配置,成立了高可用性对,如下面的截图:
它也将开始同步文件,如SSL证书和应用防火、XML文件;您可以查看是同步的文件,不同的文件进程访问如下KB http://support.citrix.com/article/CTX138748 。
需要注意的是,有几个项目的同步是很重要的,而这些都是许可和ns.conf、rc.conf中的文件。你可以使用命令验证SSL同步情况,使用CLI命令:
因为它是建立HA对,所做到主节点的操作和配置更改都将传播到辅助节点。
我们可以看到从GUI或使用下面的命令查看HA的节点:
在命令行显示出现的信息中,如果该节点的接口的活动的,说明该节点是主(活动)节点。
我们也可以使用故障切换界面进行查看;如果我们NetScaler有多个网络接口连接在了不同的交换机,就可以用它们来故障转移到另一个接口。
例如,如果我们的NetScaler采用两个接口,其中接口1连接交换机1,接口2连接到交换机2,我们可以使用故障切换接口设置故障转移从NIC1到NIC 2,举个例子,交换机1关机。在一个大环境中,往往有跨越多个交换机的自动转移隧道自动处理。
在GUI中,我们可以在每个节点上单击鼠标右键,并配置如同步或强制故障转移。强制故障切换可以让我们进行手动故障转移,这个一般在我们需要升级的时候进行手动故障切换。
默认情况下,当主节点出现故障,辅助节点将接管并自动成为主节点;当主主节点重新联机,原来的主节点就会降级为辅助节点。如果在一个环境中,我们的HA同步状态出现问题,辅助节点本身并没有同步到新更改的信息,那么在这个时候,我们要进行升级,为了保险起见,我们可以在升级辅助节点的时候,设置辅助节点为STAYSECONDARY状态,即强制NetScaler设备留在辅助节点模式。这将保证主节点在审计重启之后还将保持为主节点,辅助节点还是辅助节点。
如果您在使用HA功能的时候出现了一些问题,我们可以使用nsconmsg功能。通过运行命令nsconmsg –d event,我们可以得到一些控制台中发生的事件信息。
默认情况下,NetScaler使用Gratuitous ARP(GARP)在发生故障转移后公布新的主节点的MAC地址。一些厂商如思科和一些老的防火墙厂商如瞻博网络不接受GARP请求数据包的类型。所以,如果您的环境中有不支持GARP的网络设备存在,且NetScaler的数据包需要通过该网络设备,那么就需要使用VMAC。关于GARP,通过登录到NetScaler的CLI和运行命令set network L2 param –garpReply enabled。这个命令需要在设置了一对高可用性组的NetScaler设备上使用。
![](https://images2018.cnblogs.com/blog/825468/201806/825468-20180604152431905-1878781446.png)
如果我们的防火墙或路由器不支持GARP,我们可以配置NetScaler使用VMAC。 VMAC允许的NetScaler之间具有一个浮动MAC地址,因此绕开GARP的问题。这可以通过System | Network | VMAC进行配置。
下面我们就来定义一个虚拟路由器ID,例如100,并将其绑定到一个接口,这样的话VIP请求就会从该地址而来。虚拟路由器ID只是用作在VMAC中的标识符。这样做了之后,HA节点将复制这个虚拟的地址进行使用,HA节点之间使用的MAC是共享的同一个。我们可以去Network | Interfaces看VMAC面板,HA使用的虚拟MAC就在其中显示。