欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Apache与Tomcat负载均衡基础篇 apachejktomcat负载均衡 

程序员文章站 2022-04-12 12:49:39
...

前言

此处的配置是搭建在同一台pc机的,因此如果要搭建不同pc之间的负载均衡,并使用jk作为apachetomcat的连接器来进行负载均衡,可参考我下面的说明。

描述

使用mod_jk默认的以轮循方式进行平衡负载,假设有两个服务器节点(正常运行情况下),并且有10个请求,并且第一个请求先到达节点1,则10个请求被分发的顺序如下:

节点1

节点2

1

2

3

4

5

6

7

8

9

10

环境的准备

需要的环境:jre(无者可安装jdk)、apache(我这里使用的是apache2.2.19)、jk(这是apachetomcat的连接器,我使用的是mod_jk-1.2.31-httpd-2.2.3.so)和Tomcat(我使用Tomcat6.x)。Apache的安装在网上很多可参考进行安装,Tomcat的安装相信大家已经并陌生了。将tomcat分开两个目录安装(我这里安装了两个Tomcat,当然你可以安装更多)。

说明:安装Apache后打开浏览器输入http://localhost,如果页面出现” It works!”则表明Apache安装成功。

配置

加入mod_jk模块

         将文件mod_jk-1.2.31-httpd-2.2.3.so复制到Apache安装目录下modules文件夹中。

说明:该文件名是否需要更改,看自己习惯而定,但后面的配置必须引用此文件名。

Apachehttpd.conf文件配置

Apache安装目录下的conf文件中找到httpd.conf文件,并在该文件中加上Include conf/mod_jk.conf(此mod_jk.conf文件将在后面谈及)。

说明:这样做的目的是为了整个配置结构的清晰,使得httpd.conf的内容简洁。

增加mod_jk.conf文件

Apache安装目录下的conf文件中,创建mod_jk.conf文件,并在该文件中加入以下内容:

# Load mod_jk module 加载mod_jk

LoadModule jk_module modules/mod_jk-1.2.31-httpd-2.2.3.so

 

# Where to find workers.properties(引用workers配置文件)

JkWorkersFile conf/workers.properties

 

# Where to put jk logs(log文件路径)

JkLogFile logs/mod_jk.log

 

# Set the jk log level [debug/error/info](log级别)

JkLogLevel info

 

# Select the log format(log格式)

JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "

 

# JkOptions indicate to send SSL KEY SIZE,

JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories

 

# JkRequestLogFormat set the request format

JkRequestLogFormat "%w %V %T"

 

# Send JSPs for context / to worker named loadBalancer(URL转发配置,匹配的URL才转发到tomcat进行处理)

#JkMount /*.* loadBalancer

JkMount /*.jsp controller

(注:此配置可独立成一个文件,只要在mod_jk.conf文件中加入JkMountFile conf/uriworkermap.properties,并在conf目录下创建uriworkermap.properties文件,将JkMount /*.jsp controller之类的url转发控制定义在该文件中即可)

 

# Send servlet for context /examples to worker named ajp13

# JkMount /servlet/* ajp13

增加workers.properties文件

Apache安装目录下的conf文件中,创建workers.properties文件,并在该文件中加入以下内容:

#server 列表

worker.list=controller,loadBalancer

 

#tomcat1(ajp13 端口号,在tomcatserver.xml配置,默认8009)

worker.tomcat1.port=8009

 

#tomcat的主机地址,如不为本机,请填写ip地址

worker.tomcat1.host=localhost

worker.tomcat1.type=ajp13

 

#server的加权比重,值越高,分得的请求越多

worker.tomcat1.lbfactor=1

 

#tomcat2

worker.tomcat2.port=8109

worker.tomcat2.host=localhost

worker.tomcat2.type=ajp13

worker.tomcat2.lbfactor=1

 

#controller(负载均衡控制器)

worker.controller.type=lb

 

#指定分担请求的tomcat

worker.controller.balance_workers=tomcat1,tomcat2

worker.loadBalancer.balance_workers=tomcat1,tomcat2

修改tomcatserver.xml配置

这里要修改其中一个tomcatserver.xml配置,在你的某个tomcat安装路径下的conf文件夹下找到server.xml文件,修改如下:


Apache与Tomcat负载均衡基础篇
            
    
    
        apachejktomcat负载均衡 
 
8005端口改为8105,这里你可以改为你喜欢的值,只要不与系统的特定端口和8005(因为这个8005被你的另一个tomcat占用了)一样就行了。


Apache与Tomcat负载均衡基础篇
            
    
    
        apachejktomcat负载均衡 
 

8080(同样这个端口被另一个tomcat占用了)端口改为8081

        
Apache与Tomcat负载均衡基础篇
            
    
    
        apachejktomcat负载均衡 
 
8009(已经被另一个tomcat占用)端口改为8109

PS:这里的两个tomcat需要保证有一个的ajp端口为8009,否则会在apache启动时,报8009端口的错误(神马错误忘了,呵呵,可以自己试试),我个人认为要这样改的话可能需要更改某些配置。

说明:如果配置的tomcat不在同一台服务器里的话,无需做上面的端口配置修改。

编写页面测试代码

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>test1</title>

</head>

<body>

<%

   System.out.println(“session : “ + session.getId());

%>

</body>

</html>

文件名为index.jsp

测试

打开浏览器输入http://localhost/test/index.jsp观察tomcat1后台输出


Apache与Tomcat负载均衡基础篇
            
    
    
        apachejktomcat负载均衡 
 

刷新页面,观察tomcat2的后台输出


Apache与Tomcat负载均衡基础篇
            
    
    
        apachejktomcat负载均衡 
 

两次请求被分开发送至两个tomcat里去了,并且两个sessionid不同,说明两次请求的session不一样,但却是同一个窗口。因此要使得在这种情况下的两个session一样就要做集群(session的复制)。

  • Apache与Tomcat负载均衡基础篇
            
    
    
        apachejktomcat负载均衡 
  • 大小: 4.9 KB
  • Apache与Tomcat负载均衡基础篇
            
    
    
        apachejktomcat负载均衡 
  • 大小: 28.3 KB
  • Apache与Tomcat负载均衡基础篇
            
    
    
        apachejktomcat负载均衡 
  • 大小: 5.2 KB
  • Apache与Tomcat负载均衡基础篇
            
    
    
        apachejktomcat负载均衡 
  • 大小: 60.1 KB
  • Apache与Tomcat负载均衡基础篇
            
    
    
        apachejktomcat负载均衡 
  • 大小: 55.9 KB