NetScaler Active-Active模式

NetScaler Active-Active模式

(此文档基于版本:NS9.3: Build 55.6 nc)

By ShingTan

Active-Active部署,除了减少downtime,最重要的是可以使所有NetScaler都发挥最大作用。在Active-Active部署模式中,所有的NetScaler设备上配置有相同的VIP与不同的权重值,因此一个特定的VIP在某一时刻只能有效活跃在一台设备上。

(注意:Active-Active这个特性只在NetScaler nCore版本中支持。)

这个有效的活跃VIP叫做master VIP,而相应的在其它NetScaler设备上的VIP叫做backup VIP。如果master VIP失效,拥有最高权重的backup VIP将接管并成为master VIP。所有在Active-Active部署模式中的NetScaler设备使用虚拟路由冗余协议(VRRP)定期广播它们的VIP与相应的权重值。

NetScaler设备在Active-Active模式下是可以独立配置的,因此没有NetScaler是空闲的。在这个模式下,不同的VIP集分别活跃在一台NetScaler上。例如,下图中,VIP1、VIP2、VIP3和VIP4都配置在设备NS1、NS2和NS3上。基于它们的权重,VIP1和VIP2活跃在NS1上,VIP3活跃在NS2上,而VIP4活跃在NS3上。如果,NS1失效,VIP1在NS3而VIP2在NS2上变为活跃的。

Active-Active拓扑图

上图中的NetScaler设备处理流量的过程如下:

  1. Client C1发送一个请求到VIP1。请求到达R1。
  2. R1没有关于VIP1的ARP条目,因此它针对VIP1广播一个ARP解析请求。
  3. VIP1在NS1上是活跃的,因此NS1回应有关VIP1的ARP解析请求,以VMAC1作为源MAC地址,VIP1作为源IP地址。
  4. SW1从ARP的响应包里学习到与VIP1相连的端口,并更新它的bridge table。
  5. R1更新有关VMAC1与VIP1的ARP条目。
  6. R1转发数据包到NS1上的VIP1。
  7. NS1上的负载均衡算法选择了S2,NS1使用它的SNIP或MIP与S2建立连接。
  8. S2响应NetScaler的SNIP或者MIP。
  9. NS1发送S2的响应到client。在这个响应包里,NS1插入VMAC地址作为源MAC地址,VIP1作为源IP地址。
  10. 若NS1失效,NetScaler设备使用VRRP协议选择具有最高权重值的VIP1。在这种情况下,VIP1在NS3上被激活,而以下2步将更新active-active配置。
  11. NS3广播VIP1的GARP信息。在这个信息里,VMAC1作为源MAC地址而VIP1作为源IP地址。
  12. SW1从GARP广播里学到VMAC1的新连接端口,更新它的bridge table,并发送后续的client请求到NS3上的VIP1。R1更新它的ARP表。

VIP的权重可以被health tracking修改。如果你启用health tracking,你必须确保preemption也被启用,因此,如果一个VIP的权重值较低,将被另一个VIP抢占成功。

在某些情况下,流量可能到达backup VIP。为了避免丢弃这类流量,在你创建一个active-active结构时可在每节点上启用sharing。或者你可以在全局中启用send to master选项。在一个节点中,如果sharing被启用,它将优先于send to master。

Health Tracking

基础权重值BP(范围1~255)通常决定了哪个VIP是master VIP,有效权重值EP也可以影响这个决策。

例如,如果在NS1上的一个VIP拥有一个101的权重值,而在NS2上相同的VIP拥有一个99的权重值,在NS1上的VIP是活跃的。然而,如果在NS1上有2个VS使用这个VIP,而它们中某一个VS变为DOWN,health tracking将减小NS1上VIP的EP。然后,VRRP将选择NS2上的VIP为有效VIP。

以下是health tracking修改EP的选项:

l  NONE. No tracking. EP = BP

l  ALL. If all virtual servers are UP, then EP = BP. Otherwise, EP = 0.

l  ONE. If at least one virtual server is UP, then EP = BP. Otherwise, EP = 0.

l  PROGRESSIVE. If ALL virtual servers are UP, then EP = BP. If ALL virtual servers are DOWN then EP = 0. Otherwise EP = BP (1 - K/N), where N is the total number of virtual servers associated with the VIP and K is the number of virtual servers that are down.

注意:如果你指定了除NONE以外的值,preemption一定要启用,由此,在master VIP降级期间,具有最高权重值的backup VIP才能抢占为活跃的。

Preemption

抢占模式默认是启用的,而通常情况下也应该启用。当然,在某些情况下,你也可能想disable它。Preemption是每VIP每节点设置的。

Preemption可能在以下情况下发生:

l  An active VIP goes down and a VIP with a lower priority takes its place. If the VIP with the higher priority comes back online, it preempts the currently active VIP.

l  Health tracking causes the priority of a backup VIP to become higher than that of the active VIP. The backup VIP then preempts the active VIP.

Sharing

如果流量到达backup VIP,流量将被丢弃,除非sharing选项在backup VIP上被启用。这个动作是每VIP每节点配置的,缺省是disabled。

在Active-Active拓扑图中,VIP1在NS1上活跃,VIP1在NS2和NS3上是backup的。在某些特定情况下,流量可能到达NS2的VIP1。如果在NS2上启用sharing,流量将被处理而不是被丢弃。

Configuring Active-Active Mode

部署active-active模式,在每台NetScaler设备上,你必须添加一个VMAC并且绑定VMAC到某个VIP。每台设备上给定的VIP都有相同的VMAC。例如,如果在设备上创建一个VIP 192.168.0.79,则一个virtual router ID也必须在每台NetScaler上创建并绑定到VIP 192.168.0.79上。当你把VMAC绑定到VIP,NetScaler将发送VRRP广播到每个绑定VIP的VLAN。VMAC可以被一台NetScaler上的不同VIP共享。

现在我们简单的搭建一个测试环境,参考下图:

添加VMAC

在active-active结构中添加VMAC,先要创建一个virtual router ID。再绑定VMAC到VIP,你需要把VMAC的vrID与VIP关联。

NS命令行下添加VMAC

在NetScaler命令行模式下,输入:

add vrID <value> -priority <value> -preemption (ENABLED|DISABLED) -sharing (ENABLED |DISABLED) -tracking (NONE|ONE|ALL|PROGRESSIVE)

例如:

add vrID 71 -priority 73 -sharing ENABLED -tracking ONE

注:命令行下,preemption缺省是启用的,但GUI界面缺省是未选中。

VMAC参数

vrID

The VRID that identifies the VMAC. Possible values: 1 - 255.

priority

The base priority of the VMAC. Range: 1 - 255. Default: 255.

tracking

The health tracking options for this VMAC. Possible values: NONE, ONE, ALL, PROGRESSIVE Default: NONE.

preemption

Make a backup VIP the master if its priority becomes higher than that of a master VIP that is bound to this VMAC. Possible values: ENABLED, DISABLED. Default: ENABLED.

sharing

Enable or disable sharing for this VMAC. Default: Disabled.

GUI下添加VMAC

在NS1上添加VMAC,

在NS2上添加VMAC,

NS命令行下绑定VMAC

在NS命令行下,输入:

set ns ip VIP <address> -vrid <value>

例如:

set ns ip 192.168.0.79 -vrid 71

GUI下绑定VMACVIP

在NS1上把vrID 71绑定到VIP 192.168.0.79,

在NS2上同样的把vrID 71绑定到VIP 192.168.0.79,

在关联vrID与VIP后,重新回到VMAC配置界面,我们可以看到:

在NS1上,

vrID 71为master,vrID 73为backup,与拓扑相符。

在NS2上,

vrID 71为backup,vrID 73为master,与拓扑相符。

配置Send to Master

通常,目的IP为VIP的流量到达有效VIP所在的NetScaler设备,因为VIP回应ARP解析请求,同时该设备的VMAC返回到上行的路由器。但是在某些情况下,如在上行路由器上配置了针对VIP子网的静态路由,而某个拓扑结构阻断了这个路由,流量可能会到达backup VIP所在的NetScaler设备。如果你想这台backup VIP设备转发数据包到master VIP设备,你需要启用send to master选项。这是单节点配置,缺省是disabled。

例如,在下图中,VIP1在NS1、NS2和NS3都有配置,在NS1上是活跃的。在某些情况下,VIP1的流量(NS1上有效)可能到达NS3上的VIP1。当NS3上的send to master选项被启用,NS3使用到NS1的路由条目通过NS2转发流量到NS1上(此为原文翻译,为何是通过NS2转发流量,而不是通过下行交换网络转发流量?)。

Active-Active模式下启用send to master

NS命令行下启用send to master

在NS命令行下,输入:

set vrIDParam -sendToMaster (ENABLED|DISABLED)

例如:

set vrIDParam -sendToMaster ENABLED

send to master参数

sendToMaster

Forward the packet to the master node if the VIP bound to the VMAC is in backup state and sharing is disabled.

Possible values: ENABLED, DISABLED. Default: DISABLED.

GUI下启用send to master

NetScaler Active-Active模式的更多相关文章

  1. 敏捷软件开发(3)---COMMAND 模式 & Active Object 模式

    COMMAND 模式 command模式非常简单,简单到你无法想象的地方. public interface Command { void execute(); } 这就是一个command模式的样子 ...

  2. Android开源库--ActiveAndroid(active record模式的ORM数据库框架)

    Github地址:https://github.com/pardom/ActiveAndroid 前言 我一般在Android开发中,几乎用不到SQLlite,因为一些小数据就直接使用Preferen ...

  3. Java多线程编程模式实战指南:Active Object模式(下)

    Active Object模式的评价与实现考量 Active Object模式通过将方法的调用与执行分离,实现了异步编程.有利于提高并发性,从而提高系统的吞吐率. Active Object模式还有个 ...

  4. Java多线程编程模式实战指南:Active Object模式(上)

    Active Object模式简介 Active Object模式是一种异步编程模式.它通过对方法的调用与方法的执行进行解耦来提高并发性.若以任务的概念来说,Active Object模式的核心则是它 ...

  5. java Active Object模式(下)

    Active Object模式的评价与实现考量 Active Object模式通过将方法的调用与执行分离,实现了异步编程.有利于提高并发性,从而提高系统的吞吐率. Active Object模式还有个 ...

  6. java Active Object模式(上)

    Active Object模式简介 Active Object模式是一种异步编程模式.它通过对方法的调用与方法的执行进行解耦来提高并发性.若以任务的概念来说,Active Object模式的核心则是它 ...

  7. Java多线程编程模式实战指南一:Active Object模式(下)

    Active Object模式的评价与实现考量 Active Object模式通过将方法的调用与执行分离,实现了异步编程.有利于提高并发性,从而提高系统的吞吐率. Active Object模式还有个 ...

  8. Java多线程编程模式实战指南一:Active Object模式(上)

    Active Object模式简介 Active Object模式是一种异步编程模式.它通过对方法的调用与方法的执行进行解耦来提高并发性.若以任务的概念来说,Active Object模式的核心则是它 ...

  9. Java多线程编程模式实战指南(一):Active Object模式--转载

    本文由黄文海首次发布在infoq中文站上:http://www.infoq.com/cn/articles/Java-multithreaded-programming-mode-active-obj ...

  10. Zabbix Agent active主动模式监控

    zabbix_server端当主机数量过多的时候,由Server端去收集数据,Zabbix会出现严重的性能问题,主要表现如下: 1.当被监控端到达一个量级的时候,Web操作很卡,容易出现502 2.图 ...

随机推荐

  1. java基础必备单词讲解 day three

    if 如果 else 否则 switch 切换判断 case 实例 break 退出 return 返回 default 默认 variable array 数组 null 空的 无效的 pointe ...

  2. MFC项目依赖 BCG框架示例

    1.创建一个简单的MFC工程: 2.将BCG框架项目导入到新建的mfc解决方案中,例如将BCGCBPro\BCGCBPRO140.vcxproj添加到解决方案. 3.修改mfc项目属性,包含BCG框架 ...

  3. PHP:(一)安装并使用PHP

    php的安装分为两个部分:环境安装配置和开发工具 一.集成环境安装配置 (一)安装 选择:wampserver或者xampp 我采用的是xampp. 在http://www.sourceforce.n ...

  4. js动画之无缝滚动

    效果图如下: HTML代码如下: <!DOCTYPE html> <html lang="en"> <head> <meta charse ...

  5. Linux crontab 实现秒级定时任务

    1   crontab 的延时: 原理:通过延时方法 sleep N  来实现每N秒执行. crontab -e 输入以下语句,然后 :wq 保存退出. * * * * * /usr/bin/curl ...

  6. Hive学习路线图

  7. JDK学习---深入理解java中的HashMap、HashSet底层实现

    本文参考资料: 1.<大话数据结构> 2.http://www.cnblogs.com/dassmeta/p/5338955.html 3.http://www.cnblogs.com/d ...

  8. PAT (Basic Level) Practice 1021 个位数统计

    个人练习 给定一个 k 位整数 N=d​k−1​​10​k−1​​+⋯+d​1​​10​1​​+d​0​​ (0≤d​i​​≤9, i=0,⋯,k−1, d​k−1​​>0),请编写程序统计每种 ...

  9. BZOJ 1441: Min(裴蜀定理)

    BZOJ 1441:Min Description 给出n个数(A1...An)现求一组整数序列(X1...Xn)使得S=A1*X1+...An*Xn>0,且S的值最小 Input 第一行给出数 ...

  10. 牛客暑假多校第一场J-Different Integers

    一.题目描述: 链接:https://www.nowcoder.com/acm/contest/139/JGiven a sequence of integers a1, a2, ..., an an ...