搭建所需要的相关软件和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;
}
}
}
步骤四:
<%@ 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>