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

[经验分享] Apache 2+Tomcat 6负载均衡与集群配置及性能测试

[复制链接]

尚未签到

发表于 2017-1-13 11:12:31 | 显示全部楼层 |阅读模式
Apache 2+Tomcat 6负载均衡与集群配置及性能测试

负载均衡,就是apache将客户请求均衡的分给tomcat1,tomcat2....去处理,Tomcat中的集群使一组局域网上的Tomcat实例在用户看起来是单一的服务器,是实现系统资源高利用率的有效解决方案。该文章描述了一个实际的Tomcat6集群的配置,此集群包含独立的三个Tomcat6实例。(文档最后附件为该文档的完整版《包含相关的图片》) 前端采用Apache mod_jk实现负载平衡
后端使用JDBC存储的永久会话管理器实现session共享
1.安装Apche,Tomcat

      http://httpd.apache.org/  下载Apache 2.0.55
      http://tomcat.apache.org/ 下载tomcat6.0.18 zip版本(解压即可,绿色版)
     http://apache.justdn.org/tomcat/tomcat-connectors/jk/binaries/win32/jk-1.2.15/  下载mod_jk,注意和apache版本匹配
      安装Apache服务器到物理机器一(假设IP为59.73.195.137),安装路径为D:\Apace2
      在物理机器一、二(假设IP为59.73.195.138)、三假设IP为59.73.195.139中解压下载的Tomcat压缩包,解压路径为D盘根目录。(为便于区分,可以分别重命名解压文件夹名称为tomcat-137,tomcat-138,tomcat-139)
2、配置Apache服务器

2.1 导入mod_jk模块

将下载的二进制文件mod_jk-1.2.28-httpd-2.0.52.so拷贝到物理机器一的:D:\Apache2\modules文件夹下
2.2修改Apache配置文件http.conf

在apache安装目录下conf目录中找到http.conf
      在文件最后加上下面一句话:include "D:\Apache2\conf\mod_jk.conf",如下所示
 
2.3 新建mod_jk.conf文件

 在物理机器一下D:\Apache2\conf\ 新建mod_jk.conf文件,文件内容如下:
#加载mod_jk Module
LoadModule jk_module modules/mod_jk-1.2.28-httpd-2.0.52.so
#指定workers.properties文件路径
JkWorkersFile conf/workers.properties
#告知mod_jk将自己日志写到哪里
JkLogFile logs/mod_jk_cluster.log
#控制日志级别,info为正常的日志级别,error和debug级别将提供更多的日志细节
JkLogLevel debug
#记录Tomcat worker名称、网址、和每个请求的时间
JkRequestLogFormat "%w %U %T"
#指定那些请求交给tomcat处理,controller为在workers.propertise里指定的负载分配控制器
JkMount /* ball
JkMount /jkstatus/ stat1
 
2.4新建worker.properties文件

在物理机器一下D:\Apache2\conf\ 新建worker.properties文件,文件内容如下:
worker.list =ball,stat1  #server 列表
 
#========tomcat-137========      
worker.tomcat-137.type=ajp13            #ajp13 端口号,在tomcat下server.xml配置,默认8009
worker.tomcat-137.host=59.73.195.137    #tomcat的主机地址,如不为本机,请填写ip地址
worker.tomcat-137.port=8009
worker.tomcat-137.lbfactor = 10         #server的加权比重,值越高,分得的请求越多
#========tomcat-138======== 
worker.tomcat-138.type=ajp13            #ajp13 端口号,在tomcat下server.xml配置,默认8009
worker.tomcat-138.host=59.73.195.138    #tomcat的主机地址,如不为本机,请填写ip地址
worker.tomcat-138.port=8009
worker.tomcat-138.lbfactor = 10         #server的加权比重,值越高,分得的请求越多
#========tomcat-139======== 
worker.tomcat-139.type=ajp13            #ajp13 端口号,在tomcat下server.xml配置,默认8009
worker.tomcat-139.host=59.73.195.139    #tomcat的主机地址,如不为本机,请填写ip地址
worker.tomcat-139.port=8009
worker.tomcat-139.lbfactor = 10         #server的加权比重,值越高,分得的请求越多
worker.ball.type=lb
worker.ball.sticky_session=1            #默认为1,表示同样的tomcat服务实例将服务来自同样会话的请求
worker.ball.balance_workers=tomcat-137,tomcat-138,tomcat-139
worker.stat1.type=status
 
 
3、配置tomcat服务器

3.1启用AJP连接器

在每一个Tomcat相应目录下修改server.xml文件,在此以物理机器一为实例:
打开D:\tomcat-137\conf\server.xml文件,启用AJP连接器,即将默认注释的AJP链接器取消注释
 
3.2禁用默认的HTTP/1.1连接器

在3.1所属的文件中,注释掉所有Tomcat实例的HTTP连接器的配置,如下所示:
 
3.3在Catalina Engine中设置jvmRoute

     在每一个Tomcat实例的server.xml文件中添加一个jvmRoute属性。该属性ID必须与workers.properties文件中唯一的jvmRoute ID一一对应。对应物理机一得tomcat-137,使用的条目如下所示:

        
     添加前面的所示的Engine指令后,需要注释掉默认的Catalina Engine指令,如下所示:

    

3.4配置Web.xml文件

     在每一个tomcat实例webapps下的应用程序的WEB-INF\web.xml添加distributable属性,添加位置如下:

 

4、配置使用JDBC存储的永久会话管理器

  在本配置中,一个oracleRDBMS表用于存储共享信息并使用集群中的Tomcat实例能够通过经JDBC的永久会话管理器共享会话信息。

4.1 在Oracle数据库中创建一用户及相关数据表

    新用户名   empro    密码   empass

    empro授予相关权限(略)

    empro用户登录,创建Tomcat_sessions

 

        create table tomcat_sessions(
session_id varchar2(
100) not null primary key,
valid_session char(
1) not null,
max_inactive integer not null,
last_access number(
20) not null,
app_context varchar2(
255),
session_data blob)
create index kapp_context on tomcat_sessions(app_context);
commit

4.2配置<Manager>元素

  向每个位于webapps/应用程序名/META-INF 目录(如果这个目录不存在,则创建它)下的集群节点添加一个context.xml文件,文件内容如下:

     

5、同步tomcat集群内部机器时钟

因为tomcat实例是部署在多台物理机器上,必须确保这些物理机器的时钟是同步的,在此通过通过以下配置实现时钟同步效果。每台物理机器都需进行配置操作。

Step1

   开始菜单→“运行项下(或按Win+R)输入Regedit进入注册表编辑器。 

Step2

展开[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\  Parameters]分支,双击NtpServer将键值修改为国家授时中心服务器的IP地址:210.72.145.44,然后点击确定按钮保存。  

Step3

展开[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\  TimeProviders\NtpClient]分支,并双击SpecialPollInterval键值,将对话框中的基数栏选择到十进制上,输入框中显示的数字正是自动对时的间隔(以秒为单位),比如默认的604800就是由7()×24()×60()×60()计算来的。设定时间同步周期(建议设为900=15分钟或3600=1小时等周期值),填入对话框,点击确定保存关闭对话框。


6、性能测试现象比较

6.1测试环境

 
 
 
 
 
 
 
    设备
硬件配置
软件配置
WEB服务器
Apache2.0 + Tomcat6.0 × 3
Apache服务器和tomcat-137位于物理机器一上(内存2G,双核CPU),tomcat-138位于物理机器二上(内存2G,双核CPU),tomcat-139位于物理机器三上(内存1G,单核CPU)
 
 Windows Server 2003
数据库服务器
Power  Edge 2950
Cpu: INTEL XEON  E5420 主频 2.5GHZ (2路四核)
内存:4G
 
Oracle 10g
负载产生设备及客户端
方正PC机(一台)
CPU:Intel(R)Celeron(R)D cup3.06GHz内存:1.0G
Windows 2003  server
LoadRunner9.5
Microsoft Office2003
网络环境
单位内网
 
 
6.2测试用例及脚本开发

用例编号
用例名称
开发情况
C01
并发访问首页
在事物中插入集合点
C02
并发登录
屏蔽用户重复登录
C03
答疑问题查询
单独做压力测试接口
 
6.3、测试方法&场景设计

     1、模拟用户行为,录制用例的操作过程,
2、模拟不同的用户数量:进行并发测试100、200、400、500、.。。。。
3、压力持续5分钟,10分钟
6.4、执行用例

C01(打开首页)
l         前置条件:Apache2.0 + Tomcat6.0 ×3
l         测试结果
用户数量
迭代次数
Minimum
Average
Maximum
Pass
Fail
Stop
测试结果
100
1
 
2.29
 
100
 
 
 
200
1
 
2.80
 
200
 
 
 
400
1
 
5.2
 
400
 
 
 
800
1
 
[/td]<td style="padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: #d4d0c8; width: 52.8pt; padding-top[/tr]

运维网声明 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-327935-1-1.html 上篇帖子: bboss发布apache cxf 2.7.6服务和定义客户端服务实例可能产生冲突解决办法 下篇帖子: Apache CXF开发Web Service 开发Web Service之Kick Start
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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