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. leetcode笔记(二)94. Binary Tree Inorder Traversal

    题目描述 (原题目链接) Given a binary tree, return the inorder traversal of its nodes' values. For example:Giv ...

  2. 【赛时总结】 ◇赛时·IV◇ CODE FESTIVAL 2017 Final

    ◇赛时-IV◇ CODE FESTIVAL 2017 Final □唠叨□ ①--浓浓的 Festival 气氛 ②看到这个比赛比较特别,我就看了一看--看到粉粉的界面突然开心,所以就做了一下 `(* ...

  3. Orcale(一)

    oracle数据库基本语句查询 ORacle-12560:TNS 协议配置器错误 1.服务:1.监听服务未开启 2.服务器未开启 3.环境变量:Oracle_sid = orcl 4.regedit注 ...

  4. 线程、进程、协程和GIL(三)

    上一篇文章介绍了:创建线程的两种方式.Event对象判断线程是否启动.利用信号量控制线程并发. 博客链接:线程.进程.协程和GIL(二) 这一篇来说说线程间通信的那些事儿: 一个线程向另一个线程发送数 ...

  5. 最小生成数kruskal算法和prim算法

    定义 连通图:在无向图中,若任意两个顶点vivi与vjvj都有路径相通,则称该无向图为连通图. 强连通图:在有向图中,若任意两个顶点vivi与vjvj都有路径相通,则称该有向图为强连通图. 连通网:在 ...

  6. Linux YUM (Yellowdog Updater, Modified) Commands for Package Management

    Linux YUM (Yellowdog Updater, Modified) Commands for Package Management In this article, we will lea ...

  7. TouTiao开源项目 分析笔记19 问答内容

    1.真实页面预览 1.1.成果预览 首先是问答列表 然后每个item设置点击事件,进入问答内容列表 然后每一个问答内容也设置点击事件,进入问答详情 1.2.触发事件. 在WendaArticleOne ...

  8. TouTiao开源项目 分析笔记4==>一个简单APP 整体常用框架

    1.效果预览 1.1.如下图所以,到目前为止所有的功能. 2.从InitApp开始->SplashActivity->MainActivity 2.1.InitApp源代码.这是整个项目的 ...

  9. cocos2d-x 3.0 Node与Node层级结构

    节点解释: 节点是场景图的基本元素.场景图的基本元素必须是节点对象或者是节点对象的子类. 其中主要可以看到Layer.MenuItem.Scene.Sprite.TMXTiledMap(解析and渲染 ...

  10. Android getLocationInWindow

    参考博客: http://blog.sina.com.cn/s/blog_44d19b500102vpve.html 这篇博客,我看了三遍,终于看懂了.恩,我就喜欢这样不放弃的自己. 1.getLoc ...