nginx反代httpd,实现三种tomcat代理模型至后端的tomcat服务器,会话绑定的三种方式

构建tomcat集群,实现前端一台nginx反代,到后端的apache服务器,由apache负责向后端的tomcat服务器进行资源调度,这样的模式比直接用nginx反代到后端主机,tomcat服务器所受到的压力会更小,服务将会更加稳定,这样的模式是经过实践检验出来的。如果nginx直接调度到后端tomcat服务器,则只支持http和https,而不支持ajp,http与https模式的设定,可以让外来客户直接访问tomcat服务器,而不需要经过我们设置好的前端nginx的端口,这样是十分不安全的做法,所以常用的模式都是ajp以及mod_jk,这种模式就可以阻止外来用户直接访问tomcat服务器,安全性就有了一定的保障。

在这里实现三种httpd的代理模式,proxy_http_module,proxy_ajp_module,以及mod_jk。并对后端tomcat主机实现负载均衡,session sticky,session cluster,session server操作。

IP配置:

前端nginx:

eno16777736 192.168.72.3

eno33554976 172.16.25.2

httpd调度器:

eno16777736 172.16.25.1

tomcatA:

eno16777736  172.16.25.101

tomcatB:

eno16777736  172.16.25.102

1.负载均衡+session sticky

①proxy_http_moudle

nginx反代:

只需要设置proxy_pass反代即可;

httpd配置:

在报文首部设置Cookie作为标记,当环境env路由改变后即通过ProxySet stickysession触发,将会话保存

Proxy balancer://tcsrvs则是我们在httpd中设置的反代多台服务器的组,相当于nginx中的upstream,

haproxy中的backend。两台主机的域名需要写入到httpd调度器中的/etc/hosts中,否则无法正常解析域名。

route=tomcatA

route=tomcatB

需要我们在后端tomcat服务器的server.xml中的Engine中指定,如

tomcat服务器配置

安装tomcat服务

在本地光盘中有tomcat的安装包

#yum install -y tomcat tomcat-webapps tomcat-lib tomcat-admin-webapps tomcat-docs-webapps

自定义tomcat应用

如:

#mkdir -pv /testapp2/webapps/ROOT/{WEB-INF,lib,classes}

#vim /testapp2/webapps/ROOT/index.jsp (设置jsp页面进行测试)

修改tomcat主配置文件server.xml让其能够通过指定域名访问到我们设置的应用

访问192.168.72.3

因为进行了session sticky所以一直访问到的都是同一个

当我们将tomcatB的服务down掉后

这样就实现了基于proxy_http_module的http模式

②基于proxy_ajp_module

ajp的配置于http的不同就在于对端口以及协议的不同。

需要修改httpd调度器的配置为:

最好将后端tomcat的关于http的connector注释掉;

并修改Engine中的defaultHost指向我们设置好的域名

访问结果如上。

③基于mod_jk

首先,需要在httpd调度器上编译mod_jk,因为默认是不存在的,从网上镜像站点上下载

tomcat-connectors-VERSION

#yun install -y "Development tools" "Server Platform Develop"

安装编译环境。

#yum install -y httpd-devel

#tar -xf tomcat-connectors-VERSION.tar.gz

#cd tomcat-connectors-VERSION/native

#./configure --with-apxs

#make -j 4 && make install

到此,mod_jk便编译完成,可以通过/usr/lib64/httpd/modules/mod_jk进行查看

编写mod_jk配置文件

在/etc/httpd/conf.d/jk_proxy_tomcat.conf中

LoadModule装载模块

JkWorkersFile用于设置任务配置信息

JkLogFile用于设置日志文件

JkLogLevel用于设置日志等级

JkMount到访问到任何数据,都由tcsrvs这个组进行处理,该组设置在workers.properties任务文件中;

/etc/httpd/conf.d/workers.properties

任务文件当中需要设置组中所有tomcat服务器的信息,如host,type,port,lbfactor权重等,有多少个

tomcat服务器则设置多少组。

worker.tcsrvs.type设置为轮询的方式。

worker.tcsrvs.balance_workers=tomcatA,tomcatB用于设置负载均衡的服务器列表

worker.tcsrvs.sticky_session=0表示不支持会话绑定,注意,该行不能省略,否则虽然不出错,但其默认还是绑定;

若需要会话绑定则需要将0置1即可;

2.负载均衡+session server

对tomcat服务器进行负载均衡操作,使用的是httpd调度器的mod_jk形式,关于前端的nginx与httpd,配置同前面一般无二

在这里就不进行细说了,主要是对后端两台tomcat服务器实现seession server,即将会话全部放在一台服务器上,当tomcat

服务器需要时则从session server中取,这样的话session server必须设置高可用,否则当session server挂掉后,便无法正常

提供服务。

导入session server实现所需要的jar包,下载如下jar文件至各tomcat节点的tomcat安装目录下的lib目录中,其中的${version}

要换成你所需要的版本号,tc${6,7,8}要换成与tomcat版本相同的版本号。将这些jar包放置在/usr/share/java/tomcat中。

在tomcat主配置文件server.xml中设置Context别名,并在该Host上下文中添加session server配置段

Context上下文设置的访问路径path="/test",其应用保存在/testapp2/webapps中,所以需要我们手动进行配置

#mkdir -pv /testapp2/webapps/{lib,classes,WEB-INF}

#vim index.jsp (创建jsp文件)

将/etc/tomcat/web.xml复制到手动创建应用的WEB-INF中,并添加<distributable/>

memcachedNodes为session server的节点,有几台就设几个节点,failoverNodes则是作为备用节点,当n2节点挂掉后

顶上去的。在这里要说一下,session server是基于memcached实现的,所以必须先安装memcached缓存。

设置jvmRoute,该标签需同前面httpd中的一般无二;

使用8009端口的ajp协议进行访问时,需要将8080端口的Connector上下文注释掉。

到此一台tomcat配置完成,只需要在另一台主机处进行相同的设置即可

访问结果:

访问内容的会话ID以及,创建会话时间都相同。

3.负载均衡+session cluster

session cluster的实现,适用于多个tomcat服务器之间,相互备份对方的session,这样

每台tomccat的服务器中就拥有所有的session,这样,即便一台tomcat或多台tomcat

down掉后,只要有一台服务器正常工作,会话就将继续保持,但如果所有的tomcat服

务器down掉就无法正常利用会话工作。

session cluster实现方式同session server差不多,不同在于对server.xml中的cluster集

群的上下文配置。

如:

需要进行修改的也就是前半段配置,Membership上下文用于设置cluster之间的组播通信地址,端口,

以及持续时间,超时时间等;

Receiver上下文则是用于设置cluster之间互相发送会话数据的IP地址,端口,时间等;需要将IP地址改

为当前服务器中可用的IP地址;

后半段配置无需变动。

将之前的session server相关配置注释掉。

原文地址:http://blog.51cto.com/12480612/2055100

时间: 2024-12-09 13:05:39

nginx反代httpd,实现三种tomcat代理模型至后端的tomcat服务器,会话绑定的三种方式的相关文章

Nginx反代超详细教程:加速网站Google、Gravatar和Hostloc

VPS教程 » Nginx反代超详细教程:加速网站Google.Gravatar和Hostloc Nginx反代超详细教程:加速网站Google.Gravatar和Hostloc December 31st , 2015•Edit•访问: 672 次 nginx 这个轻量级.高性能的 web server 主要可以干两件事情: 1.直接作为http server(需要Fastcgi配合): 2.作为反代服务器(进一步可以实现均衡负载). 这里主要利用一下反功能来方便一下日常生活.选择Gravat

Tomcat集群session复制,httpd/nginx反代Tomcat集群

   一个大型站点都会涉及到动态应用,动态应用都需要做会话保持,常见的会话保持方式就三种,一是session stick,二是session replication,三是session share,对于小型规模的tomcat集群,大多者会采用session replication方式,但阅读官方文档也好,查询大牛博客也罢,发现均有不准确之处,所以亲测成功实现之后得出如下文档,还望高人指点. 实验环境: 操作系统:CentOS 7.2 tomcat版本:tomcat-7.0.54(yum安装方式)

Http和Nginx反代至Tomcat(LNMT、LAMT)

Http和Nginx反代至Tomcat(LNMT.LAMT) ================================================================================ 概述: 本章将主要介绍Http和Nginx反代至Tomcat,具体内容如下: LNMT部署并实现动静分离 LAMT部署的实现方式: ·proxy_http_module代理配置 ·proxy_ajp_module代理配置 Tomcat脚本(启动.停止.重启) ========

nginx反代mogilefs

一.简介 1.介绍 MogileFS 是一个开源的分布式文件系统,用于组建分布式文件集群,由 LiveJournal 旗下 Danga Interactive 公司开发,Danga 团队开发了包括 Memcached.MogileFS.Perlbal 等不错的开源项目:(注:Perlbal 是一个强大的 Perl 写的反向代理服务器) 2.MogileFS的特性 (1)工作在应用层提供服务 (2)无单点(至少存在两份副本在不同的节点上) (3)自动文件复制 mogilefs将多个文件组织成一个单

nginx反代mogilefs实现海量小文件存储

一.简介 1.介绍 MogileFS 是一个开源的分布式文件系统,用于组建分布式文件集群,由 LiveJournal 旗下 Danga Interactive 公司开发,Danga 团队开发了包括 Memcached.MogileFS.Perlbal 等不错的开源项目:(注:Perlbal 是一个强大的 Perl 写的反向代理服务器) 2.MogileFS的特性 (1)工作在应用层提供服务 (2)无单点(至少存在两份副本在不同的节点上) (3)自动文件复制 mogilefs将多个文件组织成一个单

Nginx反代Tomcat项目

需求背景: 直接访问Tomcat项目路径如下: http://10.8.1.5:8080/erp 要求使用www.erp.com访问是可以访问至http://10.8.1.5:8080/erp 需求分析: 这里不可以使用简单的反向代理,因为后端服务器有目录(erp)存在,而为了访问友好www.erp.com后端不能加目录,所以不能纯粹的使用nginx根据目录来匹配后端服务器,最终实现效果nginx配置如下: server {     listen      80;     server_name

LINUX——Nginx反代至双Tomcat(LNMT、LAMT),负载均衡中动静分离的使用

环境布置:配置安装163的源 [[email protected] ~]# cd /etc/yum.repos.d/ //创建备份目录 [[email protected] yum.repos.d]# mkdir /etc/repo-bf //将原yum仓库的文件备份到repo-bf [[email protected] yum.repos.d]# mv * /etc/repo-bf //下载163的源到yum仓库 [[email protected] yum.repos.d]# curl -o

Nginx反代至Tomcat基于memcached的session保持

实现功能:基于前面tomcat基础简介与示例文章 (1) tomcat cluster将会话保存至memcached中:实现模型: 这里写图片描述 配置B,C主机安装openjdk与tomcat[本次均使用yum安装]配置tomcat的server.xml文件在host配置段中加入<Context path="/test" docBase="test" reloadable="true"> #指定实例的目录 <Manager c

Nginx反代配置

一.ngx_http_proxy_module模块     ngx_http_proxy_module模块可根据用户请求的uri传递至后端服务器,实现反向代理 命令: 1.proxy_pass 设置一个代理服务器的地址,协议,和一个可选的URI的位置应该映射.作为一个协议,"HTTP"或"https"可以指定.地址可以被指定为一个域名或IP地址,和一个可选的端口 语法:proxy_pass URL; 可用的上下文:location, if in location,