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设备上使用。

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

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

Citrix NetScaler HA(高可用性)解析的更多相关文章

  1. oracle HA 高可用性具体解释(之二,深入解析TAF,以及HA框架)

    oracle HA 高可用性具体解释(之中的一个,client.server端服务具体解释):http://write.blog.csdn.net/postedit 我们已经看到TAF是的Oracle ...

  2. oracle HA 高可用性具体解释(之中的一个)

    oracle HA 高可用性具体解释(之二,深入解析TAF,以及HA框架) :http://blog.csdn.net/panfelix/article/details/38436197 一.HA F ...

  3. [Citrix NetScaler] 简述

    额 就这个题目 Citrix NetScaler 是一个VPN,一个代理,一个Gateway的存在,一个Citrix的产品 首先是我们利用Citrix NetScaler的测试环境: 架构上分2种: ...

  4. hd loadBalanceServer F5 BIG-IP / Citrix NetScaler / Radware / Array / HAProxy /

    s 五.Citrix NetScaler 和 CDN 案例 问题描述: Citrix 10.5.66.9软件版本下,存在计时器bug,此bug会造成CDN长连接回源超过设备默认的180S,会发fin包 ...

  5. 利用VRID/VMAC实现更安全的netscaler HA故障切换

    利用VRID/VMAC实现更安全的netscaler HA故障切换 virtual MAC在故障切换(failover)中的作用.    在一个HA模式中,首要节点(primary node)拥有所有 ...

  6. Citrix Netscaler负载均衡算法

    Citrix Netscaler负载均衡算法 http://blog.51cto.com/caojin/1926308 众所周知,作为新一代应用交付产品的Citrix Netscaler具有业内领先的 ...

  7. Citrix Netscaler版本管理和选择

    Citrix Netscaler版本管理和选择 来源 http://blog.51cto.com/caojin/1898164 随着Citrix Netscaler的快速发展,有很多人在维护设备时经常 ...

  8. Hadoop HA高可用性架构和演进分析(转)

    1.概况 截至目前,Apache Hadoop版本分为两代,我们将第一代Hadoop称为Hadoop 1.0,第二代Hadoop称为Hadoop 2.0.前者主要有如下几种实现方式:1)社区版本基于S ...

  9. Hadoop HA 深度解析

    社区hadoop2.2.0 release版本开始支持NameNode的HA,本文将详细描述NameNode HA内部的设计与实现. 为什么要Namenode HA? 1. NameNode High ...

随机推荐

  1. [vijos p1028] 魔族密码

    描述 风之子刚走进他的考场,就……花花:当当当当~~偶是魅力女皇——花花!!^^(华丽出场,礼炮,鲜花)风之子:我呕……(杀死人的眼神)快说题目!否则……-_-###花花:……咦~~好冷~~我们现在要 ...

  2. 使用Docker 一键部署 LNMP+Redis 环境

    使用Docker 部署 LNMP+Redis 环境 Docker 简介 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linu ...

  3. Yii2 设计模式

    一. 单例模式 顾名思义, 单例模式就是只实例一次,通过一个接口去实现多处需要的同一类对象的需求. 例子: public function __construct($config = []) { Yi ...

  4. ListView Viewholder的坑 线性布局的坑

    1.ListView Viewholder的坑 /** * 默认带图片的menu adapter */ public static class MenuImageAdapter extends Bas ...

  5. powershell设置SS代理

    $env:HTTPS_PROXY="http://127.0.0.1:1080" $env:HTTP_PROXY="http://127.0.0.1:1080"

  6. 为什么i=i++后,i的值不变(深入解析)

    在Java中,运行以下代码: int i=10; i=i++; System.out.println(i); 得到的结果仍然为10,为什么呢?理论上,运算的过程不应该是i首先把10取出来,赋值给i,然 ...

  7. python学习笔记十三:Flask demo

    一.Flask简介 Flask 是一个 Python 实现的 Web 开发微框架.官网:http://flask.pocoo.org/ 二.Demo 1.代码结构 . ├── blog.py ├── ...

  8. C++文件操作(转)

    C++文件操作(转) 第一个:简单,容易理解,常用:http://www.cnblogs.com/uniqueliu/archive/2011/08/03/2126545.html 第二个:详细的,如 ...

  9. Jmeter的好搭档Badboy的安装与简单使用

    前提: Windows7  64位 Jdk 1.8 1.在官网上下载badboy并安装 网址:http://www.badboy.com.au/download/add 我下载的是最新的2.2.5这个 ...

  10. Spring整合EhCache详解

    一.EhCache介绍 EhCache 是一个纯Java的进程内缓存框架,具有快速.精干等特点,是Hibernate中默认的CacheProvider.Ehcache是一种广泛使用的开 源Java分布 ...