1. 为何要做负载均衡?
一般是对性能和价格比的需要,为了能够共享应用服务器的计算能力,用户会采购多个CPU的金蝶阿帕斯应用服务器(Kingdee Apusic Application Server,KAAS)中间件产品,并且安装到多台计算机中,然后将多个应用统一部署在这些KAAS之上。
还有就是保护KAAS安全,现在网络攻击太严重了,因此用户想把服务器放在防火墙后面,前端放一个Apache服务器或者硬件的负载均衡器,哪怕前端被攻击,至少可以保证主页内容不会被篡改。
2. 如何用Apache+Apusic实现LB?
实现前我们需要了解一个概念,LB到底由哪些部分组成,相互之间的关系如何?配置负载均衡需要两个部分组成:负载均衡器和应用服务器集群。负载均衡器不了解具体业务,只知道有哪些KAAS,然后依据一种分配机制将客户请求分配给相应的KAAS。而KAAS接到用户请求,处理完成后就将结果返回给负载均衡器,再返回到客户端。但是HTTP请求都是无状态的,如果用户使用Session机制保存了状态,那么下次再访问时可以通过两种方法处理:
⑴ 利用负载均衡器的会话保持(Session Stick)技术,负载均衡器会记录SessionID和服务器IP,然后将下次请求仍然转发到上次处理的服务器上,但是这种方式如果服务器宕机了,就会使客户丢失信息;
⑵ 利用KAAS的集群功能,将一起工作的服务器配置成集群,相互之间利用会话复制(Session Copy)技术,所有服务器上的会话内容完全相同,请求不需要转发给相同的服务器就可以得到正确响应,但是这种方式会给网络带来较大的负载压力,甚至引起网络风暴。
下面分别是这两种方法的配置过程:
⑴ 配置均衡均衡的会话保持
#httpd.conf(Apache的配置文档,如果想了解Apache相关配置参数,请看参考文献)
#载入重要的模块
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
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
#设置负载均衡分配用的服务器
<Proxy balancer://apusicBalance>
BalancerMember http://1.2.3.4:6888/
BalancerMember http://1.2.3.5:6888/
</Proxy>
#设置代理服务器转发方式,stickysession就是会话保持,JSESSIONID就是Apusic的会话ID,nofailover就是说服务器没有做集群
ProxyPass / balancer://apusicBalance stickysession=JSESSIONID nofailover=On
ProxyPassReverse / balancer://apusicBalance
⑵ 利用KAAS的集群功能,只提供了WEB模块Session复制的例子,其它例子请参考Apusic集群管理文档,在apusic.conf增加的配置如下
<!-- 将应用服务器增加到集群中 -->
<SERVICE
CLASS="com.apusic.cluster.ClusterService"
>
<ATTRIBUTE NAME="ClusterName" VALUE="ApusicCluster"/>
<ATTRIBUTE NAME="LoadWeight" VALUE="100"/>
</SERVICE>
<!-- 使WEB容器的Session支持复制 -->
<SERVICE CLASS="com.apusic.servlet.http.session.SessionService">
<ATTRIBUTE NAME="DefaultSessionTimeout" VALUE="3600"/>
<ATTRIBUTE NAME="MaxSessionsInCache" VALUE="1024"/>
<ATTRIBUTE NAME="SessionInvalidateCheckInterval" VALUE="60"/>
<ATTRIBUTE NAME="SessionSwapCheckInterval" VALUE="30"/>
<ATTRIBUTE NAME="Distributable" VALUE="True"/>
<ATTRIBUTE NAME="Replicable" VALUE="True"/>
</SERVICE>
3. 使用Apache实现LB还有哪些功能?
⑴ 支持缓冲。mod_cache模块。
Sample httpd.conf
#
# Cache配置的例子
# 下面的Cache默认采用disk作为缓存,如果想调整成mem,必须先将disk用#注释,然后删除mem的#注释。
LoadModule cache_module modules/mod_cache.so
LoadModule disk_cache_module modules/mod_disk_cache.so
#LoadModule mem_cache_module modules/mod_mem_cache.so
<IfModule mod_cache.c>
<IfModule mod_disk_cache.c>
CacheRoot c:/cacheroot
CacheEnable disk /
CacheDirLevels 5
CacheDirLength 3
</IfModule>
<IfModule mod_mem_cache.c>
CacheEnable mem /
MCacheSize 4096
MCacheMaxObjectCount 100
MCacheMinObjectSize 1
MCacheMaxObjectSize 2048
</IfModule>
# 当Apache作为Proxy时,不缓存安全部分的代码。下面的例子实际使用时请改成应用自身的情况
CacheDisable http://security.update.server/update-list/
</IfModule>
⑵ 不同的分配机制。
除了已经知道的循环分配机制,将请求依次派发给每个应用服务器;还可以通过loadfactor来进行权重分配,事先依据每个应用服务器的计算能力,将请求依据权重分发给服务器;还可以通过lbmethod流量的压力进行统计,然后将请求分发给服务器。
⑶ 分别在不同的网络层进行代理,一般可以在四层和七层。
这种方法我没有进行实验,待以后补充。
4. 在应用开发阶段要注意哪些事情来满足LB需要?
开发阶段需要注意的内容其实很多,主要就是Session复制和资源死锁的问题。以前项目开发,能够把功能实现就算是完工了,但是用户的需求也在增加,特别是J2EE为分布式计算提供了很好的模型,为开发符合LB标准的程序提供了有利的条件,但是在开发阶段仍然有些工作必须要做,例如:
⑴ 所有保存在Sesion中的类必须要实现Serialable接口,当然还要把Object实现的方法重载,保证你的类被正确序列化了,但是如果没有实现,至少保证系统进行Session复制时不会报错;
⑵ 尽量不要进行长事务操作,尽量不要对数据库进行表级锁,尽量把申请得到的资源进行归还,尽量使用finally保证资源被正确释放,等等…
⑶ 以后继续补充
参考文献:
1. mod_proxy - Apache 2.2 中文版参考手册,
http://doc.chinahtml.com/Manual/ApacheManual/mod/mod_proxy.html
2. mod_cache - Apache 2.2 中文版参考手册
http://doc.chinahtml.com/Manual/ApacheManual/mod/mod_cache.html
3. Apusic集群管理文档
http://infocenter.apusic.com/help/index.jsp?topic=/com.apusic.studio.doc.server/output/eclipse/cluster_management.html
分享到:
相关推荐
Apache2.2+Apusic6.0负载配置指南主要涉及两个关键组件的设置:Apache HTTP服务器和Apusic应用服务器,用于实现负载均衡和高可用性。以下是详细的配置步骤和相关知识点: 1. **Apache2.2的安装**: - 下载Apache ...
Apache 集群配置与 Apusic 应用服务器整合是实现高可用性和负载均衡的重要方法。在这个配置中,Apache 作为前端的负载均衡器,负责接收客户端请求并根据预设策略将其分发给后台的 Apusic 服务器。Apusic 是一个企业...
通过这样的配置,Apache和Apusic集群可以提供高可用性、负载均衡的服务,同时通过性能优化确保系统在高并发场景下的稳定运行。对于大型Web应用,这种架构提供了必要的扩展性和容错性,保证了用户体验的连续性和一致...
本手册旨在指导用户在 Windows 2003 操作系统上安装和部署 Apusic 6.0,旨在帮助用户快速掌握安装和配置 Apusic 6.0 的步骤。 一、安装准备 在开始安装 Apusic 6.0 之前,需要检查硬件和软件要求是否满足以下条件...
本文将深入解析如何在Linux环境下,利用Apache与Apusic搭建应用服务器集群,并实现负载均衡,确保系统高可用性和性能。 #### 一、Linux环境下安装JDK Java Development Kit (JDK) 是运行Java应用程序的基础,首先...
在实际生产环境中,可能还需要根据业务需求进行更复杂的配置,如数据源配置、JMS队列设置、负载均衡策略等。此外,定期备份和更新服务器配置也是必不可少的维护任务,以适应不断变化的业务环境。
本文将详细介绍如何在Apusic服务器中设置数据源的资源引用,并提供具体的配置示例。 #### 二、数据源资源引用的概念 数据源的资源引用是指在Java应用程序中通过特定的命名机制来引用外部资源(如数据库连接池)。...
管理 Apusic Web 服务器的配置文件 apusic.conf 位于安装目录下的 config 目录中,该配置文件包含了 Web 服务器的配置段。通过修改配置段中的可配置属性,可以对 Web 服务器进行管理。 Web 服务器的属性包括: 1. ...
在分布式环境中,Apusic V10支持集群部署,通过负载均衡和故障转移机制,确保服务的高可用性。此外,其提供的热升级和热部署功能使得在不影响服务的情况下进行软件更新成为可能。 总的来说,金蝶Apusic V10应用...
5. 利用金蝶中间件的高可用性和负载均衡特性,保证应用的稳定性和性能。 综上所述,金蝶中间件Apusic MyEclipse10.x、MyEclipse9.x以及Eclipse all-plugins是Java开发人员的强大工具,它们通过深度集成,使得开发者...
【Apusic应用服务器配置管理】 Apusic应用服务器是一款基于Java EE规范的应用服务器,它提供了运行和管理企业级Java应用程序的平台。本文档详细介绍了Apusic应用服务器的配置管理,包括服务器域的管理、J2EE应用的...
在服务器集群中,负载均衡是一个关键部分,它是集群系统中任务分配的核心环节.该文在比较3 种负载均衡策略的基础上分析了JBoss应用服务器集群负载均衡策略...权Apusic应用服务器负载均衡策略进行了分析,给出了其实现方法.
3. **分布式支持**:详述集群配置与管理,支持负载均衡和故障转移,实现高可用性。 4. **兼容性**:列出支持的各种Java标准和规范,如Servlet、JSP、EJB等,以及与其他中间件的集成能力。 5. **扩展性**:讨论插件...
金蝶中间件Apusic Eclipse/MyEclipse插件是一组专为开发者设计的工具,用于在Eclipse和MyEclipse集成开发环境中进行便捷的调试和开发工作。这些插件极大地扩展了Eclipse和MyEclipse的功能,使得在金蝶中间件上进行...
2. **高可用性和可扩展性**:设计用于大规模分布式环境,EAS Apusic支持集群部署,能实现负载均衡和故障转移,确保服务的高可用性。同时,其模块化结构允许灵活的扩展,以适应不断增长的业务需求。 3. **安全管理**...
1. **AASv9-开发插件配置说明.pdf**:这是一份详细指南,介绍了如何配置和使用金蝶Apusic中间件AAS v9版本的开发插件。它通常会包含安装步骤、配置参数、以及如何在Eclipse或MyEclipse中集成这些插件的说明。通过...
5. **集群与负载均衡**:通过集群技术实现多台服务器间的负载均衡,提高系统的可用性和性能。 6. **监控与管理工具**:提供图形化的管理控制台,方便管理员监控服务器状态,进行配置管理和故障排查。 7. **性能优化*...
该攻略主要用于在apusic文件中配置数据库连接,以便在应用程序中使用数据库资源。 1. 配置数据源 在apusic文件中,配置数据源是实现数据库连接的第一步。数据源的配置包括两个部分:JNDI名称和驱动程序类名称。在...
【Apusic SQLServer调优记录】的详细说明 在应对并发压力大、遭受网络攻击以及数据库压力大的情况下,对HP-UX + JDK + Apusic + SQL Server环境进行调优至关重要。在这种环境中,系统需要处理3000至8000并发连接,...