使用httpd反向代理模块实现tomcat负载均衡集群(上)

前言

 tomcat介绍:

  tomcat是一个免费开放源代码的web应用服务器,不是一个完整意义上的Java EE服务器;它甚至都没有提供哪怕对一个主Java EE API的实现,但由于遵守apache开源协议,tomcat却有为众多的java应用程序服务器嵌入自己的产品中构建商业的java应用程序服务器,如JBoss和JOnAS等。tomcat工作在jdk(Java Development Kit)之上;要想使用tomcat必须先安装jdk,jdk分为open jdk和 Oracle jdk,可根据自己的需要选择相应的jdk来实现tomcat实例。

一、tomcat相关件介绍

1、配置文件介绍

 sever.xml:tomcat核心配置文件;

 context.xml:每个webapp都有其配置文件,这些配置文件通常位于webapp应用程序目录下的WEB-INF目录中,用于定义会话管理器、JDBC;此配置文件为所有的webapp提供默认配置

 web.xml: 每个webapp部署之后才能被访问;此配置文件则用于为所有webapp提供默认部署方式

 tomcat-users.xml: 用于认证账号配置文件

 catalina.policy: 当使用-secruity启动tomcat实例时通过读取此配置文件来定义其安全运行策略

 catalina.properties: java属性的定义文件,用于设定类加载器路径,以及一些jvm性能调整的相关参数

 logging.properties: 日志相关的配置文件

2、tomcat的组件:

 1.png

顶级类组件:Server,代表一个tomcat实例

服务类组件:Service,将连接器关联至内部的Engine引擎

连接器组件:Connector,常用的有http、https、ajp(Apache JServ Protocol)

容器类组件:Engine,代表一个web container

  包含:host(虚拟主机)、context(主机配置文件)

被嵌套类组件:valve,logger,realm,….

二、配置http代理tomcat

 1、实验环境:

     2.png

tomcat主机:

 node1: 172.16.2.14/24

 node2: 172.16.2.13/24

http主机
 node3: 172.16.2.12/24

软件:

tomcat下载地址:http://tomcat.apache.org/

jdk下载地址(Oracle):http://www.oracle.com/technetwork/java/javase/downloads/index-jsp-138363.html

3.png

2、安装jdk

node2安装jdk同node1一样,这里就不在演示了

3、安装tomcat

node2节点安装tomcat跟node1节点一样,这里不在介绍

3.1 启动tomcat访问测试(tomcat默认http协议监听在8080端口,ajp协议监听在8009端口)

访问测试:

5.png

4.png

3.2 添加虚拟主机:

重新启动tomcat,访问测试:

访问测试:

6.png

3.3 修改node2节点跟node1节点一样,默认页面内容如下:

访问测试:

10.png

4、配置使用mod_http负载均衡tomcat

4.1安装httpd

4.2 启动httpd,访问测试

访问:

8.png

4.3 修改httpd配置文件,内容如下

上述参数解释:

ProxyPass {On|Off|Full|Block}

用于控制在http首部是否使用Via:,主要用于在多级代理中控制代理请求的流向。默认为off,即不启用此功能,On表示每个请求和响应报文均添加Via:, Full表示每个Via:行都会添加当前Apache服务器版本号信息;Block表示每个代理请求中的Via:都会被移除

ProxyRequests {On|Off}

是否开启Apache正向代理功能;启用此项时是为了代理http协议必须启用mod_proxy_http模块。同时,如果为Apache设置了proxypass,则必须将ProxyRequests设置为Off

ProxyPreserveHost {On|Off}

如果启用此功能,代理会将用户请求报文中的Host:行发送给后端的服务器,而不再使用ProxyPass指定的服务器地址。如果想在反向代理中支持虚拟主机,则需要开启此项,否则就无须打开此功能

ProxyPass [path] !|url [key=value key=value ..]

将后端服务器某URL与当前服务器的某虚拟路径关联起来做为提供服务的路径,path为当前服务器上的某虚拟路径,url为后端服务器上某url路径。使用此指令时必须将ProxyRequests的值设置为Off。需要注意的是,如果path以“/”结尾,则对应的url也必须以“/”结尾,反之亦然。

mod_proxy模块在httpd 2.1的版本之后支持与后端服务器的连接池功能,连接在按需创建在可以保持至连接池中已备进一步使用。连接池大或其他设定可以通过在ProxyPass中使用key=value的方式定义。也可以使用PassSet定义。常用的key如下所示:

min 连接池的最小容量,此值与实际连接个数无关,仅表示连接池最小要初始化的空间大小

max

连接池的最大容量,每个MPM都有自己独立的容量;其值与MPM本身无关,如prefork的总是为1,而其他的则取决于TheradsPerChild指令的值
loadfactor 用于负载均衡集群配置中,定义对后端服务器的权重,取值范围为1-100
retry 当apache将请求发送至后端服务器得到错误响应时等待多次时间以后再重试。单位是秒钟
如果proxy指定的是balacner://开头,即用与负载均衡时,其还可以接受一些特殊的参数,如下所示:

lbmethod

apache实现负载均衡的调度算法,默认为byrequests,即基于权重将统计请求个数进行调度,bytraffic则执行基于权重的流量计数调度,bybusyness通过考量每个后端服务器的当前负载均衡进行调度
maxattempts 放弃请求之前实现故障转移的次数,默认为1,其最大值不应大于总结点数

nofailover

取值为On或Off,设置On时表示后端服务器故障时,用户的session将损坏;因此在后端服务器不支持session复制时可将其设置为On
stickysession 调度器的sticky session的名字,根据web程序语言的不同,其值为JSESSIONID或PHPSESSIONID

4.4 重新启动httpd,访问测试

访问测试:

9.png 11.png

5、使用mod_ajp实现tomcat负载均衡:

5.1修改httpd配置文件如下:

5.2 重启httpd,访问测试

访问测试:

12.png 13.png

原创文章,作者:马行空,如若转载,请注明出处:/6325

联系我们

400-080-6560

在线咨询:点击这里给我发消息

邮件:1823388528@qq.com

工作时间:周一至周五,9:30-18:30,节假日同时也值班

友情链接:万达娱乐主管QQ  万达注册  万达娱乐平台  万达娱乐主管QQ  万达娱乐开户  万达娱乐直属  万达主管  华宇招商  万达主管  万达娱乐招商