随着各行业信息化建设的发展,使人们对网络服务器的处理能力、高可用性提出了更高的要求。尤其是高度信息化的企业中,关键性网络服务已经成为企业生成过程中的重要环节,服务的中断意味着生产的中断,机会的丧失。
$ X% x' f7 r1 w2 y. `' y9 C" B9 n2 T( O# @: F
% f! c( w4 s+ S
负载平衡不但可以有效地解决单服务器的性能限制,而且可以实现故障的快速转移,保证服务的高可用性以及灵活的扩展性。于是,负载平衡几乎是每个网络管理员的必修课。本文章主要讲述windows2003在网络负载平衡(Network Load Balancing )方面的应用。
8 y2 a# r! Q3 A" q* D% h9 u3 W
. B) f1 j; m5 b# @0 W3 X9 h- h! m" \5 \7 ^6 g' u: c, c* k
Windows的负载平衡主要是依靠组建网络负载平衡群集来实现的,支持WEB、FTP、Proxy、VPN、Windows Media、Telnet等服务器的负载平衡。
+ C0 U, F' N! P. d- t7 O3 q
$ a0 Y8 @5 t# n- @ f/ P. m# T; J$ Q8 U; A$ G3 M5 C2 }
负载平衡的原理
, ^ f& W0 |; ?
# ]/ |3 G& i' c# |$ n- v/ Z/ Q! J' @) [0 ?3 @% v
NLB其实就是提供相同服务的一系列服务器同时监听服务请求,并允许在同一时间运行多个应用程序实例。NLB的核心是位于网络适配器驱动和网络层之间的WLBS.SYS的筛选器驱动。NLB把每个IP数据包分发到所有群集节点,并根据数据包的源地址、目标地址、传输层协议、端口、群集的配置参数以及算法做出由某个节点处理而其他节点丢弃此数据包的统一决定。
9 B9 w" G' d2 v( u4 H7 r! N3 T9 i+ Y. l; r! e% |
+ Q4 U0 E0 P6 P1 b9 s/ T7 p
负载平衡的概念
& g: _. V& k# G" [ F7 f* x, ]- A. I a3 A5 _- J
; B2 C/ ?& v7 A$ \5 T, f0 f4 ] 配置负载平衡之前,需要理解几个重点概念。
9 ?: p4 e) o9 W. R0 V' ^
8 I5 f9 F2 x9 ~$ ?. r; R5 ~7 \8 J) k& Z) w5 f8 N7 n# [! ~! u0 s2 h
群集IP 地址和子网掩码:群集的虚拟IP地址,是表现在客户面前的“外部”地址。
6 I4 T# `" u" X8 c/ Z
- `" ^' b3 a$ M1 O
9 ^7 K, G* K( z# w 专用IP 配置和子网掩码:群集各节点的本地IP地址,唯一标识群集的各节点。
# ?' W- U. y; U6 U) o/ t9 G7 _ E3 A# S& y; J* N2 u0 x- r
% Q+ C: n, x5 r: n' t+ O( ~
完整Internet名:能够访问此群集的DNS名称,比如cluster.it.com.cn。
6 Y9 O6 Z' Y! K- ?/ O
5 }" C) ^/ w |( I% b, }0 n1 A3 {. l3 {
群集操作模式:在方案的选择中详细讲述。
4 V. W1 [5 v) G8 t7 R @
8 h" W* ]5 r5 O& e; X2 P; o; z5 R! V" |- I, w# L0 c
端口规则:windows2003中新加的功能,细化了控制微粒,可以阻止某节点特定应用程序的流量,而在windows2000中这是不能实现的。
0 I) T9 w0 _- E; n' `
4 y3 r% D# ]4 b4 ~+ M; }* e' J- r! G# A
优先级(单一主机标识符):范围在1-32之间(32是一个群集的最大节点数)。此值决定如何处理没有包含在任何为群集定义的端口规则中的传入网络通讯。具有最高优先级的主机(优先值最小)将处理所有这种通讯。
" Q7 K0 _5 M- E) i8 i, I0 ]- i% U& b; ]2 u# B7 ]; [4 n
$ M8 e5 h8 }3 T
负载平衡的要求
y7 b, A8 W1 C* I+ c$ t s
9 f2 H8 t% d* y9 \# S3 h- E2 G% |' o: D
操作系统的要求 在windows2003的所有版本系统中,NLB都是可用的。群集可以兼容以前的windows服务器操作系统(比如2000,NT4.0)。
% A" B& W) Y) U/ U
& V5 M) f1 _; ]0 ?! Z7 g
, }5 z+ Z# y; J. n: H3 l# s/ ` 网络结构的要求
- w! f5 J) Z1 j8 O s6 Q& a! A, |
) t) |" |; |$ s* P- X& A) \
NLB可以在连接到FDDI(光纤分布式数据接口),以太网,吉比特以太网的服务器上运行,但不能在Token Ring(令牌环)网络上运行。
% z% K0 q4 W9 \; S
! h# [2 ~3 L5 B$ { E
6 G* _% p; t# ]6 j. Q 网卡的要求
& ]3 \$ U# B$ ^ m
7 p# a9 Y8 q- U5 c0 D: m
" E6 b% _) j+ F+ B: }* w1 u 所有的网络适配器必须在Windows2003的硬件兼容列表中。一般情况下,服务器的网卡都会符合要求。
q# O% F" P1 l# d7 j
% Z7 p) ^ B7 m [" Z( i
5 o, |: a& {$ i1 F 交换机和路由器的要求
8 I4 `& U& u, O7 O2 k. ]0 k4 s7 a
. d% c4 d) C( ~: Q& ^& J Y$ K. N! Z$ i
当计划使用VLAN来防止交换数据洪水时,必须确保交换机支持VLAN设置\;当使用多播时,部分路由器不支持把单播IP地址映射为一个多播MAC地址,需要手工设置。
/ y4 o9 z' ]2 O3 j+ I3 u9 l' Z) F
$ H& b* Y w! n4 L; f- [3 q" q
通讯协议的要求
+ C4 ~; T' h) S5 C) W. p: g
' `+ \/ x# e8 ^6 |/ h. c6 {: u* n3 h* @- J/ J1 G
绑定到群集的网络适配器只能安装TCP/IP协议,可以必须静态分配,不支持DHCP。
. g" c2 y! A5 B$ Y5 s! s
1 r9 r6 P: B# `' ^6 A
7 T8 a, u+ {6 j& u 应用程序的要求
' k; B) q `7 a6 K' V, c) h! m
/ o/ b, p6 G5 W! Q. M% y5 H
4 b$ B% G6 m k: D% c2 o1 K 首先必须是TCP或UDP通讯,而且确定当前应用程序或服务必须支持NLB。
. c, v, }) Y" P! T
% z' I, }0 B0 M6 `1 P负载平衡的设计
$ h; O% @! o, R# _2 \% ?. h* f
8 e: _$ N T* _# e! p* Q! l) l9 i# A$ E v! ~! n% r( K \' F
由于网络负载平衡不能根据CPU和内存利用率来分配流量,而且性能并不是随着节点数量的增加而线性变化的(因为随着规模的增大,由此产生的网络开销,CPU开销也随着增大),,所以正确的设计和规划负载平衡是至关重要的。
9 }0 ^9 I# L4 Y, A- j* B- T; M
" g; v, A7 i3 w/ Q* y3 m4 {
0 A5 M% g+ P" @# t5 Y7 S, d6 |7 [ 群集的实现需要群集内部的通讯(比如心跳信息和聚合通讯)以及管理和内容复制的数据传输。这部分通讯占用了网络的可用带宽。为了克服单网卡的局限性,可以使用双网卡,一个用于负载客户端的通讯,另一个用于传输内部通讯,管理和内容的数据。
0 V6 c# [1 D$ f6 y; |3 L% r8 r% B' H. r: J- Q) S) x6 G' O6 E/ D
1 J1 E S3 x: u$ o! [ 群集操作模式的选择是设计的重要一步。单播模式是指各节点的网络适配器被重新指定了一个虚拟MAC(由02-bf和群集IP地址组成确保此MAC的唯一性)。由于所有绑定群集的网络适配器的MAC都相同,所以在单网卡的情况下,各节点之间是不能通讯的,这也是推荐双网卡配置的原因之一。为了避免交换机的数据洪水,应该结合VLAN使用。
, E- f) ^- e5 |) [6 O
7 s% r8 u+ c5 J& C& T1 K3 C1 X4 G+ k3 L Q+ m3 |2 A
多播模式下,网络适配器在保留原有的MAC地址不变的同时,还分配了一个各节点共享的多播MAC地址。所以,即使单网卡的节点之间也可以正常通讯。但单网卡的带宽占用、竞争网络适配器等缺点仍然存在。
6 u0 _7 ~! U Z+ y
- H& C' i) U- i/ e
# m$ P0 B* _5 h q- ]/ q) D- L 此外,部分路由器(特别是Cisco产品)还不支持单播IP地址和多播MAC的ARP映射的自动创建,需要手工配置。IGMP多播(只有在选中多播时,才可以选择此项),在继承多播的优点之外,NLB每隔60秒发送一次IGMP信息,使多播数据包只能发送到这个正确的交换机端口,避免了交换机数据洪水的产生。
8 q! N8 S) _8 Y; T4 g2 U
\6 D/ r. s3 U$ l4 N8 n. ]
2 A6 J& ~/ d/ A% B 端口规则是windows2003的新特性。NLB提供3种筛选模式,可以针对端口规则采取禁止、多主机负载平衡和单主机的特殊处理。其中,多主机筛选模式提供了真正意义上的负载平衡,并且可以根据节点的实际处理能力进行负载量的分配。
! }/ d0 B; l3 Q: i6 F1 r
1 ^( M) A& o7 G/ e2 H. A6 @0 v3 o4 K+ O" D7 c, a
单个群集的最大节点数为32,如果还不能满足需要,可以使用Round-Robin Domain Name Service把请求映射到多个群集上(但也因此引入了单点故障DNS,除非DNS冗余)。
: J: y/ k8 f3 t
3 [4 H- h+ W; \: @$ z( y6 a
: m0 p. W' H, \, m3 `: q1 F6 _
负载平衡的安装与配置
1 H; L: S x/ k; T
2 c( `( f3 E: l5 S5 @3 s. ^
) p4 ]* }# R9 g4 v ]: {# T Windows2003引入了网络负载平衡管理器(控制面板->管理工具),使负载平衡的安装和配置更加简单。管理器可以容易的实现群集的建立、删除,节点的添加、 删除、修改以及故障的检测。
3 K9 ]9 D/ [* }/ t
; R0 ~6 J7 i: k, b9 n( G4 n
0 j3 R" [& J* j& N- y8 q0 ` D
运行网络负载平衡管理器,选择 群集 -> 新建 ,弹出“群集参数”对话框,按需要配置。如下:
3 I+ Q, K1 r; e# l6 G, b" d
3 `- K* ?5 G$ H
! V$ t5 @1 C3 c( z2 Y/ Z0 i
7 u. V6 t& f9 u 下一步,系统会提示添加附加群集IP,如果不需要可直接按“下一步”进行端口配置。以web群集配置为例,其典型端口配置如下图所示:如果会话状态不保存在该群集上,则相似性选择无,否则选择单一或者类C。
: x2 _- b7 ?8 Y. `' c# m1 M$ D9 d* M, u. V: v0 M1 j
& U D0 i9 z9 R8 R1 n5 X
之后,指定一台主机连接,并选择一个可用的网络接口,进行主机参数的设置:
, A" e. U, E, ?+ L1 v9 N. N( o; D

X ^& M% P. ]% |$ m$ B c* o
$ [& ~% f! ? ? i P/ b! j
点击“完成”,管理器会自动连接到主机上进行相关配置来创建一个新的群集。可以双击日志项目,了解NLB管理器都进行了什么配置。
& c y. x S8 `3 } i( }, E
) p2 h, v; O5 f1 u+ A) m0 z4 ~8 n) y) g
虽然,使用NLB管理器是一个微软推荐的方法,但使用NLB.EXE命令行仍然有它独特的优点:反应快,便于批处理。因此,掌握NLB命令也是快速部署的需要。
5 r" Y8 G0 W3 w. j
' Q; N* D8 x/ W' B* p; x. E3 k/ ?( i
负载平衡的安全考虑
}( S% k+ P4 A; L! r4 c6 ~1 Y, h1 o L9 e
9 Q; N: _; w2 ~; Y+ D5 V! A) e4 i 群集的远程管理特性允许管理员在远程计算机上使用NLB.EXE管理群集。但启用此功能后,会带来安全风险,比如密码泄露和DOS (拒绝服务攻击)。如果启用,请确保密码足够复杂,并且根据需要在防火墙上进行访问策略的配置(比如封锁UDP端口1717和2504)。
: _, Z& S0 j1 P- W! g- e- V* v
$ w1 e2 m& H& _% @ Z
" y/ N. a$ \6 G+ `" `8 s) p
总结
5 q! p8 l1 b R! u) {9 r8 y, m7 t, U5 G7 u& }6 C* x7 j
' Z& o7 n1 Q T7 w! x$ [* n
负载平衡负载平衡是一项综合的技术,在实施过程中往往伴随着其他技术的应用。比如网络负载平衡群集和服务器群集的结合,甚至与存储区域网络或网络附加存储相关联都是一个不错的主意。
/ C \$ K+ c0 p" X
2 q6 d. Z7 S+ |2 G( c4 H! N; k# ?$ f. m# H7 @2 D
来源:IT168