博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
多台服务器Tomcat集群
阅读量:4169 次
发布时间:2019-05-26

本文共 11796 字,大约阅读时间需要 39 分钟。

集群背景介绍
1.1 术语定义

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

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

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

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

1.2 两大关键特性

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

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

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

1.3 两大能力

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

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

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

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

1.4 两大技术

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

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

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

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

(一)环境说明
(1)服务器有4台,一台安装apache,三台安装tomcat

(2)apache2.0.55、tomcat5.5.15、jk2.0.4、jdk1.5.6或jdk1.4.2

(3)ip配置,一台安装apache的ip为192.168.0.88,三台安装tomcat的服务器ip分别为192.168.0.1/2/4

(二)安装过程
(1)在三台要安装tomcat的服务器上先安装jdk

(2)配置jdk的安装路径,在环境变量path中加入jdk的bin路径,新建环境变量JAVA_HOME指向jdk的安装路径

(3)在三台要安装tomcat的服务器上分别安装tomcat,调试三个tomcat到能够正常启动

(4)tomcat的默认WEB服务端口是8080,默认的模式是单独服务,我的三个tomcat的WEB服务端口修改为7080/8888/9999

修改位置为tomcat的安装目录下的conf/server.xml

修改前的配置为

     

修改后的配置为

     

依次修改每个tomcat的监听端口(7080/8888/9999)

(5)分别测试每个tomcat的启动是否正常

http://192.168.0.1:7080

http://192.168.0.2:8888

http://192.168.0.4:9999/

(三)负载均衡配置过程
(1)在那台要安装apache的服务器上安装apache2.0.55,我的安装路径为默认C:\Program Files\Apache Group\Apache2

(2)安装后测试apache能否正常启动,调试到能够正常启动http://192.168.0.88

(3)下载jk2.0.4后解压缩文件

(4)将解压缩后的目录中的modules目录中的mod_jk2.so文件复制到apache的安装目录下的modules目录中,我的为C:\Program Files\Apache Group\Apache2\modules

(5)修改apache的安装目录中的conf目录的配置文件httpd.conf,在文件中加LoadModule模块配置信息的最后加上一句LoadModule jk2_module modules/mod_jk2.so

(6)分别修改三个tomcat的配置文件conf/server.xml,修改内容如下

修改前

     

              

     --> 

         

     

     

修改后

     

     

              

     

         

     

     -->

将其中的jvmRoute="jvm1"分别修改为jvmRoute="tomcat1"和jvmRoute="tomcat2"和jvmRoute="tomcat3"

(7)然后重启三个tomcat,调试能够正常启动。

(8)在apache的安装目录中的conf目录下创建文件workers2.propertie,写入文件内容如下

# fine the communication channel 

[channel.socket:192.168.0.1:8009] 

info=Ajp13 forwarding over socket

#配置第一个服务器 

tomcatId=tomcat1 #要和tomcat的配置文件server.xml中的jvmRoute="tomcat1"名称一致

debug=0 

lb_factor=1 #负载平衡因子,数字越大请求被分配的几率越高

# Define the communication channel 

[channel.socket:192.168.0.2:8009] 

info=Ajp13 forwarding over socket

tomcatId=tomcat2 

debug=0 

lb_factor=1 

# Define the communication channel 

[channel.socket:192.168.0.4:8009] 

info=Ajp13 forwarding over socket

tomcatId=tomcat3 

debug=0 

lb_factor=1 

[status:] 

info=Status worker, displays runtime information.  

[uri:/jkstatus.jsp] 

info=Display status information and checks the config file for changes. 

group=status: 

[uri:/*] 

info=Map the whole webapp 

debug=0

(9)在三个tomcat的安装目录中的webapps建立相同的应用,我和应用目录名为TomcatDemo,在三个应用目录中建立相同 WEB-INF目录和页面index.jsp,index.jsp的页面内容如下

Cluster App Test

Server Info:

0) {

      String dataValue = request.getParameter("dataValue");

      session.setAttribute(dataName, dataValue);

   }

   out.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);

    }

%>

   

     名称:

      

     值:

      

     

    

(10)重启apache服务器和三个tomcat服务器,到此负载 均衡已配置完成。测试负载均衡先测试apache,访问http://192.168.0.88/jkstatus.jsp

能否正常访问,并查询其中的内容,有三个tomcat的相关配置信息和负载说明,访问http://192.168.0.88/TomcatDemo/index.jsp看能够运行,

能运行,则已建立负载均衡。

(四)tomcat集群配置
(1)负载均衡配置的条件下配置tomcat集群

(2)分别修改三个tomcat的配置文件conf/server.xml,修改内容如下

修改前

        

             

             

             

             

                   

             

                      

             

         

         -->   

修改后

        

         

             

             

             

             

                   

             

                      

             

         

        

将集群配置选项的注释放开即可,如上。

(3)在Conf目录下建立jk2.properties文件,写入下面一行,其中端口为相应的Tomcat对应的AJP端口。

channelSocket.port=8009

(4)重启三个tomcat。到此tomcat的集群已配置完成。

(五)应用配置
对于要进行负载和集群的的tomcat目录下的webapps中的应用中的WEB-INF中的web.xml文件要添加如下一句配置

配置前

   TomcatDemo

配置后

   TomcatDemo

    

源地址

http://hi.baidu.com/injava/blog/item/c8df882f136f21391e30896d.html


对上面方法的改进:

一、安装apachea、下载最新源文件httpd-2.2.3.tar.gz。wget 

http://apache.mirrors.hoobly.com/httpd/httpd-2.2.3.tar.gzb

、编译

一、安装apache

a、

下载

最新源文件httpd-2.2.3.tar.gz。

wget http://apache.mirrors.hoobly.com/httpd/httpd-2.2.3.tar.gz

b、编译 apache

gunzip httpd-2.2.3.tar.gz

tar xvf httpd-2.2.3.tar

cd httpd-2.2.3

./configure --prefix=/home/apache --enable-so --with-mpm=worker

make

make install

c、简单配置:编辑httpd.conf,

把#ServerName www.example.com:80项中ServerName前的#号去掉,把xxxxx改成自己的机器全名,212中修改如下

#ServerName www.example.com:80改成ServerName 127.0.0.1

d、启动Apache: #cd /home/apache/bin

     #./apachectl start

e、测试Apache是否已经正确运行:http://202.202.202.15

二、安装tomcat

把主体资源的tomcat拷为/home/tomcat/tomcat11目录

cd /home/tomcat

tar cvf ../tool/tomcat.tar tomcat5 --exclude tomcat5/webapps --exclude tomcat5/work 

cd /home/tool

tar xvf tomcat.tar

mv tomcat5 ../tomcat/tomcat11

修改tomcat的文件目录,将/home/tomcat/tomcat11/conf/server.xml

appBase="webapps"修改为

appBase="/home/tomcat/tomcat5/webapps"

修改tomcat的端口

tomcat1/conf/server.xml

改为

改为

改为

cp -fR /home/tomcat/tomcat11 /home/tomcat/tomcat12

cp -fR /home/tomcat/tomcat11 /home/tomcat/tomcat13

cp -fR /home/tomcat/tomcat11 /home/tomcat/tomcat14

将相关端口修改为12001、12002和12003,13001、13002和13003,14001、14002和14003;将标识修改为tomcat12,tomcat13,tomcat14

f、启动tomcat: 

#cd /home/tomcat/tomcat11/bin

#./startup.sh

#cd /home/tomcat/tomcat12/bin

#./startup.sh

#cd /home/tomcat/tomcat13/bin

#./startup.sh

#cd /home/tomcat/tomcat14/bin

#./startup.sh

g、测试tomcat是否已经正确运行:

http://202.202.202.15:11002

http://202.202.202.15:12002

http://202.202.202.15:13002

http://202.202.202.15:14002

三、apache + 2tomcat的负载均衡

a、

下载

tomcat-connectors的源代码,编译,生成/home/apache/modules/mod_jk.so文件

wget http://mirrors.ccs.neu.edu/Apache/dist/tomcat/tomcat-connectors/jk/source/jk-1.2.19/tomcat-connectors-1.2.19-src.tar.gz

gzip -d tomcat-connectors-1.2.19-src.tar.gz

tar xvf tomcat-connectors-1.2.19-src.tar

cd tomcat-connectors-1.2.19-src

cd native

./configure --with-apxs=/home/apache/bin/apxs

make

make install

b、修改httpd.conf配置

编辑Apache的配置文件Apache安装目录的conf/httpd.conf

把DocumentRoot "/mnt/sdd1/yanfa/vcmresource/apache/htdocs"改成

DocumentRoot "/home/tomcat/tomcat5/webapps/ROOT"

把改成


    DirectoryIndex index.html

改为

    DirectoryIndex index.jsp index.html

取消以下注释

#EnableMMAP off

#EnableSendfile off

改为

EnableMMAP off

EnableSendfile off

#Include conf/extra/httpd-mpm.conf

改为

Include conf/extra/httpd-mpm.conf

#Include conf/extra/httpd-default.conf

改为

Include conf/extra/httpd-default.conf

加入以下内容

# Jk connectors

Include conf/mod_jk.conf

修改conf/extra/httpd-mpm.conf配置

# worker MPM

    StartServers          2

    MaxClients          150

    MinSpareThreads      25

    MaxSpareThreads      75

    ThreadsPerChild      25

    MaxRequestsPerChild   0

改为

# worker MPM

    StartServers          5

    ServerLimit   60

    MaxClients         3000

    MinSpareThreads      25

    MaxSpareThreads      75

    ThreadsPerChild      50

    MaxRequestsPerChild   0

d、在conf目录下创建mod_jk.conf文件,内容如下:

--------------------------------------mod_jk.conf------------------------------------------

# Load mod_jk module

LoadModule jk_module modules/mod_jk.so

# Where to find workers.properties

JkWorkersFile conf/workers.properties

# Where to put jk logs

JkLogFile logs/mod_jk.log

# Set the jk log level [debug/error/info]

JkLogLevel warn

# Select the log format

# JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "

# JkOptions indicate to send SSL KEY SIZE, 

# JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories

# JkRequestLogFormat set the request format 

# JkRequestLogFormat "%w %V %T"

# Send JSPs for context / to worker named loadBalancer

#JkMount /*.jsp loadBalancer

#JkMount /*.do* loadBalancer

JkMountFile conf/urimap.properties

--------------------------------------------mod_jk.conf------------------------------------ 

在conf目录下创建urimap.properties文件,内容如下:

/*=loadBalancer

!/*.gif=loadBalancer

!/*.jpg=loadBalancer

!/*.png=loadBalancer

!/*.css=loadBalancer

!/*.js=loadBalancer

!/*.htm=loadBalancer

!/*.html=loadBalancer

!/*.mid=loadBalancer

!/*.jpeg=loadBalancer

!/*.txt=loadBalancer

!/*.mp3=loadBalancer

!/*.swf=loadBalancer

!/*.wmv=loadBalancer

!/*.zip=loadBalancer

!/*.rar=loadBalancer

!/*.pl=loadBalancer

e、在 conf目录下创建workers.properties文件,该文件将告诉apache 每个负载均衡的tomcat 

服务的运行参数,如机器名和端口号等。

-----------------------------------------workers.properties-------------------------------

#

# workers.properties

#

# list the workers by name

worker.list=loadBalancer

# ------------------------

# First tomcat server

# ------------------------

worker.tomcat11.port=11003

worker.tomcat11.host=202.202.202.15

worker.tomcat11.type=ajp13

# Specify the size of the open connection cache.

# worker.tomcat11.cachesize=1000

#

# Specifies the load balance factor when used with

# a load balancing worker.

# Note:

# ----> lbfactor must be > 0

# ----> Low lbfactor means less work done by the worker.

worker.tomcat11.lbfactor=10

# ------------------------

# Second tomcat server

# ------------------------

worker.tomcat12.port=12003

worker.tomcat12.host=202.202.202.15

worker.tomcat12.type=ajp13

# Specify the size of the open connection cache.

# worker.tomcat12.cachesize=1000

#

# Specifies the load balance factor when used with

# a load balancing worker.

# Note:

# ----> lbfactor must be > 0

# ----> Low lbfactor means less work done by the worker.

worker.tomcat12.lbfactor=10

# ------------------------

# Third tomcat server

# ------------------------

worker.tomcat13.port=13003

worker.tomcat13.host=202.202.202.15

worker.tomcat13.type=ajp13

# Specify the size of the open connection cache.

# worker.tomcat13.cachesize=1000

#

# Specifies the load balance factor when used with

# a load balancing worker.

# Note:

# ----> lbfactor must be > 0

# ----> Low lbfactor means less work done by the worker.

worker.tomcat13.lbfactor=10

# ------------------------

# Fourth tomcat server

# ------------------------

worker.tomcat14.port=14003

worker.tomcat14.host=202.202.202.15

worker.tomcat14.type=ajp13

# Specify the size of the open connection cache.

# worker.tomcat14.cachesize=1000

#

# Specifies the load balance factor when used with

# a load balancing worker.

# Note:

# ----> lbfactor must be > 0

# ----> Low lbfactor means less work done by the worker.

worker.tomcat14.lbfactor=10

# ------------------------

# Load Balancer worker

# ------------------------

#

# The loadbalancer (type lb) worker performs weighted round-robin

# load balancing with sticky sessions.

# Note:

# ----> If a worker dies, the load balancer will check its state

# once in a while. Until then all work is redirected to peer

# worker.

worker.loadBalancer.type=lb

worker.loadBalancer.balance_workers=tomcat11,tomcat12,tomcat13,tomcat14

worker.loadBalancer.method=B

#

# END workers.properties

f、配置Tomcat 服务器 

修改conf/server.xml文件:

在tomcat1目录的conf/server.xml,在第128行, 替换: 

为: 

在tomcat2目录的conf/server.xml,替换为 jvmRoute="tomcat2". 

为: 

在tomcat3目录的conf/server.xml,替换为 jvmRoute="tomcat3". 

为: 

在tomcat4目录的conf/server.xml,替换为 jvmRoute="tomcat4". 

为: 

注意,一定是替换这一行,而包含在原来的engine里面的host不做更改。有的文档写的是在配置中加入一行

,其实是不对的,这样负载均衡是没有问题的,但是不能做session绑定了,也就是说同一用户会在两台服务器上跳来跳去。这是由于jvmRoute不正确引起的,所以一定要替换。而且这个jvmRoute一定要跟workers.properties中的名称完全匹配,否则也不能实现session绑定.

g、配置session亲和、监测各个tomcat的状态

vi /home/apache/conf/workers.properties

加入

worker.loadBalancer.sticky_session=1

修改

worker.list=loadBalancer为

worker.list=loadBalancer,status

加入

worker.status.type=status

vi /home/apache/conf/mod_jk.conf

加入

JkMount /resource-tomcat-status status

重启apache,可在http://202.202.202.15/jkstatus监测各个tomcat的情况

(status实际上mod_jk自带的一个应用,目的是观察每个tomcat的状态,并可以在运行时设置每个tomcat的某些参数)

如需用户/密码验证才能监测状态,配置如下

/home/apache/bin/htpasswd -c /home/apache/conf/jk_passwd vcmedu

vi /home/apache/conf/mod_jk.conf

去掉以下项

JkMount /jkstatus status

加如下面内容

JkMount status

Order deny,allow

AuthType Basic

AuthName "jkstatus"

AuthUserFile conf/jk_passwd

require valid-user

转载地址:http://hnkai.baihongyu.com/

你可能感兴趣的文章
MySQL-备份与恢复简介20210103
查看>>
MySQL-Binlog二进制日志介绍20200106
查看>>
liux7安装Python3与PyMySQL
查看>>
MySQL逻辑备份恢复mysqldump20210204
查看>>
MySQL逻辑备份恢复mysqlpump20210217
查看>>
MySQL逻辑备份恢复mysqldumper20210225
查看>>
MySQL物理备份xtrabackup-innobackupex20210304
查看>>
MySQL物理备份xtrabackup-20210310
查看>>
MySQL物理备份mysqlbackup-20210315
查看>>
中标麒麟高级系统V7安装PG11
查看>>
MySQL数据导入导出20210328
查看>>
MySQL单库优化概述20210403
查看>>
运维部知识库管理办法V1版
查看>>
MySQL索引优化20210412
查看>>
win10批处理文件获得超级管理员-切换双网卡
查看>>
软考UML
查看>>
信息系统的生命周期各阶段及说明
查看>>
Ubuntulinux离线安装ClamTk杀毒软件步骤和使用方法
查看>>
摆脱贫穷2021V1
查看>>
质量管理14工具图
查看>>