搭建Nginx(调度器)+Tomcat(多台web)实现session共享

需求描述:客户多次访问集群内tomcat服务器时,被调度器分配到未存储其session信息的tomcat服务器,需要重新输入其账户等信息。为了用户的使用方便,以及集群的更好实现,需要共享客户访问的session信息给集群中的应用服务器

环境:3台    Red Hat Enterprise Linux Server release 6.7 (Santiago)及系统镜像文件

nginx :192.168.4.10

tomcat1:192.168.4.11

tomcat2:192.168.4.12

安装包清单:

nginx-1.8.0.tar.gz

apache-tomcat-8.0.30.tar.gz

libevent-2.0.21-stable.tar.gz

jdk-8u77-linux-x64.rpm

1、安装Nginx作为调度器

1)Nginx安装环境准备,通过yum安装依赖包,创建nginx用户

# yum -y install gcc gcc-c++ openssl-devel pcre-devel zlib-devel 
# useradd -s /sbin/nologin nginx

2)通过源码安装nginx

# cp nginx-1.8.0.tar.gz /opt/
# cd /opt/
# tar -xf nginx-1.8.0.tar.gz 
# cd nginx-1.8.0
# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx
# make && make install

3)启动nginx,检查nginx服务状态,并通过浏览器访问nginx服务,测试是否正常访问(避免因为selinux、防火墙导致访问失败)

# /usr/local/nginx/sbin/nginx
# netstat -anput|grep 80

4)修改rc.local设置开机启动nginx

# /usr/local/nginx/sbin/nginx
# tail -1 /etc/rc.local 
/usr/local/nginx/sbin/nginx

2、安装memcached

在nginx服务器上安装memcached(可单独分配一台服务器运行memcached),并启动服务,可通过yum或者源码安装,在此通过yum安装

1)yum安装memcached

# yum -y install memcached
# rpm -qa|grep memcached
memcached-1.4.4-3.el6.x86_64

2)启动memcached,检查服务状态,并设置开机自启

# /etc/init.d/memcached start
# netstat -anput|grep 11211
tcp        0      0 0.0.0.0:11211               0.0.0.0:*                   LISTEN      1730/memcached  
# chkconfig memcached on
# chkconfig memcached --list
memcached      	0:关闭	1:关闭	2:启用	3:启用	4:启用	5:启用	6:关闭

3、部署tomcat服务器集群

安装tomcat并配置context.xml实现session共享(可配置其中一台,然后拷贝到其他服务器)

1)安装JDK

# rpm -ivh jdk-8u77-linux-x64.rpm
# java -version
java version "1.8.0_77"
Java(TM) SE Runtime Environment (build 1.8.0_77-b03)
Java HotSpot(TM) 64-Bit Server VM (build 25.77-b03, mixed mode)

2)安装部署tomcat,启动服务并测试访问效果,同时设置开机自启

# tar -xf apache-tomcat-8.0.30.tar.gz -C /usr/local/
# cd /usr/local/
# mv apache-tomcat-8.0.30 tomcat
#     /usr/local/tomcat/bin/catalina.sh start
# netstat -anput|grep 8080
# tail -1 /etc/rc.local
/usr/local/tomcat/bin/catalina.sh start

3)拷贝jar包到/usr/local/tomcat/lib/

# cp session/*.jar /usr/local/tomcat/lib/

4)修改context文件

# tail -5 /usr/local/tomcat/conf/context.xml|head -4
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
        memcachedNodes="mem1:192.168.4.10:11211"
        requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
        transcoderFactoryClass="de.javakaffee.web.msm.JavaSerializationTranscoderFactory"/>

5)搭建测试页面,重启tomcat

# cat /usr/local/tomcat/webapps/ROOT/test.jsp 
<html>
        <body bgcolor="red">
            <center>
<%String s = session.getId();%>  
<%=s%>
                <h1>tomcatA </h1>
            </center>
        </body>
</html>
# /usr/local/tomcat/bin/catalina.sh stop
# /usr/local/tomcat/bin/catalina.sh start

6)在其他tomcat节点上安装JDK,拷贝tomcat到其他tomcat节点。为测试方便需修改测试页面标识tomcatA、tomcatB,同时设置开机自启tomcat

# rpm -ivh jdk-8u77-linux-x64.rpm  tomcat需要JDK环境,注意在其他节点上安装
# scp -r /usr/local/tomcat 192.168.4.11:/usr/local/
# sed -n '/tomcat/p' /usr/local/tomcat/webapps/ROOT/test.jsp
                <h1>tomcatA </h1>
# sed -n '/tomcat/p' /usr/local/tomcat/webapps/ROOT/test.jsp
                <h1>tomcatB </h1>

4、修改nginx配置文件,反向代理tomcat

1)修改nginx配置文件,调用后端tomcat集群

# egrep -v "#|^$" /usr/local/nginx/conf/nginx.conf
worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    #keepalive_timeout  65;
    upstream tomcats {
	server 192.168.4.12:8080 weight=1;
	server 192.168.4.11:8080 weight=2;
    }
    server {
        listen       192.168.4.10:80;
        server_name  localhost;
        location / {
           proxy_pass http://tomcats; 
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

2)重启nginx服务

# /usr/local/nginx/sbin/nginx -s stop
# /usr/local/nginx/sbin/nginx 

5、测试实现效果

多次刷新页面标识变化(tomcatA、tomcatB及其背景颜色),sessionID没有变化





++++++++++++++++++++++++over++++++++++++++++++++++++++++++




猜你喜欢

转载自blog.csdn.net/platowg/article/details/80297755