zoukankan      html  css  js  c++  java
  • Apache + Tomcat + Linux 集群和均衡负载 (Session 同步复制) 配置实

    经过我的多次测试实践,在linux和window下测试通过,win的比较简单,因为在默认的情况下,组播就已经打开。
    1 在linux 下同一台服务器上测试通过(注意端口不要冲突。特别要注意那个tcpListenPort=”4001″ )
    2 在window下的同一台服务器上测试通过,注意要点同上
    3 window下多台不同主机上测试通过,没有什么好注意点,可以完全备份一个tomcat
    4.linux多台不同tomcat服务器上测试通过。这个也是最后实现,最实际的方案。(一般不用在win下部署tomcatweb应用。呵呵。我觉得)

    这里讲下第四中情况

    先讲一下环境:都是在Red Hat Linux AS4上测试通过
    Apache:ip:192.168.1.11 (一台) 版本:2.0/2.2 (做均换负载服务器)
    Tomcat:ip1:192.168.1.12 ip2:192.168.1.13 (两台) 版本:5.0、5.5 (web应用的Real Server)
    Jdk:版本1.5 安装在 192.168.1.12 和192.168.1.13上的tomcat服务器上

    安装tomcat和apache ,在这里就不讲了。
    软件都可以在www.apache.org 的网站上找到(apache,tomcat,mod_jk)

    1.下载mod_jk.so 文件放到apache 下的modules下
    地址:http://apache.mirror.phpchina.com/tomcat/tomcat-connectors/jk/binaries/ 请选择正确的操作系统和Apache的版本。
    2.在apache的conf下建立文件workers.properties

    添加内容:
    #
    # workers.properties
    #

    # list the workers by name
    worker.list=tomcatlb, status

    # localhost server 1
    # ------------------------
    worker.tomcat12.port=8009
    worker.tomcat12.host=192.168.1.12
    worker.tomcat12.type=ajp13
    worker.tomcat12.lbfactor=1
    worker.tomcat12.connection_pool_timeout=750
    worker.tomcat12.socket_keepalive=0
    worker.tomcat12.socket_timeout=300000
    worker.tomcat12.connect_timeout=10000
    worker.tomcat12.reply_timeout=330000

    # localhost server 3
    # ------------------------
    worker.tomcat13.port=8009
    worker.tomcat13.host=192.168.1.13
    worker.tomcat13.type=ajp13
    worker.tomcat13.lbfactor=1
    worker.tomcat13.connection_pool_timeout=750
    worker.tomcat13.socket_keepalive=0
    worker.tomcat13.socket_timeout=300000
    worker.tomcat13.connect_timeout=10000
    worker.tomcat13.reply_timeout=330000

    worker.tomcatlb.type=lb
    worker.retries=3
    worker.tomcatlb.balanced_workers=tomcat12,tomcat13
    worker.tomcatlb.sticky_session=1

    worker.status.type=status

    3.在conf下添加一个mod_jk.conf文件
    LoadModule jk_module modules/mod_jk.so

    #configure mod_jk
    JkWorkersFile conf/workers.properties
    JkLogFile logs/mod_jk.log
    JkLogLevel debug

    4.增加一个虚拟机配置文件vhosts.conf (这个不是必须的,可以将JkMount 的写其他的配置文件中)
    <VirtualHost *:80>
    ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot /data/google
    ServerName my.linuxcoffee.org
    ErrorLog logs/my.linuxcoffee.org-error_log
    CustomLog logs/my.linuxcoffee.org-access_log common
    DirectoryIndex index.htm index.html

    JkMount /*.jsp tomcatlb
    JkMount /*.action tomcatlb
    JKMount /jkstatus status
    </VirtualHost>

    4.修改conf下的httpd.conf文件加上
    Include conf/vhosts.conf
    Include conf/mod_jk.conf

    5.配置tomcat
    讲Cluster 前的注释去掉,启用tomcat集群功能。
    一般不需要修改什么东西,但在我这边,两台linux的tomcat就是死活找不到node,而同样的配置文件在window下的跑得很是正常。
    有个东西要说明下,因为tomcat的session同步功能需要用到组播,windows默认情况下是开通组播服务的,但是linux默认情况下并没有 开通,可以通过指令打开route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0,如果需要服务器启动时即开通组播需在/etc/sysconfig/static-routes文件内加入eht0 net 224.0.0.0 netmask 240.0.0.0。具体组播概念请查阅CCNP相关内容。
    可以通过netstate -g 来查看组播状态,也可以在route -e 命令中看到

    原来一直提示这个问题
    信息: Manager [/clusterapp]: skipping state transfer. No members active in cluster group.
    最后测试只要修改在Cluster之间的一段代码
    <Receiver
    className="
    org.apache.catalina.cluster.tcp.ReplicationListener"
    tcpListenAddress="auto"
    tcpListenPort="4001"
    tcpSelectorTimeout="100"
    tcpThreadCount="6"/>

    改为
    <Receiver
    className="
    org.apache.catalina.cluster.tcp.ReplicationListener"
    tcpListenAddress="192.168.1.12"
    tcpListenPort="4001"
    tcpSelectorTimeout="100"
    tcpThreadCount="6"/>

    在13的服务器上也将这一段修改为自己的ip

    然后打开jvmRoute ,跟workers.properties 的两个tomcat名字相匹配
    ip1
    <Engine name="Standalone" defaultHost="localhost" jvmRoute="tomcat12"/>

    ip2
    <Engine name="Standalone" defaultHost="localhost" jvmRoute="tomcat13"/>

    好了,apache和tomcat的配置好了,可以访问了。
    这里,再提供一个链接,可以监控和配置负载均衡的各种信息
    http://192.168.1.11/jkstatus或http://my.linuxcoffee.org、jkstatus来访问网站。

    注:需要在web.xml的display-name后面 下加上一段。 这个跟顺序有关的,不然,xml文件会变红哦。
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">
    <display-name>TomcatDemo</display-name>
    <distributable/>
    </web-app>
  • 相关阅读:
    Mybatis 原始dao CRUD方法
    JQuery的焦点事件focus() 与按键事件keydown() 及js判断当前页面是否为顶级页面 子页面刷新将顶级页面刷新 window.top.location
    使用actionerror做失败登录验证
    Java项目中的下载 与 上传
    shiro框架 4种授权方式 说明
    javascript 中数组的创建 添加 与将数组转换成字符串 页面三种提交请求的方式
    序列化表单为json对象,datagrid带额外参提交一次查询 后台用Spring data JPA 实现带条件的分页查询 多表关联查询
    Spring data JPA 理解(默认查询 自定义查询 分页查询)及no session 三种处理方法
    orcal 数据库 maven架构 ssh框架 的全注解环境模版 maven中央仓库批量删除lastupdated文件后依然是lastupdated解决方法 mirror aliyun中央仓库
    EasyUI加zTree使用解析 easyui修改操作的表单回显方法 验证框提交表单前验证 datagrid的load方法
  • 原文地址:https://www.cnblogs.com/danghuijian/p/4400380.html
Copyright © 2011-2022 走看看