QQ在线服务: 风舞残阳风舞残阳 年满19岁年满19岁 小罗小罗 晴天晴天 心雨心雨 叮叮肉叮叮肉 小周小周 小童小童 小破孩小破孩 遥望当年遥望当年

用户导购指南

水货IBM笔记本电脑报价

行货IBM笔记本电脑报价

IBM服务器报价

IBM笔记本电脑配件报价

本周水货IBM笔记本电脑特价

IBM笔记本电脑驱动下载

水货IBM笔记本电脑验机流程

水货IBM笔记本电脑保修政策

IBM笔记本电脑FRU查询

IBM笔记本电脑常见问题

IBM笔记本电脑使用手册

笔记本电脑验机软件

论坛积分使用说明

水货IBM笔记本电脑异地购机流程

笔记本电脑购机经历及现场

贵宾申请入口

贵宾用户FTP入口

查看笔记本配置

水货APPLE苹果笔记本电脑报价

 
发新话题
打印

[linux教程] 基于DNS的多机均衡负载的实现

基于DNS的多机均衡负载的实现

基于DNS的多机均衡负载的实现-
! A( x' e4 `+ e) k  e3 R2 c( U- ?9 \4 t0 K0 ^0 Y% q/ n
前二天为一个客户添加了一台服务器。共同承担一个论坛的运作。但是。要实现负载均衡。的确是件难事。
5 v! H! ]$ T, e$ M) f# m之前有试过几个方法,* i- T3 m" y" H7 a  @! Y; f% r
一、DNS轮值。。优点:简单实现。缺点:无法检测各个服务器的负荷。难控制访客的访问地址(一般DNS服务器都有缓存,所以。效果不明显)
! j* L! w% {1 w0 n" r; B1 C7 q' R二、前台程序。。使用了一个似ZeusLoadBalancer的服务程序。在前台接受访问请求。再分流到各个实际的服务器。  z, v1 _+ ]& ]- G/ K$ i

; C6 r3 [3 B/ D, c' M, b但以上二个方法都不太适用我的情况。。
& M: b5 W8 N8 O. J  z& t* ?第一种。无法正确分配访客流量。。。常发生一台服务器的负荷很大。而另一台就很低。。。1 w' O* h8 @! q! u
第二种。会占用更多的流量。资源也占用较大。 
5 l" U. j- @+ k4 B
+ s  b" b) I! [4 c' T( s* w最好。我还是采用了一个DNS均衡负载的方法---lbname。
( ]1 p% E, L& @  H0 J5 ^它的主要效果介绍:2 W: q+ B; W, s, T! |
一、基于perl的dns服务端。应用简单。
( i% v; C4 E0 F: L二、自动检测各个服务器的负荷。然后再按结果优先分配DNS解析。
0 {, ]- s% B1 v# ~  f; W" `5 L三、DNS解析实时生效。不会被DNS服务器缓存。' q9 t4 Y: @' s' i* e: C7 i( I
四、安装方法简单。。。# m. m! t0 X9 p4 |* u
+ ?9 }8 I1 n+ s3 o2 A* ~# h
& o, ~3 a# ?9 {4 z4 L9 A8 O+ E

) l4 i3 S3 P! T- F" ]9 q) B3 E3 Clbname网页介绍
5 M8 ?6 j& |+ B  zhttp://www.stanford.edu/"schemers/docs/lbnamed/lbnamed.html
$ c' k$ X" ~0 l[color=#FFFFFF']6 s2 m, K8 c0 I  e5 h6 d" i
$ s/ R% `8 e; u# M
http://www.stanford.edu/"riepel/lbnamed/2 B# W* d8 I% {% I( _

5 p& [8 f4 T/ U" U: e% y( c$ e, J
! ?4 p) Q$ G; D* T- v" u  S* M- d" A) b' B6 O
2 J( X- s- l. n, e, C2 p4 h
下载: w( K; {+ G3 C0 R  \, A5 y( n
http://www.stanford.edu/"riepel/lbnamed/lbnamed-1.2.1.tar.gz
9 _5 c, m4 H! h  ihttp://www.stanford.edu/"schemers/dist/lb.tar% I8 ]$ e8 S- n* w1 k4 h
.
. a( z; X5 r, k/ L.
. ^- C. _9 b4 j3 O! s* t7 R: O2 l- {" B! V& B
下载包说明:
% a( x) O( p& r( Y! t& v内存数个目录0 S6 [5 g  q$ L: b/ \; W
1)lbcd的源代码。。。。lbcd是lbnamed所用到的服务器端检测服务器负荷程序。。每个需要均衡负荷的服务器都需要安装、运行它的。。。! C0 A; }' s: p7 ?! \- M
建议下载使用最新的lbcd编译包。http://www.stanford.edu/"riepel/lbnamed/lbcd-3.1.0.tar.gz  之前的常有编译错误的。(这个也有的。嘻。)$ i" W/ J3 i, e
编译这个包时。常会出错的。如何成功安装。就看你的本事了。(编辑util.c第123行。在前面加上//)
6 E1 N8 S* [0 c: U9 i6 {  编译lbcd成功后。将它复制到/usr/sbin。那你就可以运行它了。。不用加什么参数了。(运行后要停止它就是lbcd-s)
! R! u2 g& ?+ ^) f  \$ c& K* C$ o  n  n: Q: \
2)lbnamed的服务器程序perl..分有二个版本。一个是perl4.另一个是perl5.我是使用perl5的。所以用它来说明。% ]6 U2 T# \' _5 E# v
 进入perl5目录。。。。。先要配置好lbnamed和poller程序。7 l: x7 M8 Z3 [4 o
 说明一下:  p% a3 p) ~  s" l3 a! b6 W
lbnamed程序是主程序。提供dns动态解析。严格来说。它已是一个dns服务器端程序了。- `( ~3 d  I, q
poller是为lbnamed提供各个均衡服务器的负荷情况。(配合我们之前安装的lbcd程序使用): G6 H+ [9 _0 L6 m* g: x" w
但二个程序可能都需要更改,请看程序第一行的perl程序地址。。改为你的perl地址。  w& _" O4 s* v+ k
. _0 K* n9 i) k' F& A$ \
然后就需要更改程序的配置文件了。
9 ]+ s7 x; x% H! F. w! `: `% P1,lbnamed.conf 要更改的地方有几个 
# u; g. q8 b" _" Y* g1 ~: l# ^一、$hostmaster="schemers.leland.stanford.edu"; 将schemers.leland.stanford.edu改为你服务器的域名。。比如host.abc.com这个无太大关系
! k) k# {# f: I" q# y$ C, C  F- ^' I二、将所有stanford改为你域名的中段(比如bendy.com,就改为bendy),将所有edu改为域名的后缀(比如bendy.com,就改为com)。。这个很重要。。我建议不要更改best。当然你也可以改1 O) s3 q2 S8 n/ ]3 u* z8 X- k
2,sweet.config 这个文件可以是用其它文件名的,具体在lbnamed.conf有设置。我建议大家先清空这文件。再重新建立新的。  I  [# P' ?2 G2 Q, C
这个文件的配置方法是$ F) e# e. k# j3 k
负荷服务器host负重 组
$ P& O0 v7 l" @* H; E" v) m% Q比如。我自己的情况。有二台服务器。分别是bbs1.bendy.com和bendy2.bendy.com那我的配置文件就是
% a+ Z2 `  _9 @+ D. b+ @) _0 D4 f
bbs11bbs: `, Q% J0 H! p2 i
bbs22bbs: S" T6 T5 u8 H! `
& A6 J: J, I% |  j
配置好这个文件后。你需要一个能对bbs1这个域名进行解析的方法。就是修改/etc/hosts文件。我的情况就是, p& X: j6 D, ?9 E* ?1 @: S) q
192.168.1.1 bbs1
4 n4 r5 K3 Z  b. t192.168.1.2bbs2+ |0 C/ y6 |& H/ L2 J, }' R
1 R. C3 Q) x9 T9 ~8 Q3 n. z
这样的话。poller程序就会检测111.222.333.001、111.222.333.002的负荷情况了
/ E1 _$ @5 M+ \; x4 s) X4 S" P( v7 d) A+ l. C0 b9 q
至此,DNS服务器和均衡负载的服务器的程序已完成。可能我的说明不太清楚。现在我就一一列表说明% j- U4 r; ?( G9 w4 M4 D5 `

6 }* G" x' a% f$ zbbs1服务器lbserver1192.168.1.1编译运行lbcd
0 @' X/ q& |1 A$ Abbs2服务器lbserver2192.168.1.2编译运行lbcd
$ J9 X7 r) K. [/ Hdns服务器dnsserver10.0.0.1配置lbnamed在/etc/hosts配置bbs1、bbs2域名解析# G2 W" P* e' n7 l
, H( t! _$ h. \" c% ^1 C
这样的情况下。。在dns服务器运行lbnamed程序。系统就开始动作了。。lbnamed的启动参数主要是-llogfile和-d(debug)1 H6 E) i/ \! N: ^2 {0 f) F
./lbnamed-llb.log-d
0 r& `- q0 W  u8 D5 e+ `" q" y查看记录(类似)
, P0 W) I2 q" o- Jcatlb.log$ p, y6 ^( B, K' k
8 k8 d2 l+ O. c, L
-=====
8 j4 I( I" V+ [  a05/3000:5921442lbnamedstartingpoller
* p( p7 {/ v) R2 H( u( Y05/3000:5921442lbnamedload_config
( ^. n# I8 F3 Q/ zloading1452bbs2192.168.1.2bbs2 S% m/ b6 M" v! c" L9 m- j1 p
loading837bbs1192.168.1.1bbs
( d% p: d7 k4 R( w4 V05/3000:5921442lbnamedreadytoanswerrequests
1 V3 \; m: U2 F05/3000:5921442lbnameddo_maint# L( @3 }" _3 r% b' B6 S
05/3000:5921442lbnamedreloadingconfig
; v$ k0 o3 D9 S3 T. b05/3000:5921442lbnamedload_config/ R2 n1 y! e9 l6 |
loading1671bbs2192.168.1.2bbs
, o1 I9 b) t0 {) M9 oloading1086bbs1192.168.1.1bbs: S$ B; J1 U8 v, O$ o6 S8 E

; G" u4 c% {) P9 v; Y" c1 G; E
  如果你没有那些记录。看文件sweet.config.unreach这是代表poller程序无法接收到对方服务器的负荷信息。。请检查lbcd程序是否运行。。
0 p8 b" Q. Z5 }! P2 b5 C1 ]
' k+ Z1 z8 L2 w* A! O, r! [0 Q# Y( x  如果程序运行正常。那你的DNS服务器就正常运行了。
- H: E: U, H1 Y6 f# J6 j& z  如果检查程序是否正常。。。用我们的nslookup就可以了。。。  b! c6 f  I6 p; T  d0 L

9 ^& q$ Z6 U! H8 e3 v  o5 g+ ?! f# T, x4 e, f' h  `
C:\DocumentsandSettings\Administrator.XINGKONG-SERVER%26gt;nslookup
4 b! `% t; p; Q8 S: hDefaultServer:ns.guangzhou.gd.cn
; ?+ d2 l4 Y4 F7 Z( zAddress:202.96.128.143+ m' A" V' G. Z& n1 _  q

  n, e7 H( U4 N* V%26gt;server10.0.0.1//直接使用dns服务器
& T) K1 K3 a; iDefaultServer:[10.0.0.1]) y7 B# C& b' ?  V: a
Address:10.0.0.12 A. j- c+ L; y% K1 a2 p! z

# h. \/ |8 V! t7 I$ P1 y1 D%26gt;settype=all//设置查询类型7 b8 W4 _" Y# e) p5 Z! v2 n
/ B( Q8 u) f7 W2 S% L4 f
%26gt;bbs.best.bendy.com//bbs是sweet.config设置的组名,best.bendy.com是在lbnamed.conf设置的
! p, |( {$ O: \$ DServer:[10.0.0.1]
1 v& [6 h( Q# nAddress:10.0.0.1
% X' s2 _1 C- q9 H* J: s
8 f2 S8 A- _' Q4 m  A7 T" ^- Dbbs.best.bendy.comcanonicalname=bbs2.bendy.com//返回的信息。是DNS系统分配了bbs2给你这次的查询(按二台服务器返回的负荷情况来分配的,并非随便分配的)( d  x6 t9 x: [% X3 E$ t# R
bbs2.bendy.cominternetaddress=192.168.1.2//而bbs.bendy.com在该在DNS系统的A记录是192.168.1.2//最后结果bbs.best.bendy.com得到的IP地址是192.168.1.2/ s. A) I5 x) Z$ o

. l8 w  L1 [: r( t$ t) O% _- V3 o  k9 H+ H3 U6 B  O
====
; O0 \' i% D: K5 m  \自此。。服务器方面的配置已经完成。: y5 a7 |6 ^/ p* V1 ?( D6 K
跟着是我们配置具体域名的dns解析。。。
/ s' W, S. F7 N) _- G& N6 b7 {0 P! A1 }  j  P' y
方法也是很简单,以bendy.com为例,在bendy.com的DNS管理加上以下记录
! W" n' @8 w8 {5 W+ }7 K一、加上二个best.bendy.com的ns记录为ns1.bendy.com和ns2.bendy.com(也可以不止二个的.取决你有多少台服务器运行lbnamed- b( G4 @0 t* P& W# k5 b% I
二、加上第一条添加的ns记录的实际指向iP,分别指向各个运行lbnamed的服务器,比如ns1.bendy.comaddress10.0.0.1/ns2.bendy.comaddress10.0.0.2等。
: L- {. A" k* s( Q三、添加bbs1.bendy.com和bbs2.bendy.com等的实际ip地址。。。正如刚才所说...bbs.best.bendy.com只将DNS记录转移为bbs1.bendy.com或者bbs2.bendy.com。而lbnamed是没权对bbs1.bendy.com和bbs2.bendy.com进行解析的。。。所以。需要bendy.com的NAMESERER对它进行解析。
5 w6 ~$ ?/ C6 A1 C' {(ps:bbs1.bendy.com的记录并不一定要求与lbnamed程序的相同。。。)
- M& z, h$ g! M4 N$ R$ _四、最后。。添加bbs.bendy.com cnameto bbs.best.bendy.com。。。哈哈。。。大功告成。。。
+ G4 q' R0 R# f1 o$ e
6 ~9 K3 g! {! ]3 I
3 T, `* \0 L2 Q0 yDNS解析完成后,我们就完成本次任务了。。。。6 }. Z" Q5 s/ S5 C# ~
小弟的表达能力有限。如有什么不明白的地方。请到http://www.discuz.net/forumdisplay.php?fid=34%26;amp;page=1这里发表意见' H9 u' Y" o& h6 w

: V  X  x7 z& c( W+ e+ Y
3 q/ r& R; x: u" ]+ V/ ]3 x9 _3 V) T: X* [  t
Bendy
6 ]+ |  }  Z8 p5 T8 V: V原创于2004.5.30
7 }! ~3 b7 S: V& i/ q5 l$ `' ]Email%26;amp;msn:Bendy@etang.com. F. }  H, @6 q: e! h
发表于DiscuzUnix茶馆http://www.discuz.net/forumdisplay.php?fid=34%26;amp;page=1
- L& z6 g% g" s0 P( b; F+ a转载请保留版权和说明出处
(※本文搜集自:重庆未来科技 http://www.wlkj.net 重庆IBM笔记本电脑、重庆IBM水货笔记本电脑、重庆苹果笔记本电脑、重庆IBM服务器专卖)

TOP

发新话题