设为首页 收藏本站
查看: 747|回复: 0

[经验分享] Tomcat集群技术部署文档

[复制链接]

尚未签到

发表于 2018-12-5 06:21:57 | 显示全部楼层 |阅读模式
1.1 术语定义

服务软体是b/s或c/s结构的s部分,是为b或c提供服务的服务性软件系统。

服务硬体指提供计算服务的硬件、比如pc机、pc服务器。

服务实体通指服务软体和服务硬体。

客户端指接受服务实体服务的软件或硬件。

1.2 两大关键特性

集群是一组协同工作的服务实体,用以提供比单一服务实体更具扩展性与可用性的服务平台。在客户端看来,一个集群就象是一个服务实体,但事实上集群由一组服务实体组成。与单一服务实体相比较,集群提供了以下两个关键特性:

·  可扩展性--集群的性能不限于单一的服务实体,新的服务实体可以动态地加入到集群,从而增强集群的性能。

·  高可用性--集群通过服务实体冗余使客户端免于轻易遇到out of service的警告。在集群中,同样的服务可以由多个服务实体提供。如果一个服务实体失败了,另一个服务实体会接管失败的服务实体。集群提供的从一个出错的服务实体恢复到另一个服务实体的功能增强了应用的可用性。

1.3 两大能力

为了具有可扩展性和高可用性特点,集群的必须具备以下两大能力:

·  负载均衡--负载均衡能把任务比较均衡地分布到集群环境下的计算和网络资源。

·  错误恢复--由于某种原因,执行某个任务的资源出现故障,另一服务实体中执行同一任务的资源接着完成任务。这种由于一个实体中的资源不能工作,另一个实体中的资源透明的继续完成任务的过程叫错误恢复。

负载均衡和错误恢复都要求各服务实体中有执行同一任务的资源存在,而且对于同一任务的各个资源来说,执行任务所需的信息视图(信息上下文)必须是一样的。

1.4 两大技术

实现集群务必要有以下两大技术:

·  集群地址--集群由多个服务实体组成,集群客户端通过访问集群的集群地址获取集群内部各服务实体的功能。具有单一集群地址(也叫单一影像)是集群的一个基本特征。维护集群地址的设置被称为负载均衡器。负载均衡器内部负责管理各个服务实体的加入和退出,外部负责集群地址向内部服务实体地址的转换。有的负载均衡器实现真正的负载均衡算法,有的只支持任务的转换。只实现任务转换的负载均衡器适用于支持ACTIVE-STANDBY的集群环境,在那里,集群中只有一个服务实体工作,当正在工作的服务实体发生故障时,负载均衡器把后来的任务转向另外一个服务实体。

·  内部通信--为了能协同工作、实现负载均衡和错误恢复,集群各实体间必须时常通信,比如负载均衡器对服务实体心跳测试信息、服务实体间任务执行上下文信息的通信。

具有同一个集群地址使得客户端能访问集群提供的计算服务,一个集群地址下隐藏了各个服务实体的内部地址,使得客户要求的计算服务能在各个服务实体之间分布。内部通信是集群能正常运转的基础,它使得集群具有均衡负载和错误恢复的能力。

集群配置




从上图可知,由服务实体1、服务实体2和负载均衡器组成了一个集群。服务实体1和服务实体2参 与对客户端的服务支持工作,均衡负载器为客户端维护集群的单一影像。集群实体间通过内部的通信网交流信息,这种交流机制一般采用组播协议。负载均衡器通过 内部通信网探测各服务实体的心跳信息,服务实体间通过内部通信网完成任务资源的传播。可以看出,配置集群主要由配置服务实体和配置负载均衡器两部分组成。 本文使用tomcat 4.12、apache 2.0.43配置集群环境,相关软件的部署图如下:


服务实体1/2,负载均衡器可以部署在不同的机器上,也可以在同一机器上,本文环境为同一机器。

2.1 准备软件

  IXDBA.NET社区论坛
2.2 配置负载均衡器

在apache下配置负载均衡器分为三步,注意每次修改httpd.conf和workers2.properties时不要忘了重新启动apache。

·  第一步,安装和调试apache

负载均衡器jk2模块是apache www 服务的插件,所以配置负载均衡器就得先安装apache。本文下载的是windows版本 2.0.43,执行setup.exe并回答一些简单问题就可完成apache的任务。值得注意的是,安装并启动apache后如果apache对http://localhost/ 地址没反应,你得修改apache安装路径下htdocs目录下的index.html.xx文件,比如把index.html.en改成index.html。

·  第二步,安装jk2

把下载到的 mod_jk2-2.0.43.dll改成mod_jk2.dll放到apache的modules目录下,修改apache的httpd.conf,即在LoadModule foo_module modules/mod_foo.so 行下插入mod_jk2模块的装载信息:



# Example:

# LoadModule foo_module modules/mod_foo.so

#

LoadModule jk2_module modules/mod_jk2.dll


·  第三步,配置jk2

jk2的配置全在一个配置文件中,文件名为workers2.properties,和apache 的httpd.conf放在同一个目录下。以下是这个文件的内容:

[uri:/*]

group=lb:lb1

#++++++++++++++++++++++++++++++++++++++++++

  对于jk2模块的负载均衡配置可参见相关站点,值得提及的是jk2的负载均衡还支持权重分配等优秀功能。
2.3 配置tomcat

同属于一个集群下的两个服务实体,要求功能的同一性,所以我们可先安装和配置第一个tomcat,接着拷贝形成第二个tomcat,最后配置第二个tomcat。

2.3.1安装第一个tomcat

安装tomcat 非常简单,本文就不再描述。我们假设第一个tomcat的安装路径为d:\tomcat1。

拷贝tomcat-javagroups.jarjavagroups.jard:\tomcat1\ server\lib 路径下

2.3.2配置第一个tomcat

2.3.2.1 配置jk2

tomcat 中的jk2 connector缺省端口为8009,为了在一台机器上运行两个tomcat,修改D:\Tomcat1\conf\jk2.properties,设置jk2 connector的端口为11009,整个文件内容如下:


#++++++++++++++

channelSocket.port=11009

#++++++++++++++


2.3.2.2 修改server.conf

首先为了让一台机器上运行两个tomcat,修改server.conf的tomcat 停止指令监听端口:


  改为



然后打开JK2 AJP connector ,关闭其它connector,下面是JK2 AJP 1.3的样子,这里已把它的端口改为11009:




   
               port="11009" minProcessors="5" maxProcessors="75"

               enableLookups="true" redirectPort="8443"

               acceptCount="10" debug="0" connectionTimeout="20000"

               useURIValidationHack="false"

               protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler"/>


接着配置需要集群支持的webapp(比如examples) 的context,添加如下


        protocolStack="UDP(mcast_addr=228.1.2.3;mcast_port=45566;ip_ttl=32):PING(timeout=3000;num_initial_members=6):FD(timeout=5000):VERIFY_SUSPECT(timeout=1500):

  pbcast.STABLE(desired_avg_gossip=10000):pbcast.NAKACK(gc_lag=10;
  retransmit_timeout=3000):UNICAST(timeout=5000;min_wait_time=2000):
  MERGE2:FRAG:pbcast.GMS(join_timeout=5000;join_retry_timeout=2000;       shun=false;print_local_addr=false)">
  
注意protocolStack的值必须在一行内写完。

2.3.3配置第二个tomcat

我们先把已经配好的第一个tomcat复制一份,形成第二个tomcat,假设路径为d:\tomcat2。

2.3.3.1 配置jk2

修改D:\Tomcat2\conf\jk2.properties,设置jk2 connector的端口12009,整个文件内容如下:



#++++++++++++++

channelSocket.port=12009

#++++++++++++++


2.3.3.2 修改server.conf

有了第一个tomcat的配置我们只需修改server.conf的tomcat 停止指令监听端口:


改为



然后设置JK2 AJP connector 端口为12009



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-643342-1-1.html 上篇帖子: 64位windows安装tomcat支持jsp 下篇帖子: 解析同一系统安装RPM包的tomcat与压缩包tomact同时使用问题
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表