负载均衡与集群.docx

上传人:b****7 文档编号:25313008 上传时间:2023-06-07 格式:DOCX 页数:12 大小:608.06KB
下载 相关 举报
负载均衡与集群.docx_第1页
第1页 / 共12页
负载均衡与集群.docx_第2页
第2页 / 共12页
负载均衡与集群.docx_第3页
第3页 / 共12页
负载均衡与集群.docx_第4页
第4页 / 共12页
负载均衡与集群.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

负载均衡与集群.docx

《负载均衡与集群.docx》由会员分享,可在线阅读,更多相关《负载均衡与集群.docx(12页珍藏版)》请在冰豆网上搜索。

负载均衡与集群.docx

负载均衡与集群

负载均衡与集群

一:

软件集群

1:

WebLogic集群

首先要对Weblogic的内部有一个大概的了解,什么是Domain,Server,Machine,Cluster。

Domain

Domain是WebLogicServer实例的基本管理单元。

所谓Domain就是,由配置为AdminServer的WebLogicServer实例管理的逻辑单元,这个单元是有所有相关资源的集合。

Server

Server是一个相对独立的,为实现某些特定功能而结合在一起的单元。

Machine

Machine是可以对应到服务器所在的物理硬件,可以是Unix或non-Unix类型,可以用来远程管理和监控,用于加强failover管理。

Cluster

Cluster也是一个逻辑概念,用来分组用途相同的服务器实例,一个域中可以有多个集群。

集群用来实现负载均衡和容错。

DomainandServer的关系

一个Domain可以包含一个或多个WebLogicServer实例,甚至是Server集群。

一个Domain中有一个且只能有一个Server担任管理Server的功能,其它的Server具体实现一个

特定的逻辑功能。

配置集群应用的必要条件

a)集群中的所有Server必须位于同一网段,并且必须是IP广播(UDP)可到达的b)集群中的所有Server必须使用相同的版本,包括ServicePack

c)集群中的Server必须使用永久的静态IP地址。

动态IP地址分配不能用于集群环境。

果服务器位于防火墙后面,而客户机位于防火墙外面,那么服务器必须有公共的静态IP地址,只有这样,客户端才能访问服务器

d)要以CLUSTER方式运行,必须有包含CLUSTER许可的LICENSE才行(从Oracle网

站上下载的最新版本已经包含了此许可,可进行Cluster配置)

1.1WebLogic单机集群1.1.1简介

单机集群这种架构将所有的Web应用以及相关的服务应用全部置于集群中的单一WLS(WebLogicServer)实例中,这种架构的优势在于:

易于管理

灵活的负载平衡机制更强的安全控制

1.1.2配置安装WebLogic11g(10.3.2)

在实施集群之前都必须有个规划,比如以下例子:

上述具体的安装方法见手册:

MicrosoftWord文档WebLogic集群安装.docx单服务器版本。

安装部署的时候我们把应用程序(lnwl.war)安装到集群中的所有机器中而不是AdminServer。

AdminServer只用于集群的管理,而不能参与集群事务。

文件的同步是由WebLogic来完成的。

实际上应用程序就是被部署到三个受管理服务器中。

这样我们访问代理服务器,代理服务器会根据情况把访问分发到三个受管理服务器中,实际上真正访问的是7002,7003,7004这三个端口的服务。

1.1.3集群并发测试

在这里我们将通过Apache中所带的ab包(只需要单个文件ab.exe即可)来进行并发访问的模拟测试,使用如下的命令就可以完成压力测试。

ab.exe-n100-c10http:

//192.168.2.106:

8080/lnwl/test.jsp

pause

ab是测试程序的名称

参数n代表请求的总数量

参数c代表并发的请求数

url为要测试压力的页面

1.1.4Session共享问题解决

当集群中的机器需要共享session时则编辑weblogic.xml配置文件放到WEB应用程序的WEB-INF目录下即可。

WebLogic.xml:

(只针对10.3.2版本)

1.2WebLogic多机集群

1.2.1配置安装WebLogic11g(10.3.2)

目标:

建立如下多机版集群:

MicrosoftWord

文档

上述具体的安装方法见手册:

WebLogic集群安装.docx多服务器版本。

1.2.2启动服务器

配置完之后我们就启动服务器并部署应用程序,如下图所示:

部署成功之后:

这样我们访问http:

//192.168.106:

8080就可以看到分发效果。

1.3WebLoigc整合Apache实现负载均衡

Weblogic整合Apache非常简单,分为两步。

1:

安装weblogicmodule扩展模块

在D:

\Oracle\Middleware\wlserver_10.3\server\plugin目录下可以根据操作系统找到对应的版本,本文需要的是mod_wl_22.so,

D:

\Oracle\Middleware\wlserver_10.3\server\plugin\win\32,将mod_wl_22.so放置Apache安装目录的modules文件夹下,如d:

\Apache2.2\modules。

2.配置ApacheHttpServer

打开Apache安装目录下\conf\下的httpd.conf文件,找到Listen配置,默认的是Listen80,将端口80改成8080(和WeblogicProxyServer保持一致,非必须);

在httpd.conf文件的最后加入一段配置如下:

Apache首先加载weblogic的负载均衡模块。

WebLogicCluster后面就是要分发的真实服务器地址。

MatchExpression是拦截的后缀。

这样我们访问http:

//192.168.106:

8080就可以看到分发效果。

2:

Tomcat集群

部署多个Tomcat服务器,用Apache分发请求。

二:

硬件集群

硬件集群主要功能是分发http请求,它在性能上要高于软件的代理功能,但是不如软件负载灵活。

三:

负载均衡

1:

负载均衡算法

平均算法,基于权重算法,循环算法,随机算法。

2:

Apache分发

2.1Apache简介

Apache是一款高性能的HTTP服务器,同时也具备很强的扩展能力,比如分发和反向代理。

所谓的整合就是让apache替换Weblogic的ProxyServer功能。

Apache的分发功能配置简单,功能强大,灵活,可以通过算法来控制分发方式。

Apache有2中分配方式:

a:

平均分配

b:

按权重分配。

按权重分配方法就是给BalancerMember加上loadfactor参数即可,取值范围为1-100,如

下所示:

默认情况下,负载均衡会尽量让各个服务器接受的请求次数满足预设的比例。

如果要改变算法,可以使用lbmethod属性。

如:

lbmethod可能的取值有:

3:

niginx反向代理

高性能的分发和代理服务器

4:

HAproxy

高性能的分发器

四:

分布式服务器中缓存的管理

1:

简介

在分布式系统中,缓存管理是一个比较复杂的东西。

涉及到缓存读写,同步,并发等一系列操作。

实际的系统中,以下几类数据适合放在缓存中:

1:

很少被修改的数据

2:

不是很重要的数据,偶尔允许并发问题

3:

不会被并发访问的数据

4:

参考数据

2:

缓存管理的实现

2.1:

自己实现一个缓存管理器

定义一个缓存接口,包括缓存的写入,读取,更新,保存到磁盘,同步等,并考虑并发与事务。

具体的缓存管理器的设计有待全面考量。

2.2:

实现hibernate的二级缓存

如果不想直接实现一个在分布式环境中的缓存管理器。

那么我们可以用hibernat的二级缓存。

Hibernate的二级缓存分为为事物范围和进程范围。

缓存中的数据被复制到集群环境中的每个进程节点,通常采用对象的散装数据形式保存。

Hibernate的二级缓存的实现要借住第三方的组件:

首选的有EHCache和JbossCache。

1:

EHCache是一个使用比较广泛的,但更适用于单机版。

2:

JbossCache是集群范围的缓存,支持事务并发策略,可查询缓存,适用于多机版

二者都是通过配置文件来集成到hibernate中,具体的实现方式详见文档:

hibernate二级缓存的实现.docx。

五:

工程评审平台集群的实现

1.平台性能的分析

评审平台一直给人有一种慢的感觉,但一直没有具体去分析是哪使得它慢,都把矛头指向了数据库,电子化评审平台自身的代码的设计,不可否认这两项指标直接影响着性能,但是还有其他的性能指标。

比如一个HTTP请求,包括网页的所有元素:

图片,JS,CSS等。

一:

在portal中访问电子化评审和直接访问电子化评审。

首先选取几类网页作为测试样本,分别为不带查询数据库的页面,查询少量数据的页面,查询大量数据的页面。

A:

不带查询数据库的页面,导入评审计划。

我们看到在portal中请求该页面所花的时间为1.75s。

这个时间包括请求portal自身的页面元素和导入计划页面。

以上是portal请求自身js所花的时间,也就是YUI框架的js,所花的时间都比较长。

以上是请求导入计划的页面所花的时间,比较少,这里不包括一些导入计划的其他页面。

我们单独请求导入计划页面看看所耗时间:

这里所花的时间为1s。

时间为在portal中的近1/2

我们第二次请求这个页面看看效果:

还是1.72s。

也就是说性能没有改进,还是再一次请求的poral的js,css以及图片,这些元素没有在浏览器端缓存下来。

B:

请求查询少量数据的页面

评审计划查询页面

所花时间为1.69s.

单独访问评审计划查询页面如下:

所花时间为801ms,时间为在portal中的1/2

C:

访问查询数据比较多的页面

资料预审页面

所花时间为1.36s。

单独访问该页面效果如下:

所花时间为990ms。

本次测试所花时间都比较少,是因为服务器比较好,访问的人很少。

但我们也看出了一些问题,就是在portal那块,前端的(JS,css)未做任何的优化,而portal又大量使用了YUI的JS来实现一些放大,缩小等效果。

总结一下,我们可以看看一下

二:

分析电子化评审模块的性能

访问其中的一个页面:

我们看看具体每个请求所花的时间:

这些是所花时间比较多的请求,后台代码花的时间最多为78ms,然后就是richfaces所花的时间。

2.解决方案:

在portal中优化前端元素。

在子系统中主要是优化78ms这块。

因为一些原因,我们在系统中都未开启hibernate的一级缓存。

这部分可以优化,然后就是引入hibernate的二级缓存。

降低应用程序访问数据库的频率。

然后就是加集群。

相信在这些的优化之后,性能肯定有所提升

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 工学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1