一个大型网站 如果发展到一定的规模,访问量不断增多,服务器就要做一些措施

进行应对。。。最常见的就是 群集 负载均衡,多台服务器,有点分流的意思,减轻服务器负担

好,我现在用 CentOS5.4 Linux 和 apache2.2.11 tomcat6.0.18 这样的环境来实现一下。

再做这个试验之前,你的电脑必须 是

mod_jk 1.2.15 链接器 已经整合apache 和 tomcat 。。。

这个教程在之前已经做过了,我是在那个基础上实现 群集和负载均衡的。

http://www.17rumen.com/archives/124.html
如果你还不清楚如何 整合 apache 和 tomcat ,可以看回以前视频教程。

================================================

好了,不多说了, 马上开始。 通过 putty登陆上 centos

首先要明确是 一个 apache 带 2个 tomcat 来实现,所以要启动2个tomcat 服务器

先拷贝多一个 tomcat

#cp -r tomcat tomcat2

拷贝复制多一个 tomcat 还不行,因为 这样还不能同时运行,因为端口会发生冲突的。

下面修改  tomcat2 目录 conf 下的 server.xml 文件

把 8005 改为 9005
<Server port="9005" shutdown="SHUTDOWN">

把8080改为8088
    <Connector port="8088" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

把8009改为9009
    <!-- Define an AJP 1.3 Connector on port 8009 -->
    <Connector port="9009" protocol="AJP/1.3" redirectPort="8443" />

:wq 保存退出
===============================================

配置 mod_jk, 在 apache2/conf 下

vi mod_jk.conf

JkWorkersFile conf/workers.properties           #加载集群中的workers
JkMountFile conf/uriworkermap.properties    #加载workers的请求处理分配文件
JkLogFile logs/mod_jk.log                                #指定jk的日志输出文件
JkLogLevel warn                                                  #指定日志级别

和上面内容基本基本一样可以了, 我的是在以前的做修改,有些内容要删掉,有些添加了。
==============================

然后就是 workers.properties 文件的配置了。
把以前全部删掉,然后添加下面的上去。

worker.list=controller, status

worker.s1.port=8009
worker.s1.host=localhost
worker.s1.type=ajp13
worker.s1.lbfactor=1

worker.s2.port=9009
worker.s2.host=localhost
worker.s2.type=ajp13
worker.s2.lbfactor=1

worker.controller.type=lb
worker.retries=3
worker.controller.balanced_workers=s1,s2
worker.controller.sticky_session=0

worker.status.type=status

================================

再新建一个文件:uriworkermap.properties,文件内容如下:

/*=controller
/jkstatus=status

!/*.gif=controller
!/*.jpg=controller
!/*.png=controller
!/*.css=controller
!/*.js=controller
!/*.htm=controller
!/*.html=controller

============================================

再修改tomcat配置:这里两个tomcat都要配置。

第一个 tomcat server.xml文件,
<Engine name="Catalina" defaultHost="localhost" jvmRoute="s1">

第二个 tomcat2 server.xml文件,
<Engine name="Catalina" defaultHost="localhost" jvmRoute="s2">

其实就是 加入 jvmRoute

========================================

好了 现在就要测试时候了, 关闭 tomcat 和 apache
因为我一直运行着的。

下面启动2个tomcat 服务器先

[root@localhost conf]# /usr/local/tomcat/bin/startup.sh
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:       /usr/java/jdk1.7.0
[root@localhost conf]# /usr/local/tomcat2/bin/startup.sh
Using CATALINA_BASE:   /usr/local/tomcat2
Using CATALINA_HOME:   /usr/local/tomcat2
Using CATALINA_TMPDIR: /usr/local/tomcat2/temp
Using JRE_HOME:       /usr/java/jdk1.7.0

没有提示任何错误, 再查看一下端口情况

tcp        0      0 ::ffff:127.0.0.1:8005       :::*                        LISTEN
tcp        0      0 :::8009                     :::*                        LISTEN
tcp        0      0 ::ffff:127.0.0.1:9005       :::*                        LISTEN
tcp        0      0 :::8080                     :::*                        LISTEN
tcp        0      0 :::9009                     :::*                        LISTEN
tcp        0      0 :::8088                     :::*                        LISTEN

端口没有发生冲突, 都是按照我们修改的端口正常运行。

---------------------
再启动一下 apache2 了

[root@localhost conf]# /usr/local/apache2/bin/apachectl start

看到 80 端口也正常打开了。

========================

写一个 jsp 来进行测试

<%
 out.println( "Hello, www.17rumen.com" );
 System.out.println( "==========  test  ========" );
%>

很简单的测试页面, 页面正常打开会显示 Hello, www.17rumen.com

而后台 tomcat 会显示 ==========  test  ========

然后你再刷新的话 就会 tomcat2 显示, 也就是 tomcat 和 tomcat2 会轮流显示的。

实现负载均衡

[root@localhost logs]# vi /usr/local/tomcat/logs/catalina.out
看到 tomcat 后台显示出来了,

再刷新 页面 。。。

[root@localhost logs]# vi /usr/local/tomcat2/logs/catalina.out
这次 tomcat2 后台也显示出来一条 ==========  test  ========

为了验证 这是 tomcat 和 tomcat2 轮流执行 访问 页面的,

再看看  vi /usr/local/tomcat/logs/catalina.out
tomcat 有没有重复显示,没错,tomcat 还是只显示一条 ==========  test  ========

说明 第二次 访问页面 ,apache2 已经把jsp页面交给 tomcat2 处理了。

好了, 负载均衡实现成功, 演示就到这里。


“CentOS5.3_JSP服务器_11 部署 apache 2.2.11 和 tomcat 6.0.18 搭建集群和实现负载均衡Linux服务器”有1个评论

  1. 11月 24th, 2009 at 19:31:40 #admin

    有些朋友说到 session 复制的问题。。。

    我不知道复制和共享有什么区别, 呵呵, 我刚入门,

    但是配置文件 其中有一个代码是这样的

    #设置用于负载均衡的server的session可否共享(重要,缓存共享)
    worker.controller.sticky_session=1
    #worker.controller.sticky_session_force=1

    worker.status.type=status

    这里是可以设置 session 共享的,我以后会写一个jsp去验证。

    如果有朋友知道 session 复制的话,可以交流一下。谢谢

    [回复]

有任何疑问或建议,可以给作者留言:



公告:

  • 2010年5月之前的视频是文字解说演示,没有声音。
  • 2010年5月以后的视频全部带声音。