您的位置:首页 > 数据库 > Memcache

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

2014-10-29 14:08 471 查看


搭建所需要的相关软件和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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: