目前比较常用的负载均衡技术
目前比较常用的负载均衡技术主要有:
1. 基于DNS的负载均衡
通过DNS服务中的随机名字解析来实现负载均衡,在DNS服务器中,可以为多个不同的地址配置同一个名字,而最终查询这个名字的
客户机将在解析这个名字时得到其中一个地址。因此,对于同一个名字,不同的客户机会得到不同的地址,他们也就访问不同地址
上的Web服务器,从而达到负载均衡的目的。
2. 反向代理负载均衡 (如Apache+JK2+Tomcat这种组合)
使用代理服务器可以将请求转发给内部的Web服务器,让代理服务器将请求均匀地转发给多台内部Web服务器之一上,从而达到负载
均衡的目的。这种代理方式与普通的代理方式有所不同,标准代理方式是客户使用代理访问多个外部Web服务器,而这种代理方式
是多个客户使用它访问内部Web服务器,因此也被称为反向代理模式。
3. 基于NAT(Network Address Translation)的负载均衡技术 (如Linux Virtual Server,简称LVS)网络地址转换为在内部地址和外部地址之间进行转换,以便具备内部地址的计算机能访问外部网络,而当外部网络中的计算机访问
地址转换网关拥有的某一外部地址时,地址转换网关能将其转发到一个映射的内部地址上。因此如果地址转换网关能将每个连接均匀转换为不同的内部服务器地址,此后外部网络中的计算机就各自与自己转换得到的地址上服务器进行通信,从而达到负载分担的目的。
(5)
Apache,Tomcat负载均衡和集群:
1.
对请求的处理又有两种不同的方式:负载平衡、状态复制(即集群).
负载平衡:
每台服务器都是独立的,只是对请求的负载进行平衡,而不对状态(SESSION)进行复制。
状态复制(集群):先进行负载平衡,再在各服务器间复制应用状态。
2.
apache负载均衡的原理:
1).
mod_jk负载平衡原理:
使用mod_jk默认的以轮循方式进行平衡负载,假设有四个服务器节点,有10个请求,则
第一个节点会得到1,5,9请求;
第二个节点会得到2,6,10请求;
第三个节点会得到3,7请求;
第四个节点会得到4,8请求;
2).
Mod_JK2负载均衡与故障复原:
Apache httpd是当成web服务器,使用mod_jk2将请求传送给Tomcat,就可以使用mod_jk2的负载均衡与容错功能。
带有 mod_jk2的Apache(httpd)可以做的事情包括:
A、将请求分配至一或多个Tomcat实例上你可以在mod_jk2的workers.properties文件中,设定许多Tomcat实例,并赋于每个实例一个lb_factor值,以作为请求分配的加权因子。
B、侦测Tomcat实例是否失败当Tomcat实例的连接器服务不再响应时,mod_jk2会及时侦测到,并停止将请求送给它。其他的Tomcat 实例则会接受失效实例的负载。
C、侦测Tomcat实例在失效后的何时恢复因连接器服务失效,而停止将请求分配给Tomcat实例之后,mod_jk2会周期性地检查是否已恢复使用性,并自动将其加入现行的Tomcat实例池中。
3).
实践证明,在各应用服务器之间不需要状态复制的情况下,负载平衡可以达到性能的线性增长及更高的并发需求。
3 集群原理:
集群方式也是使用这种方法进行平衡。Tomcat中的集群原理是通过组播的方式进行节点的查找并使用TCP连接进行会话的复制。
集群与负载均衡的优缺点:
不足:
集群不同于负载平衡的是,由于集群服务需要在处理请求之间不断地进行会话复制,复制后的会话将会慢慢变得庞大,因此它的资
源占用率是非常高的,如果在并发量大的应用中,复制的会话大小会变得相当大,而使用的总内存更是会迅速升高。
优点:
但集群的会话复制,增加了系统的高可用性。由于在每台服务器都保存有用户的Session信息,如果服务器群中某台当机,应用可以自动切换到其它服务器上继续运行,而用户的信息不会丢失,这提高了应用的冗错性。
具体采用负载平衡还是集群,这要看应用的需求了。
http://www.51testing.com/?uid-423595-action-viewspace-itemid-250255