Nginx-1.6.2+Memcached-1.2.6+Tomcat7负载均衡实现Session共享

本文详细介绍如何通过Nginx实现负载均衡,并利用Memcached进行Session共享,搭建高可用性的Tomcat集群。包括各组件的安装配置过程及关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

搭建所需要的相关软件和JAR包以下:

Nginx:     nginx-1.6.2.rar

Memcached:   memcached-1.2.6-win32-bin.rar

Tomcat7:   apache-tomcat-7.0.56.rar

Tomcat JAR:   tomcat_lib.rar

前置服务器上: 安装Nginx软件实现负载均衡;

服务器A, B, C上: 安装Memcached实现Session共享, Tomcat7;


步骤一:

Memcached软件安装:

解压memcached-1.2.6-win32-bin.rar, 比如解压到E盘, 在DOS下进入memcached-1.2.6-win32-bin目录

E:\memcached-1.2.6-win32-bin\memcached -h       显示memcached参数

参数说明:

-m <num> 允许最大内存用量, 单位M(默认:64MB)

-u <username> 绑定使用指定用于运行进程<username>

-d start    开始启动Memcached服务

-l <ip_addr> 绑定地址(默认:所有都允许,无论内外网或者本机更换IP, 有安全隐患, 若设置为127.0.0.1就只能本机访问)

-p <num> 设置TCP端口号(默认不设置为:11211)

-d install    安装Memcached服务

-d uninstall   卸载Memcached服务

-d restart  重启Memcached服务

 

E:\memcached-1.2.6-win32-bin\memcached -d install          安装Memcached服务

E:\memcached-1.2.6-win32-bin\memcached -m 1024 -u root -d start -l 10.0.0.95 -p 11211    指定用量, 进程, IP, 端口, 并启动Memcached

如果防火墙拦截了11211端口号, 请通过以下方法添加端口号, 以下是Windows 7添加方法:

step1、点击控制面板
  
step2、选择windows防火墙,点击高级设置
  
step3、在弹出的“高级安全windows防火墙”点击“入站规则”,在右侧“操作”栏点击“入站规则”下的“新建规则…”,此时会弹出一个窗口让你设置。剩下的就非常傻瓜化了。
  
step4、弹出“新建入站规则向导”-规则类型-选中“端口”,点击下一步。选择规则应用的协议“TCP/UDP”如果是TCP你就选择TCP,UDP就选择UDP。再勾选“特定本地端口”在文本框输入您想开放的端口号(例如1521)。
  
step5、点击下一步,到“连接符合指定条件时应该进行什么操作?”选择“允许连接”。点击下一步到“配置文件”何时应用该规则,勾选“域”、“专用”、“公用”点击下一步。
  
step6、配置规则名称,随便输入你自己认为好记的规则名称即可。

步骤二:

Tomcat7配置:

1. 解压tomcat_lib.rar出来, 把所有jar文件, 复制到tomcat安装目录lib中;

2. 修改conf/server.xml文件, 找到Engine标签, 添加jvmRoute属性, 以下:

<Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm95">
3. 修改conf/context.xml文件, 添加以下内容到Context标签内, memcachedNodes这个属性必须包含你所有运行的memcached节点, 每个节点的定义格式为<id>:<host>:<port>。
<Manager  
	className="de.javakaffee.web.msm.MemcachedBackupSessionManager"  
	memcachedNodes="n95:10.0.0.95:11211,n31:10.0.0.31:11211,n39:10.0.0.39:11211"
	sticky="false"  
	sessionBackupAsync="false"  
	lockingMode="uriPattern:/path1|/path2"  
	requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"  
	transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
	copyCollectionsForSerialization="false"/>

步骤三:

Nginx软件安装:

解压nginx-1.6.2.rar, 比如解压到E盘, 在DOS下进入nginx-1.6.2目录:

E:\nginx-1.6.2\start nginx          启动Nginx;

E:\nginx-1.6.2\nginx -h                显示Nginx参数

E:\nginx-1.6.2\nginx -s stop       停止Nginx

E:\nginx-1.6.2\nginx -s reload    重新加载nginx.conf配置文件

 

nginx.conf配置文件内容以下:

#启动进程,通常设置成和cpu的数量相等
worker_processes  8;

#全局错误日志及PID文件
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
error_log  logs/error.log  info;

#pid        logs/nginx.pid;

#工作模式及连接数上限
events {
    #单个后台worker process进程的最大并发链接数
    worker_connections  1024;
}


http {
    #设定mime类型,类型由mime.type文件定义
    include       mime.types;
    default_type  application/octet-stream;

    #设定日志格式
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  logs/access.log  main;

    #sendfile 指令指定 nginx 是否调用 sendfile 函数(zero copy 方式)来输出文件,
    #对于普通应用,必须设为 on,
    #如果用来进行下载等应用磁盘IO重负载应用,可设置为 off,
    #以平衡磁盘与网络I/O处理速度,降低系统的uptime.
    sendfile        on;
    #tcp_nopush     on;

    #连接超时时间
    #keepalive_timeout  0;
    keepalive_timeout  65;

    #设定请求缓冲
    include    proxy.conf;
    #开启gzip压缩
    #include    gzip.conf;

    #设定负载均衡的服务器列表
    upstream armyqin-pc.easternphoenix.com {
	#weigth参数表示权值,权值越高被分配到的几率越大
	server 10.0.0.95:8088 weight=1;		#服务器A
	server 10.0.0.39:80 weight=1;		#服务器B
	server 10.0.0.31:80 weight=1;		#服务器C
    
	ip_hash;				#ip_hash策略将同一IP的所有请求都转发到同一应用服务器
    }

    #设定虚拟主机配置
    server {
        #侦听80端口
        listen       80;
	#定义使用 armyqin-pc.easternphoenix.com访问
        server_name  armyqin-pc.easternphoenix.com;

	#默认请求
        location / {
	    #定义服务器的默认网站根目录位置
            root   html;
	    #定义首页索引文件的名称
            index  index.html index.htm index.shtml index.jsp;

	    proxy_pass			http://armyqin-pc.easternphoenix.com;
        }

	#启用nginx status 监听页面
	location /nginxstatus {      
		stub_status on;      
		access_log on;       
		auth_basic "nginxstatus";       
		auth_basic_user_file htpasswd;         
	}

	# 定义错误提示页面
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}


步骤四:
新建一个cluster.jsp文件,编辑该文件内容如下:
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>  
<%  
String path = request.getContextPath();  
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";  
%>  
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
<html>  
  <head>  
    <base href="<%=basePath%>">    
    <title>Test</title>  
    <meta http-equiv="pragma" content="no-cache">  
    <meta http-equiv="cache-control" content="no-cache">  
    <meta http-equiv="expires" content="0">      
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">  
    <meta http-equiv="description" content="This is my page">  
    <!-- 
    <link rel="stylesheet" type="text/css" href="styles.css"> 
    -->  
  </head>  
  <body>  
    <%  
     System.out.println(session.getId());  
     out.println("<br>SESSION ID:" + session.getId()+"<br>");  
    %>  
  </body>  
</html> 





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值