收藏 分享(赏)

linux下配置tomcat集群的负载均衡.docx

上传人:w89153 文档编号:6211563 上传时间:2019-04-02 格式:DOCX 页数:7 大小:26.24KB
下载 相关 举报
linux下配置tomcat集群的负载均衡.docx_第1页
第1页 / 共7页
linux下配置tomcat集群的负载均衡.docx_第2页
第2页 / 共7页
linux下配置tomcat集群的负载均衡.docx_第3页
第3页 / 共7页
linux下配置tomcat集群的负载均衡.docx_第4页
第4页 / 共7页
linux下配置tomcat集群的负载均衡.docx_第5页
第5页 / 共7页
点击查看更多>>
资源描述

1、linux 下配置 tomcat 集群的负载均衡一、首先了解下与集群相关的几个概念集群:集群是一组协同 工 作的服务实体,用以提供比单一服务实体更具扩展性与可用性的服务平台。在客户端看来,一个集群就象是一个服务实体,但 事实上集群由一组服务实体组成。与单一服务实体相比较,集群提供了以下两个关键特性: 可扩展性集群的性能不限于单一的服务实体,新的服 务实体可以动态地加入到集群,从而增强集群的性能。 高可用性集群通过服务实体冗余使客户端免于轻易遇到 out of service 的警告。在集群中,同样的服务可以由多个服务实体提供。如果一个服务实体失败了,另一个服务实体会接管失败的服务实体。集群提供

2、的从一个出 错的服务实体恢复到另一个服务实体的功能增强了应用的可用性。为了具有可扩展性和高可用性特点,集群的必须具备以下两大能力: 负 载均衡负载均衡能把任务比较均衡地分布到集群环境下的计算和网络资源。 错误恢复由于某种原因,执行某个任务的资源出现故障,另一服 务实体中执行同一任务的资源接着完成任务。这种由于一个实体中的资源不能工作,另一个实体中的资源透明的继续完成任务的过程叫错误恢复。负载均衡 和错误恢复都要求各服务实体中有执行同一任务的资源存在,而且对于同一任务的各个资源来说,执行任务所需的信息视图(信息上下文)必须是一样的。集 群分类:Linux 集群主要分成三大类( 高可用集群, 负载

3、均衡集群,科学计算集群 )高可用集群( High Availability Cluster)常见的就是 2 个节点做 成的 HA 集群,有很多通俗的不科学的名称,比如 “双机热备“, “双机互备“, “双机“.高可用集群解决的是保障用户的应用程序持续对外提供服 务的能力。 (请注意高可用集群既不是用来保护业务数据的,保护的是用户的业务程序对外不间断提供服务,把因软件/硬件/人为造成的故障对业务的影响降低到最小程 度)。负载均衡集群(Load Balance Cluster)负载均衡系统:集群中所有的节点都处于活动状态,它们分摊系统的工作负载。一般Web 服 务器集群、 数据库集群 和应用服务器

4、集群都属于这种类型。负载均衡集群一般用于相应网络请求的网页服务器,数据库服务器。这种集群可以在接到请求时,检查接受请求较少,不繁忙的服务器,并把请求转到这些服务器 上。从检查其他服务器状态这一点上 看,负载均衡和容错集群很接近,不同之处是数量上更多。科学计算集群(High Performance Computing Cluster)高性能计算(High Perfermance Computing)集群,简称 HPC 集群。这类集群致力于提供单个计算机所不能提供的强大的计算能力。负载均衡与双机热备的区别负载均衡是在这多台服务器之上增加了一台负载均衡服务器,负载均衡服务器的作用是把用户的请求平均分

5、配到每个节点;增加集群整体的处理能力;实现网络访 问的均衡。双机热备相当于 2 台服务器其中有一台是另一台的备机,也可以互为备机;主机在运行服务时,备机处于检测状态,主机发生故障后,备机 将接管主机的服务。负载均衡是解决服务器压力过大,网络请求大量并发而设计的产品; 负载均衡的优点:WEB 访问流畅,用户请求平均分布在每个节点上。双机热备是为保障 24*7 小时高可用不停机而推出的产品 ; 双机热备的优点是:能保障用户服务不间断。负载均衡的缺点:适用静态 WEB,如果是数据库将不起作用,数据库的多向同步目前还没有完全解决的 方案。双机热备缺点:用传统加加阵列的方式增加了存储空间,同样也形成了单

6、点故障;有可能双机热备成为虚设,因为一旦阵列崩溃,服务也意味这 停止。Tomcat 集群的三种负载均衡方式优缺点对照1.使用 DNS 轮询.2.使用 Apache R-proxy 方式。3. 使用 Apache mod_jk 方式.DNS 轮询的缺点是,当集群中某台服务器停止之后,用户由于 dns 缓存的缘故,便无法访问服务,必 须等到 dns 解析更新,或者这台服务器重新启动。还有就是必须把集群中的所有服务端口暴露给外界,没有用 apache 做前置代理的方式安全,并 且占用大量公网 IP 地址,而且 tomcat 还要负责处理静态网页资源,影响效率。优点是集群配置最简单,dns 设置也非常

7、简单。R- proxy 的缺点是,当其中一台 tomcat 停止运行的时候,apache 仍然会转发请求过去,导致 502 网关错误。但是只要服务器再启动就不存 在这个问题。mod_jk 方式的优点是,Apache 会自动检测到停止掉的 tomcat,然后不再发请求过去。缺点就是,当停 止掉的 tomcat 服务器再次启动的时候,Apache 检测不到,仍然不会转发请求过去。R-proxy 和 mod_jk 的共同优点是.可 以只将 Apache 置于公网,节省公网 IP 地址资源。可以通过设置来实现 Apache 专门负责处理静态网页,让 Tomcat 专门负责处理 jsp 和 servle

8、t 等动态请求。共同缺点是:如果前置 Apache 代理服务器停止运行,所有集群服务将无法对外提供。R-proxy 和 mod_jk 对静态页面请求的处理,都可以通设置来选取一个尽可能优化的效果。这三种方式对实现最佳负载均衡都有一定不足,mod_jk 相对好 些,可以通过设置 lbfactor参数来分配请求任务。二、配置 tomcat 集群的方法( Apache mod_jk 方式)环 境 linux redhat 4 台,安装 tomcat 和 apache,和 jdk 配置的过程过于基础,略过,这里主要讲述如何配置版本: linux redhat server 5.4 企业版 tomcat

9、6.0 apache2.2 jdk1.61.依次在前三台机器安 装 tomcat,jdk 并配置环境变量等信息;2.在第四台机器安装 apache3.配置 apache 服务器a:在 apache 网站或其他站点下载 mod_jk-1.2.26-httpd-2.2.4.so 文件(不一定非要这个版本) ,将该文件复制到 apache 的 modules 目录,并设置读执行权限 用 chmod 777 *或其他命令b:在 apache_home 目录下的 conf/httpd.conf 文件中添加LoadModule jk_module modules/mod_jk-1.2.26-httpd-2

10、.2.4.so JkWorkersFile conf/workers.properties JkMount /* lbcontroller 代码解释LoadModule jk_module modules/mod_jk-1.2.26-httpd-2.2.4.so /表示载入 JK 模块JkWorkersFile conf/workers.properties /tomcat 实例配置JkMount /* lbcontroller /设置 apache 分发器,/*表示 apache 将所有文件都由分发器lbcontroller 进行分发,你可以自行设置*.jsp,*.do 等c: 配置 wor

11、kers.properties 文件在 apache_home 下 conf 目录中新建 workers.properties 文 件,输入以下内容worker.list=lbcontroller #Tomcat1 实例配置 worker.tomcat80.host=10.71.144.80worker.tomcat80.port=8009 worker.tomcat80.type=ajp13 # 分发权重 值越大负载越大 worker.tomcat1.lbfactor = 1 #Tomcat2 实例配置 worker.tomcat81.host=10.71.144.81worker.tomc

12、at81.port=8009 worker.tomcat81.type=ajp13 # 分发权重 值越大负载越大 worker.tomcat81.lbfactor = 1 #Tomcat3 实例配置 #负载均衡分发控制器 worker.tomcat82.host=10.71.144.82worker.tomcat82.port=8009 worker.tomcat82.type=ajp13 # 分发权重 值越大负载越大 worker.tomcat82.lbfactor = 1 worker.lbcontroller.type=lb worker.lbcontroller.balance_wor

13、kers=tomcat80,tomcat81,tomcat82worker.lbcontroller.sticky_session=True 代 码解释worker.list=lbcontroller /内容即为 httpd.conf 文件中的分发器名称。需要注意的内容 是,tomcat 实例名称worker.tomcat80.host= . worker.tomcat82.host= . /这里就是 tomcat80 和 tomcat82 必须与之后 tomcat 中的 server.xml 中 jvmRoute 值一致4. 配置 tomcat 集群配置每个 tomcat 目录下的 serv

14、er.xml 文件,具体修改内容如下a: Engine 配置修 改前修改后具 体 tomcat 中 jvmRoute 的值根据在 workers.properties 的配置,注意 IP 地址、tomcat 实例名称和 jvmRoute 值必须 一一对应,其他的 tomcat 配置方法一致b:Cluster 配置 修 改后,去掉注释并添加一些内容如下上述配置跟 tomcat 官方建议的配置,去掉了如果不去掉这部分,则 tomcat 启动会报“FarmWarDeployer can only work as host cluster subelement!.“c:session 复制配置tomc

15、at 集群中的 session 管理,主要有两种方式:1).粘性 session表示从同一窗口发来的请求都将有集群中的同一个 tomcat 进行处理。配 置方式是在上面workers.properties 文件中worker.lbcontroller.sticky_session=True 粘性 session 的好处在不会在不同的 tomcat 上来回跳动处理请求,但是坏处是如果处理该session 的 tomcat 崩溃,那么之后 的请求将由其他 tomcat 处理,原有 session 失效而重新新建一个新的 session,这样如果继续从 session 取值,会抛出 nullpoin

16、ter 的访问异常。2).session 复制session 复制是指 tomcat 彼此之间通过组播方式将 session 发到各个 tomcat 实例上,如果其中一个访问出错,则另外 tomcat 仍然具有有效的 session 内容,从而能正常接管其session。坏处是当 tomcat 实例很多,或者用户在 session 中有大量操作时,组播发送的信息量十分惊人。session 复制配置则是在发布的 web 应用程序中的 web.xml 中添加此外,session 复制所需的 JDK 必须是 JDK 5.0 及其以上版本5.测试配置新建一个 jsp 页面,写入如下代码,保存 inde

17、x.jsp,分别在 tomcat 的 webapp 目录下建 立ydl 文件夹,将写好的 index.jsp 文件上传到 3 台服务器的 tomcatwebappydl 目录下测试的 index.jsp 文件内容Cluster App TestServer Info:“);%ID “ + session.getId()+“);/ 如果有新的 Session 属性设置String dataName = request.getParameter(“dataName“);if (dataName != null session.setAttribute(dataName, dataValue);ou

18、t.print(“Session 列表“);Enumeration e = session.getAttributeNames();while (e.hasMoreElements() String name = (String)e.nextElement();String value = session.getAttribute(name).toString();out.println( name + “ = “ + value+“);System.out.println( name + “ = “ + value);%名称:值:重 启 apache 服务器和三个 tomcat 服务器, 到

19、此集群负载均衡已配置完成。测试负载均衡先测试 apache,访问http:/10.70.144.80/ydl/index.jsp看 能够运行,能运行,则已建立负载均衡关闭和启动任何一个 tomcat,另外两个 tomcat 前台打印相关 日志信息并自动复制一份sessiona:先启动 apache 服务器 httpdb:启动名为 tomcat80 的服务器前台启动 tomcat 输出日志方法#cd /home/support/tomcat-apache6.0/bin#./catalin.sh run在浏览器中输入访 问地址 http:/10.70.144.80/ydl/index.jsp可 以看到请求被转发到了 tomcat80 进行处理c:启动 tomcat81可以发现,tomcat81 启动后搜索到了 tomcat2 实例, 并进行了 session 复制,在 tomcat2的控制台也可以找到输出打印日志关闭 tomcat80(ctrl+c)后继续刷新 url 访问。 tomcat81 控制台中输出的 session 依然与之前 tomcat80 中的一致,并且在 session 中保存的属性值仍然有效。

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

当前位置:首页 > 网络科技 > linux/Unix相关

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报