日期:2014-05-16  浏览次数:20885 次

apache与tomcat及整合实现负载均衡及集群(转)
http://www.51testing.com/?uid-423595-action-viewspace-itemid-250255

apache与tomcat的区别:
Apache是一个web服务器环境程序,可以作为web服务器使用。不过只支持静态网页,如(asp,php,cgi,jsp)等动态网页的就显得无能为力。
如果想让服务器也能处理动态页面,那么就需要Tomcat。

当处理静态页面时,Tomcat不如Apache迅速。Tomcat不象Apache一样可配置(如:可以作为一个代理服务器,即loadbalaner)。

Tomcat不象Apache一样强壮。

基于以上原因,一个现实的网站使用一个Apache作为Web服务器,为网站的静态页面请求提供服务;并使用Tomcat服务器作为一个Servlet/JSP插件,显示网站的动态页面。

apache+tomcat是企业级的应用 !  ---->采用apache+tomcat结合应用 !
1.Apache主要用来解析静态文本,如html,tomcat也有此功能,但apache能大大提高效率,对于并发数较大的企业级应用,能更好的显示apache的高效率;
2.Tomcat 用来解析jsp,servlet等,所有的客户请求首先会发送到apache,如果请求是静态文本则由apache解析,并把结果返回给 客户端,如果是动态的请求,如jsp,apache会把解析工作交给tomcat,由tomcat进行解析(这首先要两者现实整合),tomcat解析完 成后,结果仍是通过apache返回给客户端,这样就可以达到分工合作,实现负载均衡,提高系统的性能!


(2)
用apache实现html和jsp文件分离访问:

apache在处理静态页面及资源文件(图片,CSS文件)的优势-->作为图片服务器,将动态页面请求由apache转发到应用服务器tomcat缓解了大并发量下,应用服务器的压力。

默认是不需要配置的,也就是说你把需要给tomcat处理的后缀在配置文件(httpd.conf)中写好,那么剩下的就都是apache处理的了。
将要默认处理的html文件放于apache默认的发布目录下即可。

apache所有的配置,都在httpd.conf中。
配置端口:
Listen 80

DocumentRoot:

应该是定义这个服务器对外发布的超文本文档存放的路径, --》可以修改为任何其它路径。
DocumentRoot "F:/loadBalance/apache/Apache2/htdocs"
也可以自定义虚拟容器。如下面第3点。


(3)
自定义apache的发布目录:

通过修改Apache的配置文件%APACHE2_HOME%/conf/httpd.conf可以定置自己的Apache服务器。注意修改该配置文件前要先停止正

在运行的Apache服务器。

在相应位置增加以下行可以定义自己的文件系统容器,设置自己的本地文件系统到网络空间的映射:

Alias /homepage "D:/heavyz/homepage"
<Directory "D:/heavyz/homepage">
Options Indexes FollowSymLinks -ExecCGI
DirectoryIndex index.php index.html home/index.php home/index.html
Order allow,deny
Allow from all
Deny from enpc.fr
</Directory>

分析:
以上语句通过<Directory>标签定义了一个文件系统容器,并使用Alias指令把该容器映射到/homepage的URL上去。通过这里的设置,不会影响原来的DocumentRoot,或其它的已自定义的文件系统容器。

在该文件系统容器中还定义了一系列属性。对上述配置的解释如下:

* <Directory "D:/heavyz/homepage"> and </Directory> : 定义本地文件系统容器,该容器位于D:/heavyz/homepage中。
* Alias /homepage "D:/heavyz/homepage" : 当URL中的路径名为/homepage时,将映射到该文件系统容器中。
* Options Indexes FollowSymLinks -ExecCGI : 当搜索不到默认首页时,允许列出目录的内容;允许目录中的符号链;不允许执行CGI脚本。
* DirectoryIndex index.php index.html home/index.php home/index.html : 按照列出的四个本地URL搜索默认首页,最先找到的文件作为首页返回。(即若URL:http://localhost/homepage,则会先搜索默认首页,若查不到相应的默认首面,则根据第二点配置,显示homepage当前目录的文件列表)
* Order allow,deny : Order规定了HTTP客户的访问权限。先允许再禁止(allow,deny)表明allow中允许的访问权限优先级低于deny中禁止的访问权限。
* Allow from all : 先允许来自任何地方的HTTP客户的访问请求。
* Deny from enpc.fr : 再禁止域名为enpc.fr的HTTP客户的访问请求(国立路桥学校ENPC的主机不允许访问该页面),对于这些客户,服务器返回403 Forbidden信息。注意Order中定义了deny的优先级高于allow,故该指令将生效。

假设在本地文件系统上存在文件D:\heavyz\homepage\index.html,重新启动Apache服务器,并访问页面:http://localhost/homepage将可以访问到上述文件(前提是你不在ENPC的网络内)。
---------------------------------

(4)

目前比较常用的负载均衡技术主要有:

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负载平衡原理:
使用