设为首页 收藏本站
查看: 626|回复: 0

[经验分享] Apache与Tomcat负载均衡基础篇

[复制链接]

尚未签到

发表于 2017-1-5 09:42:40 | 显示全部楼层 |阅读模式
前言
此处的配置是搭建在同一台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文件,修改如下:

DSC0000.jpg
 将8005端口改为8105,这里你可以改为你喜欢的值,只要不与系统的特定端口和8005(因为这个8005被你的另一个tomcat占用了)一样就行了。

DSC0001.jpg
 
8080(同样这个端口被另一个tomcat占用了)端口改为8081
        
DSC0002.jpg
 将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后台输出

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

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

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-324093-1-1.html 上篇帖子: 增加apache最大连接数的方法 下篇帖子: 关于Apache Common Daemon 守护进程
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表