前言:
系统:CentOS 6.4 x64
JDK:1.7
Tomcat:7.X
服务器集群分布:
nginx:192.168.2.132:80
tomcat: 192.168.20.132:8088
192.168.20.132:8099
redis: 192.168.20.132:6379
安装包:
nginx下载地址:http://nginx.org/en/download.html
redis下载地址:https://redis.io/download
tomcat和Jdk自行下载安装
搭建集群所需要的jar包下载地址:https://download.csdn.net/download/dc282614966/10564781
一、Nginx安装
nginx版本:nginx-1.15.2
安装方式:源码编译安装
1.安装必须环境
nginx的编译需要c++,同时prce(重定向支持)和openssl(https支持)也需要安装。
[root@hadoop05 ~]# yum install gcc-c++
[root@hadoop05 ~]# yum -y install pcre*
[root@hadoop05 ~]# yum -y install openssl*
2.将下载好的nginx-1.15.2.tar.gz包解压到/usr/local/下
[root@hadoop05 ~]# tar -zxvf nginx-1.15.2.tar.gz -C /usr/local/
3.进入cd /usr/local/nginx-1.15.2/ 并设置安装目录
[root@hadoop05 nginx-1.15.2]# ./configure --prefix=/usr/local/nginx
4.如果没有报错,开始编译安装
[root@hadoop05 nginx-1.15.2]# make
[root@hadoop05 nginx-1.15.2]# install
4.防火墙端口打开80
1)在iptables下添加如下的设置:
[root@hadoop05 nginx-1.15.2]# vi /etc/sysconfig/iptables
-A RH-Firewall-1-INPUT -m state --state NEW-m tcp -p tcp --dport 80 -j ACCEPT
2)重启iptalbes
service iptables restart
5.启动nginx服务
进入到cd /usr/local/nginx/sbin目录下
[root@hadoop05 sbin]# ./nginx
查看进程,可以看到nginx的master和worker进程
6.可以通过访问ip:80测试,看到页面这样的提示就说明安装成功
重启的命令:
[root@hadoop05 sbin]# ./nginx -s reload
二、redis安装
1.下载安装包
wget http://download.redis.io/releases/redis-4.0.10.tar.gz或者https://redis.io/download
2.解压大/usr/local/目录下
[root@hadoop05 redis-4.0.10]# tar -zxvf redis-4.0.10.tar.gz -C /usr/local/
3.进入到/usr/local/redis-4.0.10/
[root@hadoop05 /]# cd /usr/local/redis-4.0.10/
4.编译安装
[root@hadoop05 redis-4.0.10]# make
[root@hadoop05 redis-4.0.10]# make PREFIX=/usr/local/redis install
5.启动
进入到编译后的文件目录下/usr/local/redis/bin/,启动redis,如下图:
[root@hadoop05 /]# cd /usr/local/redis/bin/
启动:
[root@hadoop05 bin]# ./redis-server
6.设置redis后台启动
将解压目录下的redis.conf文件复制到编译后的redis文件下:
[root@hadoop05 redis-4.0.10]# cp redis.conf /usr/local/redis
修改redis.conf文件,将no改为yes,然后重亲redis
重新启动redis:
[root@hadoop05 redis]# ./bin/redis-server ./redis.conf
查看进程是否启动:
[root@hadoop05 bin]# ps -ef|grep redis
三、tomcat配置
1.下载所需的jar,然后拷贝到tomcat的lib下面:
jar包下载地址:https://download.csdn.net/download/dc282614966/10563909
2.改tomcat的context.xml配置文件,将下面的配置信息放入context标签内
<Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" />
<Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager"
host="localhost"
port="6379"
database="0"
maxInactiveInterval="60"/>
四、nginx配置
这里由于要做反向代理,需要在nginx的conf目录下配置nginx.conf的配置文件。画红线部分为添加的内容,修改如下:
这里指定了本机下的两个Tomcat实例,端口分别为8088,8099,权重都为1,后边配置Tomcat实例,nginx-tomcat-redis这个是我测试项目的项目名,下边要用到:
upstream nginx-tomcat-redis{
#weigth参数表示权值,权值越高被分配到的几率越大
#本机上的Squid开启3128端口
server 127.0.0.1:8088 weight=1;
server 127.0.0.1:8099 weight=1;
}
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
proxy_pass http://nginx-tomcat-redis;
}
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
proxy_pass http://nginx-tomcat-redis;
}
}
五、测试
1.jsp页面
在测试项目中写了个简单的jsp页面,在js中调用自定义的一个servlet,然后通过servlet获取sessionId,将获取的sessionId返回到jsp页面显示,代码如下:
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>First Page</title>
<script type="text/javascript" src="./js/jquery-3.3.1.min.js"></script>
<script type="text/javascript" src="./js/session.js"></script>
</head>
<body>
<h1>第一个jsp页面</h1>
<div id="firstSessinId">SessionId:</div>
</body>
</html>
2.js文件
js中主要是通过ajax调用servlet来获取sessionId,代码如下:
$(function() {
$.ajax({
url : 'session',
method : 'get',
success : function(result){
$("#firstSessinId").append(result);
}
});
})
3.servlet文件
主要是用来获取sessionId,然后返回给jsp页面,代码如下:
public class SessionShareServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public SessionShareServlet() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String id = request.getSession().getId();
request.getSession().setAttribute("session", id);
System.out.println(id);
OutputStream out = response.getOutputStream();
out.write(id.getBytes());
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
4.页面测试效果
访问页面如下,放反复刷新页面页面时会出现“第一个jsp页面”和“第二个jsp页面”交替出现,则证明nginx配置成功,当两个页面的SessionId相同则说明共享session配置成功。
5.项目源码下载地址:https://github.com/dengchao3119/nginx-tomcat-redis.git