一、引言
负载均衡建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。负载均衡(Load Balance)是集群技术(Cluster)的一种应用。负载均衡可以将工作任务分摊到多个处理单元,从而提高并发处理能力。目前最常见的负载均衡应用是Web负载均衡。负载均衡可以使用硬件设备,也可以使用软件实现。硬件设备的主要产品是F5-BIG-IP-GTM(简称F5),软件产品主要有LVS、HAProxy、NginX、Jk等。
二、准备工具
Apache :apache_2.2.25.msi
Tomcat :apache-tomcat-7.0.42.zip
jk : mod_jk-1.2.31-httpd-2.2.3.so
注:本例程以一台机器为例子,即同一台机器上装一个apache和2个Tomcat。
三、安装
把文件解压到自定义盘符下:
1、 安装apache软件参考一下 apache安装:
2、tomcat解压时要注意名字改名字避免出现中文,这里我把文件夹名字改为worker_1,worker_2 ;
3、最后把mod_jk-1.2.31-httpd-2.2.3.so放到apache目录下的module目录中。安装完成!
四、配置apache
1. windows下的主要配置文件就在“安装目录Apache2.2\conf\httpd.conf”。
在Apache2.2\conf\httpd.conf的最后面添加
# module mod_jk config file
Include conf /mod_jk.conf
因为我是使用的jk来配置负载均衡的,所以这么多就够了
2. 在Apache2.2\conf\目录下新建文件:mod_jk.conf,内容如下
#load module mod_jk-1.2.31-httpd-2.2.3.so is for Apache 2.2.x.
LoadModule jk_module modules/mod_jk-1.2.31-httpd-2.2.3.so
#配置 mod_jk conf
#加载集群中的workers
JkWorkersFile conf/workers.properties
#加载workers的请求处理分配文件
JkMountFile conf/uriworkermap.properties
#指定jk的日志输出文件
JkLogFile logs/mod_jk.log
#指定日志级别
JkLogLevel info
3. 在Apache2.2\conf\目录下新建文件:workers.properties,内容如下:
# worker列表
worker.list=LB_worker,jkstatus
#第一个worker的配置,名为worker_1
#tomcat的主机地址,如不为本机,请填写ip地址
worker.worker_1.host=localhost
#ajp13 端口号,对应tomcat配置文件server.xml中Connector port="8009",默认8009
worker.worker_1.port=8009
worker.worker_1.type=ajp13
#负载的权重值,越高表示负载越大
worker.worker_1.lbfactor=4
#第二个worker的配置,名为worker_2
worker.worker_2.host=localhost
#ajp13 端口号,对应tomcat配置文件server.xml中Connector port="9009"
worker.worker_2.port=9009
worker.worker_2.type=ajp13
worker.worker_2.lbfactor=1
#LB_worker,用于负载均衡分发的控制器
worker.LB_worker.type=lb
#重试次数
worker.LB_worker.retries=3
#指定负载的worker列表,用逗号分隔
worker.LB_worker.balance_workers=worker_1,worker_2
#配置session会话是否为粘性
#这样负载均衡器lb就会尽量保持一个session,也就是使用户在一次会话中跟同一个Tomcat进行交互
worker.LB_worker.sticky_session=true
#如果sticky_session设为true时,此处一般设为false
worker.LB_worker.sticky_session_force=false
#设置运行状态的控制器
worker.jkstatus.type=status
4. 在Apache2.2\conf\目录下新建文件:uriworkermap.properties,内容如下
#所有请求都由LB_worker这个worker处理
/*=LB_worker
#所有包含jkstatus请求的都由名称叫jkstatus的这个worker处理
/jkstatus=jkstatus
apache这边已经设置好了,再把tomcat设置好,就能用apache访问tomcat啦。
五、配置Tomcat
其中要进行两个tomcat的分别设置,并且和workers.properties里面的对应的内容相匹配
其实tomcat配置就是两点:
1. 保证tomcat的端口之间互不冲突(需要修改三个地方);
a) <Serverport="8005" shutdown="SHUTDOWN">
b) <Connectorport="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
c) <Connectorport="8009" protocol="AJP/1.3"redirectPort="8443" />
2. 保证tomcat的Connector端口和apache的worker.property配置文件中一致(默认是8009的那个)。