3 负载均衡
在负载均衡的思路下,多台服务器为对等方式,每台服务器都具有同等的地位,可以单独对外提供服务而无须其他服务器的辅助。通过负载分担技术,将外部发送来的请求按一定规则分配到对称结构中的某一台服务器上,而接收到请求的服务器都独立回应客户机的请求。
提供服务的一组服务器组成了一个应用服务器集群(cluster),集群下的对等多机环境可以增加系统的并发处理能力,和单台机器出现故障系统的错误冗余能力;同时实现了负载均衡和系统高可靠性。 四种实现负载均衡的方式:
第一是通过DNS,但只能实现简单的轮流分配,不能处理故障;
第二如果是基于MS IIS,Windows 2003 server本身就带了负载均衡服务; 第三是硬件方式,通过交换机的功能或专门的负载均衡设备可以实现; 第四种是软件方式,通过一台负载均衡服务器进行,上面安装软件。使用Apache Httpd Server做负载平衡器。
客户系统一般采用Apache httpd作为web服务器,即作为Tomcat的前端处理器,根据具体情况而定,有些情况下是不需要Apache httpd作为 web 服务器的,如系统展现没有静态页面那就不需要Apache httpd,那时可以直接使用Tomcat作为web 服务器来使用。使用Apache httpd主要是它在处理静态页面方面的能力比Tomcat强多了。
3.1.1 配置负载均衡器
在apache下配置负载均衡器分为三步,注意每次修改httpd.conf和workers2.properties时不要忘了重新启动apache。 第一步,安装和调试apache
负载均衡器jk2模块是apache www 服务的插件,所以配置负载均衡器就得先安装apache。假设客户下载的是windows版本 2.0.43,执行setup.exe并回答一些简单问题就可完成apache的任务。值得注意的是,安装并启动apache后如果apache对http://localhost/ 地址没反应,你得修改apache安装路径下htdocs目录下的index.html.xx文件,比如把index.html.en改成index.html。 第二步,安装jk2
把下载到的 mod_jk2-2.0.43.dll改成mod_jk2.dll 放到apache的modules目录下,修改apache的httpd.conf,即在LoadModule foo_module modules/mod_foo.so 行下插入mod_jk2模块的装载信息[LD7] :
[html] view plaincopy # Example:
# LoadModule foo_module modules/mod_foo.so #
LoadModule jk2_module modules/mod_jk2.dll 第三步,配置jk2
jk2的配置全在一个配置文件中,文件名为workers2.properties,和apache 的httpd.conf放在同一个目录下。以下是这个文件的内容: [html] view plaincopy
#++++++++++++++++++++++++++++++++++++
# only at beginnin. In production uncomment it out [logger.apache2] level=DEBUG
#shm必须配 [shm]
file=D:\\Program Files\\Apache Group\\Apache2\\logs\\shm.file
size=1048576
# 第一个tomcat 的地址
# Example socket channel, override port and host.
[channel.socket:tomcat1]
port=11009
host=127.0.0.1
# 定义第一个工作者指向第一个tomcat
# define the worker
[ajp13:tomcat1]
channel=channel.socket:tomcat1
#第二个tomcat 得地址
# Example socket channel, override port and host.
[channel.socket:tomcat2]
port=12009
host=10.1.36.123
# 定义第二个工作者指向第二个tomcat
# define the worker
[ajp13:tomcat2]
channel=channel.socket:tomcat2
#定义负载均衡器,使其包含两个工作者 [lb:lb1]
worker=ajp13:tomcat2
worker=ajp13:tomcat1
#指定负载均衡器完成单一地址映射,使得apache 服务所在的uri全部指向 两个tomcat 上的 root
# Uri mapping [uri:/*]
group=lb:lb1
#++++++++++++++++++++++++++++++++++++++++++