Tengine(nginx) 搭建Tomcat集群
Posted 梅花GG
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Tengine(nginx) 搭建Tomcat集群相关的知识,希望对你有一定的参考价值。
好久没有更新学习的内容了,就是得强迫自己写点东西 记录自己的学习,才能更好的进步!
Tengine是由淘宝网发起的Web服务器项目。它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。Tengine的性能和稳定性已经在大型的网站如淘宝网,天猫商城等得到了很好的检验。它的最终目标是打造一个高效、稳定、安全、易用的Web平台。
首先将Tengin上传到Linux服务器上,然后进行解压
- 安装依赖 yum -y install gcc openssl-devel pcre-devel zlib-devel
- 编译三步走 ./configure \\
--prefix=/opt/sxt/soft/tengine-2.1.0/ \\
--error-log-path=/var/log/nginx/error.log \\
--http-log-path=/var/log/nginx/access.log \\
--pid-path=/var/run/nginx/nginx.pid \\
--lock-path=/var/lock/nginx.lock \\
--with-http_ssl_module \\
--with-http_flv_module \\
--with-http_stub_status_module \\
--with-http_gzip_static_module \\
--http-client-body-temp-path=/var/tmp/nginx/client/ \\
--http-proxy-temp-path=/var/tmp/nginx/proxy/ \\
--http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ \\
--http-uwsgi-temp-path=/var/tmp/nginx/uwsgi \\
--http-scgi-temp-path=/var/tmp/nginx/scgi \\
--with-pcre
make && make install
- 注意:一定要从windows复制粘贴过来
在/etc/init.d下面建立nginx文件,粘贴内容,修改路径
- 修改ngxin文件执行权限
- 配置chkconfig
然后使用命令 service nginx start
出现如下的效果图就是配置成功
准备两台Linux 每个Linux都安装一个tomcat
在Nginx上配置反向代理
1.反向代理
首先在两台服务器分别配置并启动tomcat,修改tomcat首页为tomcat1和tomcat2
配置反向代理和upstream
upstream backend {
server 192.168.2.141:8080 ;
server 192.168.2.142:8080;
}
server {
location / {
proxy_pass http://backend;
}
}
从上面可以看出定义一组服务器。 这些服务器可以监听不同的端口。 而且,监听在TCP和UNIX域套接字的服务器可以混用
访问分别显示tomcat1和tomcat2
两个tomcat出现的问题
Session共享
– 首先我们应该明白,为什么要实现共享,如果你的网站是存放在一个
机器上,那么是不存在这个问题的,因为会话数据就在这台机器,但
是如果你使用了负载均衡把请求分发到不同的机器呢?这个时候会话id
在客户端是没有问题的,但是如果用户的两次请求到了两台不同的机
器,而它的session数据可能存在其中一台机器,这个时候就会出现取
不到session数据的情况,于是session的共享就成了一个问题
解决Session共享的方法
memcached缓存方案,安装memcached
1.抛出Session一致性问题
2.安装memcached缓存数据库
通过命令安装 yum –y install memcached
通过telnet测试memcached数据库
3.tomcat配置名称和session一致性配置
将jar包拷贝到tomcat的lib下
在tomcat的server.xml中配置jvmRoute
Linux1
<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">
Linux2
<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat2">
在context.xml的Context配置Manager
Linux1
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:192.168.2.141:11211"
sticky="false"
lockingMode="auto"
sessionBackupAsync="false"
requestUriIgnorePattern=".*\\.(ico|png|gif|jpg|css|js)$"
sessionBackupTimeout="1000" transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
/>
Linux2 的配置如上
4.index.jsp配置
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
SessionID:<%=session.getId()%>
<br/>
SessionIP:<%=request.getServerName()%>
<br/>
<h1>tomcat2 page</h1>
配置好后 记得刷新 Nginx和 重启tomcat
然后在浏览器访问 就能看见访问不同的tomcat但是Session一致。
以上是关于Tengine(nginx) 搭建Tomcat集群的主要内容,如果未能解决你的问题,请参考以下文章
实践出真知——一文教你搭建Nginx+Tomcat集群,实现负载均衡及动静分离