[每周讨论专题]--第九期--Apache的负载均衡

apache好像是通过进程管理来实现资源分配和进程调度的,另:谁有apache的系统资源(struct pool)管理这一快的设计说明啊
我提供一个非技术解决方案, 也就是说是一个产品解决方案,使用BIGIP设备来解决,是目前我见过的的最好的方案
  
所谓负载均衡技术(不是集群技术),一般来说有两方面的含义:首先,大量的访问或数据流量分担到多台设备上分别处理;其次,单个重负载的运算分担到多台节点设备上做并行处理,每个节点设备处理结束后,将结果汇总,返回给用户。

BIGIP设备是一个7层交换机,所谓7层/多层交换机的概念相信大家都很熟悉了,我就不废话。
首先,假设某网站,domian name 是www.test.com BIGIP设备上 分为2个网段,分别是 WAN和LAN。
WAN接口上有一个IP地址,216.34.94.17 ,打开了80服务。 所有的DNS都把www.test.com解析为该地址,使得所有的访问都到达该BIGIP设备。
然后,该设备将会把所有流量转发给后台服务器,后台服务器可以是不同的IP和端口。
可以从下图中看到,客户端所发出数据包的目标IP地址和port被更改了。

下图描述了一个负载平衡发生的流程:



   
A. 客户发出服务请求到BIGIP
B. BIGIP接收到请求,将数据包中目的IP地址改为选中的后台服务器IP地址,然后将数据包发出到后台选定的服务器
C. 后台服务器收到后,将应答包按照其路由发回到BIGIP
D. BIGIP收到应答包后将其中的源地址改回成BIGIP的地址,发回客户端,由此就完成了一个标准的服务器负载平衡的流程。

另外一种能够,当某一个大的计算任务到达bigip,bigip将会把这个大的任务拆散成为若干个小的任务,分别传送到不同的后台服务器上,服务器计算完毕后,结果传送回bigip,bigip把结果组合起来,再传送回客户端。
    BIGIP提供多种方法将数据流有效地转发到它所连接的服务器群。而面对用户,只是一台虚拟服务器。用户此时只须记住一台服务器,即bigip的地址,但他们的数据流却被BIGIP灵活地均衡到所有的服务器。
    有的时候,公司的网络开始卖了2台服务器,后来又增加2台,这样后台的所有服务器中,其性能可能不一样。 比如一台是2颗CPU,另一台是4颗CPU,
这个时候,可以在BIGIP上定义送给后台服务器上的比例,如 按照1:1:2:4 的比例对流量负载均衡。
    除了这中分配流量的方法,这破盒子还能够提供一共12种流量分配方案,比如,按照最少连接数,按照最快响应时间,按照自定义优先级别,等等。


如果后台服务器挂了怎么办?
bigip可以提供对服务器的监控和检查

    BIGIP可以对服务器进行ping检查,如果在设定的时间内能收到该地址的ICMP的回应,则认为该服务器已经死机,则将不会再把流量分配给该服务器。
    但是有的时候,会有这样的情况:服务器没有问题,但是上面运行的服务进程挂了,BIGIP可以定期的通过TCP包对后台服务器的服务端口进行检测,例如80端口,如果80端口没有回应,则认为服务器死机,不再把流量分流到该服务器上,把流量导向其他服务器。
    此外,更牛B的是,bigip可以提供API接口。  请问一个多层交换机要API接口做什么??????????  
    答案很简单,当然是提供2次开发咯。。。。例如,bigip检查某台服务器是正常的,但是又进一步检查到该服务器上的apache 服务也就是80端口 挂掉了,它可以telnet到服务器上,执行 /etc/rc.d/init.d/httpd restart ,也就是重新启动该服务。 汗一个先。。。。。。。


最后,BIGIP自己挂了怎么办?  简单,这东西可以做热备,跟Cisco的HSRP一个德行。
实际上,我觉得这设备可以做任何应用层服务的负载均衡。。。。
   另外请各位大虾指点一下,小弟我最近在研究LDAP+SAMBA+NIS+Linux做成windows域里面的DC域控制器,目前已经能成功的作为文件服务器了,但是作为域控制器的时候,windows客户机已经能够找到我做的服务器,并且弹出输入密码的对话框,但是我输入用户名密码后,总是告诉我说验证失败,那位老大能帮我指点指点啊 ? 我的MSN是 Moon_Yagami@126.com
好了,说完了, 不是做广告啊,诸位大虾板砖向我头上丢来把……
直接用dns,省时省力
关于DNS的哪有零起点的文章?
DNS论询应该比较简单就是把一个域名对应几个A记录
比如:

[Copy to clipboard] [ - ]
CODE:
www.abc.com       IN           A            192.168.0.2
www.abc.com       IN           A            192.168.0.3
www.abc.com       IN           A            192.168.0.4

你ping一下就知道了!我写了一个shell测试,分配还是比较平均的。对于web服务器死掉也应该可以通过shell检测,并把死掉机器的A记录从DNS里注释掉!


QUOTE:
原帖由 mageguoshi 于 2006-3-18 20:36 发表
DNS论询应该比较简单就是把一个域名对应几个A记录
比如:
[code]

www.abc.com       IN           A            192.168.0.2
www.abc.com       IN           A            192.168.0.3
www.abc.com       ...

目前较新版本的bind不推荐这样写


QUOTE:
原帖由 HonestQiao 于 2005-12-27 11:30 发表
每周讨论专题【第九期】.......................................................[url=http://bbs.chinaunix.net/forum ...

使用硬件设备(比如网关设备)是不是也可以作负载均衡呢?


QUOTE:
原帖由 qmailer 于 2006-3-20 14:27 发表

使用硬件设备(比如网关设备)是不是也可以作负载均衡呢?

我说这个就是啊!
还可以硬件-软件结合使用,效果会更好一些!
讨论的应该是apache自身的负载均衡,都扯哪去了?