`
sheungxin
  • 浏览: 105899 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

负载均衡之Apache

阅读更多
  • 测试环境
Apache:2.4.25
web server:apache-tomcat-8.0.18
Jdk:1.8
操作系统:Windows7

  • Apache下载及配置(免安装版)
官网下载:http://httpd.apache.org/
找到Apache下conf目录中httpd.conf文件,进行以下调整:
#Define SRVROOT "/Apache24" 》Define SRVROOT "D:/MyTest/tomcat_cluster/Apache24"  #指向安装目录

安装Apache主服务,管理员权限打开cmd,执行:httpd.exe -k install -n Apache24 ,Apache24为服务名可自定义

安装位置bin目录下双击ApacheMonitor.exe,打开界面窗口,选择服务,点击start开启服务

浏览器访问http://localhost,出现“IT WORKS”界面。默认监听80端口,被占用无法启动

服务卸载,管理员权限打开cmd,执行:sc delete Apache24

  • tomcat集群配置
</web-app>上面添加<distributable/>,表明集群下某一结点生成或改变session,将广播到集群下的其它节点

单机测试需要更改tomcat端口号,避免端口冲突

在Engine标签内添加jvmRoute属性,自定义节点名称,例如:tomcat1
<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">
将Cluster标签注释打开
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>

  • Apache与tomcat集成
mod_proxy_balancer、mod_jk两种方式,mod_jk的设置项更多。具体比较可参考:
引用

首先要在httpd.conf引入配置文件:
#include conf/mod_proxy_balancer.conf
include conf/mod_jk.conf

mod_proxy_balancer.conf
#AH01177: Failed to lookup provider 'shm' for 'slotmem': is mod_slotmem_shm loaded??
LoadModule slotmem_shm_module modules/mod_slotmem_shm.so
#AH02432: Cannot find LB Method: byrequests
LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so

LoadModule proxy_module modules/mod_proxy.so  
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so  
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so  
LoadModule proxy_connect_module modules/mod_proxy_connect.so    
LoadModule proxy_http_module modules/mod_proxy_http.so

<Proxy balancer://testCluster>
  BalancerMember ajp://127.0.0.1:6009 loadfactor=3
  BalancerMember ajp://127.0.0.1:7009 loadfactor=1
  #BalancerMember http://127.0.0.1:6080 loadfactor=3
  #BalancerMember http://127.0.0.1:7080 loadfactor=1
</Proxy>
ProxyPass / balancer://testCluster/
以上为mod_proxy_balancer方式的配置文件,需要加载所需的.so支持模块。前两个模块的注释为测试时遇到的错误发现需要增加的模块支持。Proxy balancer中支持ajp、http两种方式,建议ajp,两者对比分析:
引用

mod_jk.conf
#加载mod_jk Module 
LoadModule jk_module modules/mod_jk.so
#指定workers.properties文件路径
JKWorkersFile conf/workers.properties
#指定请求交给tomcat处理,"controller"为在workers.propertise里负载分配控制器
JKMount /* controller
mod_jk.so为依赖的模块,都说在Apache官网上下载,没有找到。网上下了个,见附件。
JKMount /* 分流所有请求,可调整通配符分流指定请求,例如:/*.action

workers.properties
worker.list=controller,tomcat1,tomcat2

worker.tomcat1.port=6009 #ajp13 端口号
worker.tomcat1.host=localhost #tomcat的主机地址,如不为本机,请填写ip地址 
worker.tomcat1.type=ajp13
worker.tomcat1.lbfactor=1 #server的加权比重,值越高,分得的请求越多

worker.tomcat2.port=7009
worker.tomcat2.host=localhost
worker.tomcat2.type=ajp13
worker.tomcat2.lbfactor=1

worker.controller.type=lb
worker.controller.balance_workers=tomcat1,tomcat2 #指定分担请求的tomcat 
worker.controller.sticky_session=false
配置了两个tomcat节点,节点名称分别为tomcat1、tomcat2,对应tomcat陪住中的jvmRoute。

sticky_session设置注意点,未验证
引用
worker.controller.sticky_session,设置为1或true使用粘着session,设置为0或false不使用粘着session。如果sticky_session设为true时,建议sticky_session_force设为false,此参数表明如果集群中某台服务器在多次请求没有响应后,将转发当前的请求到其它服务器上处理;sticky_session=false时,影响比较大,会导致转发到其它服务器上的请求,找不到原来的session,所以如果此时请求中有读取session中某些信息的话,就会导致应用的null异常。sticky_session、sticky_session_force的默认值分别为true,false。

sticky_session   sticky_session_force             含义
     true             false            SESSION会复制,有粘性
     true             true             SESSION不复制,有粘性
     false            false            SESSION会复制,无粘性
     false            true             SESSION会复制,无粘性

原文地址:http://www.linuxidc.com/Linux/2012-02/53270.htm


  • jeesite项目集成测试
jeesite使用shiro,自定义sessionid,因此不依赖tomcat的session同步机制,只需要开启负载功能即可,即web.xml中不需要添加<distributable/>

分布式环境下需要实现session共享,jeesite自身提供ecache共享方案,切换ehcache-local为ehcache-rmi,只需要更改配置文件jeesite.properties中参数ehcache.configFile的路径为cache/ehcache-rmi.xml

ecache集群同步方案有Terracotta、RMI、JMS、JGroups、EhCache Server,本文中使用RMI,实际生产环境下可以使用EhCache Server搭建独立的缓存服务器

在实际测试时,每次切换节点shiro自定义的sessionid都会变好,花费了我很多时间,快奔溃了,各种查资料、看shiro源码。也猜测过可能是cache同步的问题,简单做了下测试,发现有进行同步。又去查其它的问题,走了很多弯路,最后发现还是cache的问题。jeesite下默认的ehcache-rmi.xml配置是需要进行调整的,activeSessionCache监听工厂的参数replicateAsynchronously=true、replicateUpdatesViaCopy=false需要调整,调整replicateAsynchronously=false、replicateUpdatesViaCopy=true,或者replicateUpdatesViaCopy=true、asynchronousReplicationIntervalMillis=200。原因在于cache节点间异步复制有时间间隔,切换节点时可能复制未完成。因此,应根据cache实际应用场景采用同步复制或者异步复制,异步复制时应注意间隔时间。

但在实际测试时,不关是同步,还是调整复制间隔时间,都存在登录瞬间切换节点获取不到cache的情况。但是使用nginx没有问题,没发现与apache的差异在哪里。当然,现在nginx用的比较多,ehcache也有更好的替换方案

  • 参考资料
深入探讨在集群环境中使用 EhCache 缓存系统
引用

一个项目两个web模块会导致shiro的session污染
引用

Shiro用ehcache缓存session,关于JSESSIONID失效报错问题
引用

Tomcat集群配置
引用
0
0
分享到:
评论

相关推荐

    apache配置负载均衡

    Apache 配置负载均衡实现访问请求分流提高访问性能 Apache 配置负载均衡是将所有用户的访问压力分散到多台服务器上,也可以分散到多个 Tomcat 里,提高访问性能。负载均衡的主要目标是将用户的访问请求分流到多个...

    Apache负载均衡实现

    Apache负载均衡实现是一种高效的方法,用于在多台服务器之间分散网络流量,以提高系统的可用性和响应速度。在本文中,我们将深入探讨如何使用Apache HTTP Server作为反向代理,实现负载均衡的功能。 首先,Apache ...

    负载均衡apache

    Apache 负载均衡是一种网络技术,用于在多台服务器之间分发网络流量,从而提高系统的可用性和响应速度,防止单点故障,并优化资源利用。Apache HTTP Server 提供了 mod_proxy 模块来实现这一功能,它允许你将来自...

    apache服务器负载均衡方案

    ### Apache服务器负载均衡方案 #### 一、概述 在现代互联网应用中,随着访问量的增加,单一服务器往往难以承担高并发请求的压力。为了解决这一问题,采用负载均衡技术来分散请求到多个服务器上变得至关重要。...

    Apache负载均衡

    Apache负载均衡是网络服务优化的一种策略,通过将网络流量分散到多个服务器,以提高系统响应速度,提升服务的可用性和可靠性。在本场景中,我们关注的是Apache2.2与Tomcat7的集成,用于实现Web应用的负载均衡。...

    apache2.2.4 负载均衡.txt

    ### Apache 2.2.4 负载均衡配置详解 #### 一、负载均衡的重要性与背景 随着网站流量的增长及用户体验需求的提高,单一服务器往往难以满足高性能、高可用性的要求。因此,通过负载均衡技术来分散请求到多个服务器上...

    Apache+tomcat负载均衡

    Apache+Tomcat的负载均衡配置就是为了解决这一问题。 负载均衡的基本思想是将来自用户的请求分发到多个后端服务器,这样可以避免任何单一服务器过载,同时提高整体服务的可靠性和响应时间。Apache通常通过其模块mod...

    反向代理负载均衡 Apache + Tomcat集群

    反向代理负载均衡 Apache + Tomcat集群 多的我也不多说了 看文档

    apache+tomcat集负载均衡

    Apache 和 Tomcat 集群负载均衡是一种常见的高可用性和可扩展性解决方案,它通过将请求分散到多个服务器上,确保即使单个服务器出现问题,整个系统仍能保持正常运行,并且能够处理更多的并发请求。 首先,我们需要...

    Apache Tomcat 负载均衡

    Apache Tomcat负载均衡是分布式系统中关键的一环,旨在通过分散服务器请求,提高系统的可用性和响应速度,同时增强系统的容错能力。本文将基于提供的文件信息,深入解析Apache Tomcat负载均衡的配置与实现机制。 ##...

    apache 负载均衡集群

    Apache 负载均衡集群是一种优化Web服务器性能和可靠性的技术。通过将工作负载分散到多个服务器上,这种集群能够确保即使单个服务器出现故障,系统仍能继续提供服务,从而提高了服务的可用性和响应速度。Apache 负载...

    Apache Http Server的安装与配置负载均衡手册

    使用Apache Http Server作为负载均衡的详细配置方法,手册中详细记录了其作为反向代理服务器代理后端2台Web Server的过程。

    【负载均衡】在centos下面做apache和tomcat的负载均衡

    【负载均衡】在CentOS下面做Apache和Tomcat的负载均衡是一个常见的Web服务器优化策略,目的是提高服务的可用性、可扩展性和响应速度。这里主要涉及三个关键文件:httpd.conf(Apache的主要配置文件)、mod_jk.conf...

    Tomcat +Apache实现负载均衡

    在Windows环境下,通过Apache和Tomcat实现负载均衡是一种常见的Web服务器优化策略,可以提高系统的可用性和响应速度。以下是详细的配置步骤和相关知识点: 1. **Apache安装**: - 下载Apache HTTP Server的源码并...

    Apache与Tomcat整合教程(服务器负载均衡)

    4. **配置负载均衡**:在Apache的配置文件中设置负载均衡策略,如上述的轮询、最少连接数等。 5. **测试与优化**:部署应用后,进行测试以确保所有服务器都能正常工作。根据实际需求调整负载均衡策略和服务器配置,...

    apache 反向代理实现 负载均衡

    Apache反向代理是一种网络服务器配置技术,用于将客户端请求转发到后端服务器集群,从而实现负载均衡。在高流量网站或应用中,反向代理能够有效地分发流量,提高服务的稳定性和响应速度,同时也提供了更好的可扩展性...

    apachetomcat负载均衡整合文档.pdf

    Apache Tomcat 负载均衡整合是通过特定的配置实现多台Tomcat服务器协同工作,以提高应用的可用性和响应速度。在这个过程中,Apache HTTP Server作为前端代理,负责接收客户端请求,并根据预设的策略将请求分发到后端...

    Apache负载均衡器配置

    ### Apache负载均衡器配置详解 #### 一、背景介绍 在现代互联网应用中,随着访问量的不断增加,单台服务器往往难以满足高并发的需求。为了提高系统的可用性和扩展性,通常采用集群技术来分担压力。Jboss作为一款...

    Apache,Tomcat集群和负载均衡

    Apache,Tomcat集群和负载均衡包括了apache-tomcat-5.5.29.zip,apache_2.2.4-win32-x86-no_ssl.msi,mod_jk-1.2.28-httpd-2.2.3.so,ApacheTomcat整合文档.doc,Apache,Tomcat集群和负载均衡教程.doc,Tomcat负载...

Global site tag (gtag.js) - Google Analytics