zoukankan      html  css  js  c++  java
  • 用Apache和Tomcat搭建集群和实现负载平衡

    今天在oschina上看到这篇文章觉得非常有价值,留作备用,稍后回去自己架设。
    (一)前期准备

    我的系统用的是windowsXP专业版,我要做的是,用一个apache和多个(这里以两个作为示例)tomcat,通过jk方式,构造一个集群。以下是要首先准备的东西:

    1、jdk,我用的版本是jdk1.6 sun官网下载

    2、apache,我用的版本是2.2.21,下载地址:http://labs.renren.com/apache-mirror//httpd/binaries/win32/httpd-2.2.21-win32-x86-openssl-0.9.8r.msi

    3、tomcat,我用的版本是6.0的解压版本,这里要注意:不能用安装的版本,因为一台机器上装两个一样的tomcat,是会出错误的。下载地址是:http://mirror.bjtu.edu.cn/apache/tomcat/tomcat-6/v6.0.33/bin/apache-tomcat-6.0.33-windows-x86.zip

    4、jk,这个jk的版本,本来有两个的,但是版本2已经被废弃掉了,目前可用的jk版本是1.2.25。每个apache的版本,都会有一个特定的jk与之对应,所以这里要用的jk也必须是为apache-2.2.4开发的那个才行。它的下载地址是http://download.csdn.net/detail/stonewang/499781

    有了这四样东西,我们就可以开始做集群了。

    (二)安装

    1、相信需要看这篇文章的人,JDK的安装一定不会陌生,这里不在赘述。只是需要提醒一下:环境变量别忘记配置了。

    2、安装apache也没有什么难度,就是在安装过程中要配置域名、网址和管理员邮箱之类的信息,这个信息完全可以按照提示,然后修改下填入即可,之后想修改的话直接到配置文件中改就行了。除了这个地方,还要保证机器上的80端口没有被其他程序占用。至于安装路径,完全取决于个人爱好。其他的默认就行了。安装成功后,系统右下角的托盘区会有个图标,我们可以通过这个启动apache,如果那个小红点变成绿色,说明服务已经正常启动了(如果服务没有启动起来,说明安装过程中的配置有错误,建议卸载后重装)。如果按照默认,端口是80的话,那打开浏览器,输入:http://localhost/ ,应该可以看到 ” It works “的字样。这样就可以进入下一步了。

    3、解压缩tomcat,记得要做两份。这里不妨将两个tomcat命名为:tomcat- 5.5.25_1和tomcat-5.5.25_2,其实这两个文件夹中的东西是完全一样的。但是我为了在同一台机器上做集群,那就要保证两个 tomcat运行起来不会在端口上起冲突。进入tomcat-5.5.25_1/conf目录,用文本编辑器打开并修改server.xml,将该 tomcat的默认8080端口改为8088(其实没必要改,我改这个是因为我机器上还有其他tomcat占用着8080端口)。然后进入tomcat- 5.5.25_2/conf目录,同样将8080修改掉,至于改成多少没多大关系,只要不占用其他程序的端口,应该不会出什么问题。这样,tomcat就算安装好了。

    4、jk这东西是一个连接模块,不用安装,直接将mod_jk-1.2.26-httpd-2.2.4这个文件拷贝到apache安装目录下的modules文件夹下面就行了。

    这样,安装完成,下面开始配置。

    (三)配置

    这个地方才是搭建集群的关键所在,我也会尽我的可能写的详细点。

    1、配置tomcat

    为防止冲突,进入第二个tomcat主目录,然后进入conf目录,打开server.xml修改配置。主要是修改端口,我这里把所有的端口信息,都在原有基础上加1000,即原端口是8009,我改为9009。当然,你不必和我一样,只要保证不冲突就 OK!这些配置在apache的配置中可能会用到。

    2、配置apache

    (1)进入apache的主目录,然后进入conf文件夹,用文本编辑器打开httpd.conf,在该文件末尾加上如下几行:

    ### 加载 mod_jk 模块
    LoadModule jk_module modules/mod_jk-apache-2.2.4.so
    ### 配置 mod_jk
    JkWorkersFile conf/workers.properties           #加载集群中的workers
    JkMountFile conf/uriworkermap.properties    #加载workers的请求处理分配文件
    JkLogFile logs/mod_jk.log                                #指定jk的日志输出文件
    JkLogLevel warn                                                  #指定日志级别

    (2)不要改变目录,新建一个文件:workers.properties,该文件用来配置web容器的信息。该文件的内容如下:

    # worker列表
    worker.list=controller, status
    #第一个server的配置,server名为s1
    #ajp13 端口号,在tomcat下server.xml配置,默认8009
    worker.s1.port=8009
    #tomcat的主机地址,如不为本机,请填写ip地址
    worker.s1.host=localhost
    worker.s1.type=ajp13
    #server的加权比重,值越高,分得的请求越多
    worker.s1.lbfactor=1
    #第二个server的配置,server名为s2
    worker.s2.port=9009
    worker.s2.host=localhost
    worker.s2.type=ajp13
    worker.s2.lbfactor=1
    #server名为controller,用于负载均衡
    worker.controller.type=lb
    worker.retries=3   #重试次数
    #指定分担请求的server列表,用逗号分隔
    worker.controller.balanced_workers=s1,s2
    #设置用于负载均衡的server的session可否共享 有不少文章说设置为1是可以的,但是我是设置为0才可以的
    worker.controller.sticky_session=0
    #worker.controller.sticky_session_force=1
    worker.status.type=status

    (3)不要改变目录,新建一个文件:uriworkermap.properties,文件内容如下:

    /*=controller                        #所有请求都由controller这个server处理
    /jkstatus=status                   #所有包含jkstatus请求的都由status这个server处理
    !/*.gif=controller                   #所有以.gif结尾的请求都不由controller这个server处理,以下几个都是一样的意思
    !/*.jpg=controller
    !/*.png=controller
    !/*.css=controller
    !/*.js=controller
    !/*.htm=controller
    !/*.html=controller

    这里的”!”类似于java中的”!”,是“非”的意思。

    这样,apache一块就配置好了。

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

    仍然是打开第一步中的那个server.xml文件,找到这一行,在里面加上一句:jvmRoute=”s1″,即把该句改为:。这里的s1就是第二步中配置的用于负载均衡的server的名称。如果该tomcat的端口是第二步中s1用的端口,那这里就写s1,第二个tomcat就应该是s2了。

    4 配置集群环境session共享

    a 修改server.xml 放开注释

    <!--
    <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
    -->

    b 修改web.xml配置文件 在 中介增加 属性
    这样,配置就完成了。

    (四)运行

    进入两个tomcat的bin目录,执行两个tomcat的startup.bat启动这两个 tomcat,然后将apache重新启动后,运行起来看看效果吧。如果不出意外,两个tomcat的窗口应该是你一次我一次的打印日志信息了,而且此时 session也是共享了的。

    到这里,集群搭建好了,负载均衡也实现了。

  • 相关阅读:
    7月的尾巴,你是XXX
    戏说Android view 工作流程《下》
    “燕子”
    Android开机动画bootanimation.zip
    戏说Android view 工作流程《上》
    ViewController里已连接的IBOutlet为什么会是nil
    My first App "Encrypt Wheel" is Ready to Download!
    iOS开发中角色Role所产生的悲剧(未完)
    UIScrollView实现不全屏分页的小技巧
    Apple misunderstood my app,now my app status changed to “In Review”
  • 原文地址:https://www.cnblogs.com/liuxgnu/p/3535460.html
Copyright © 2011-2022 走看看