序言


 

在上一篇配置iis负载均衡中我们使用啦微软的ARR,我在那篇文章也中提到了网站的高可用性,但是ARR只能做请求入口的消息分发服务,这样如果我们的消息分发服务器给down掉啦,那么做再多的应用服务集群也都枉然。
这篇文章我主要针对解决这一问题来做分析,引入NLB,相对于ARR来说,ARR算是应用级别的负载均衡方案,而NLB则是服务器级别的负载均衡方案。
如果微软的这两款方案我们结合起来使用,那便是微软高可用网站方案的天作之合啦。。

 

 

Application Request Route与NLB高可用方案的演进


 

先说Application Request Route,他的具体实施方案,我已在我以前的文章中有描述,大家可以了解下,这里我配图做个简介

负载均衡协议wss 负载均衡nlb_负载均衡协议wss

ARR可以检测到你的iis应用是否可用,并对用户的请求实施负载均衡方案,根据我们配置的负载均衡算法,把用户的请求分发到应用服务器中。
但是,如果我们的ARR服务器down掉之后,我们的整个应用程序就无法使用,达不到24*7用不宕机的高可用要求。
下面配图为NLB的网路负载平衡方案

负载均衡协议wss 负载均衡nlb_IP_02

NLB可以最多可以配置32台服务器,这32台服务器通过拥有自己的独立ip之外,还共有一个虚拟IP,用户访问虚拟ip,nlb集群根据配置的负载算法来确定把用户的请求分发给那台应用服务器,如果一台NLB服务器down掉,则不会影响消息的分发可达到7*24小时不down机的高可用方案。
但是,NLB不能检测应用你的iis网站是否down掉,只能检测服务器是否down掉,这样一来,如果你的iis网站已经停止啦,nlb还给分发用户请求,那样麻烦可就来啦。
那么我们使用微软的技术怎么样做到网站的高可用呢?对,就是NLB+Application Request Route .

负载均衡协议wss 负载均衡nlb_IP_03

用户请求虚拟ip,接入nlb,nlb检测一台可用的服务器,吧请求发给arr,arr在检测可用的网站把用户请求给处理掉。叼!!叼!!叼!!!!

 

 

NLB的安装配置


打开windows服务器,进入服务器管理界面选择功能,然后添加功能。

负载均衡协议wss 负载均衡nlb_负载均衡_04

安装过之后,打开网路负载平衡器

负载均衡协议wss 负载均衡nlb_服务器_05

新建集群,首先你在你局域网中,找一个没有使用过的ip作为你集群的虚拟ip。

负载均衡协议wss 负载均衡nlb_服务器_06

设置优先级,优先级数字越小,则代表越高。

负载均衡协议wss 负载均衡nlb_负载均衡协议wss_07

添加集群ip也就是你事先检查过局域网中不存在的一个ip地址,他就是图中的虚拟ip。

负载均衡协议wss 负载均衡nlb_负载均衡协议wss_08

接下来设置群集参数

负载均衡协议wss 负载均衡nlb_IP_09

群集操作模式(Cluster operation mode)的三个选项 ,含义如下:

 

  • 单播(Unicast):在每个群集成员上,NLB覆盖网络适配器上制造商提供的 MAC 地址。NLB 对所有成员都使用相同的单播 MAC 地址。这种模式的优点是它可以无缝地与大多数路由器和交换机协同工作。缺点是到达群集的流量会扩散到交换机虚拟 LAN (VLAN) 上的所有端口,并且主机之间的通信不能通过 NLB 绑定到的适配器,也即实体主机间不可以互相通信。若我们在NLB创建时选择单播的模式,在“群集IP配置”中的“网络地址”是以“02 - BF”开头,后面紧跟IP地址的十六进制表示,该网络地址与实际主机的MAC地址相同,后续加入的主机也将修改为此MAC地址。 
  • 多播(Multicast):保留原厂 MAC 地址不变,但是向网络适配器中增加了一个第 2 层多播 MAC 地址。所有入站流量都会到达这个多播 MAC 地址。优点是这种方法可以通过在交换机的“内容可寻址存储器”(CAM) 表中创建静态项,从而使得入站流量仅到达群集中的主机。缺点是因为 CAM 项必须静态关联一组交换机端口,如果没有这些 CAM 项,入站流量仍然会扩散到交换机 VLAN 上的所有端口。还有一个缺点就是很多路由器不会自动将单播 IP 地址(群集的虚拟 IP 地址)与多播 MAC 地址关联起来。如果进行静态配置的话,一些路由器可以存在这种关联。若我们在NLB创建时选择多播的模式,在“群集IP配置”中的“网络地址”是以“03 -BF”开头,后面紧跟IP地址的十六进制表示。
  • IGMP多播(IGMP multicast):在选择多播模式时,后面还有个复选项“IGMP Multicast(IGMP多播)”,若复选此项,就像多播操作模式一样,NLB 保留原厂 MAC 地址不变,但是向网络适配器中增加了一个 IGMP 多播地址。此外,NLB 主机会发出这个组的 IGMP 加入消息。如果交换机探测到这些消息,它可以使用所需的多播地址来填充自己的 CAM 表,这样入站流量就不会扩散到 VLAN 上的所有端口。这是这种群集模式的主要优点。缺点是有一些交换机不支持 IGMP 探测。除此之外,路由器仍然支持单播IP 地址到多播 MAC 地址的转换。在IGMP多播模式下,将采用“01 – 00 - 5E”开头的MAC地址。在多播的模式下,实体主机之间可以互相通信。

 

接下来的窗口点击编辑(Edit)按钮,来添加/编辑端口规则

负载均衡协议wss 负载均衡nlb_服务器_10

设置需要集群负载的端口然后设置协议,分发形式。

负载均衡协议wss 负载均衡nlb_负载均衡协议wss_11

然后再添加一台服务器到集群中。

负载均衡协议wss 负载均衡nlb_负载均衡_12

这样就成功啦。就是如此简单。
那么回过头来我们来看下筛选模式的相关性。

  • 无:加入A,B两台服务器,请求分发是这样的:ABABABABABAB.....
  • 单一:加入A,B两台服务器,请求分发是这样的:AAAAAAAAAAAAAAAAA.....或者BBBBBBBBBBB....
  • 网络:根据IP的Class C屏蔽来决定交由哪一部服务器来处理,也就是一部服务器只会处理来自某些网段C的请求。这种方式可确保使用多重Proxy的客户端能导向到相同的服务器。
  • 单一主机:优先级别最高的一台可用服务器处理所有的用户请求。
  • 禁用此端口范围:配置的端口范围不做转发,剩余的才做。

 

 

展示下效果


 

 

负载均衡协议wss 负载均衡nlb_负载均衡协议wss_13

53服务器,访问虚拟ip176,获取到121服务器的内容。

负载均衡协议wss 负载均衡nlb_服务器_14

模拟100个用户,发送1000个请求虚拟集群ip,黄色访问的是121服务器,白色是122服务器,关联性为无。
这篇文章就到这里,其他的测试结果不一一展示,自己做下吧,体会更深刻点。