https+nginx1.8+tomcat7+Memcached1.4.4集群session共享以及负载均衡环境搭建(window版本)
来源:互联网 发布:vgn p17h装linux 编辑:程序博客网 时间:2024/06/07 13:01
上学的时候一直有个梦想,就是拥有自己的网站,这个梦想在2015年10份经过自己的学习和在同事的帮助下已经实现了,同时部署阿里云ECS服务器完成备案,现在已经正式上线,后来一直听同事说nginx负载均衡能实现高并发。 于是利用下班时间搭建了Nginx和tomcat集群服务器,利用Memcached实现session共享,同时支持HTTP请求和HTTPS请求,整理了一下,分享给大家,如果存在问题,希望大家多多指点。( nginx指向两个tomcat )
一.搭建服务器环境前期准备:
1.1 安装jdk(如果没有安装包自己可以在网上下载)。
1.2需要下载 Tomcat7(win64位) 《点击下载》
1.3 需要下载 Nginx1.8.0(win64位) 《点击下载》
1.4 需要下载 Memcached1.4 (win64位) 《点击下载》
二.jdk配置环境变量 :
2.1 把jdk安装在 C:\Java\jdk1.7.0
2.1.1.新建环境变量 JAVA_HOME 值 C:\Java\jdk1.7.0
2.1.2.新建环境变量 classpath 值 .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar (注意不要丢失" . " 符号)
2.1.3.在path环境变量后面加 ;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;%CATALINA_HOME%\lib;%CATALINA_HOME%\bin
2.1.2.新建环境变量 classpath 值 .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar (注意不要丢失" . " 符号)
2.1.3.在path环境变量后面加 ;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;%CATALINA_HOME%\lib;%CATALINA_HOME%\bin
三.tomcat7配置安装 :
3.1 对于tomcat大家都很熟悉,只需要修改server.xml配置文件即可,这里我们以apache-tomcat-7.0.40为例,分别在server目录,解压缩并命名为:apache-tomcat-7.0.40_1、apache-tomcat-7.0.40_2。
第一处端口修改:
<!-- 修改port端口:18002 俩个tomcat不能重复,端口随意,别太小- --> <Server port="18002" shutdown="SHUTDOWN">第二处端口修改:
<!-- port="8082" tomcat监听端口,随意设置,别太小 --> <Connector port="8082" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />第三处端口修改:
<Connector port="28002" protocol="AJP/1.3" redirectPort="8443" />
第四处 Engine元素增加jvmRoute属性:
<Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm2">两个tomcat的端口别重复,保证能启动起来,tomcat端口分别位 8082(jvm2) 和8081(jvm1)
访问8082端口 如下图
访问8081端口如下图
3.2使用memcached-session-manager这个开源项目(http://download.csdn.net/detail/lhl18330580828/9502743,下面简称msm) 配置Tomcat和memcached实现session共享。
首先将下面的包下载到Tomcat的lib目录下,这些包都是msm所依赖的包。
首先将下面的包下载到Tomcat的lib目录下,这些包都是msm所依赖的包。
javolution-5.5.1.jar
kryo-1.03.jar
kryo-serializers-0.10.jar
memcached-2.5.jar
memcached-session-manager-1.5.1.jar
memcached-session-manager-tc7-1.5.1.jar
minlog-1.2.jar
msm-javolution-serializer-1.5.1.jar
msm-kryo-serializer-1.6.4.jar
reflectasm-0.9.jar
spymemcached-2.7.3.jar
把上述jar包放到tomcat/lib 目录下,修改每个tomcat的配置文件tomcat\conf\context.xml
<!-- 在<context>...</context>标签之间加入如下代码: --> <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager" memcachedNodes="n1:127.0.0.1:11211" sticky="false" sessionBackupAsync="false" lockingMode="uriPattern:/path1|/path2" requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$" transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory" />说明: 这里的memcachedNodes是填写memcached节点,多个节点时可以以空隔分开,如:
n1:localhost:11211 n2:localhost:11212
/localhost改为安装memcached的服务器的IP
四.Memcached 配置安装 :
4.1 在cmd控制台切换到memcached.exe所在目录,我的是在C:\memcached
4.2 输入命令memcached.exe -d install,enter后,即可完成memcached 安装 如下图:
4.3 我习惯在服务里启动并把memcached 设为手动
4.4 右键开启 memcached 后重新启动两个 tomcat,至此tomcat+memcached 搭建完毕。
五.Nginx1.8.0 配置 :
5.1通过我的域名指定到nginx 端口上,分发到上面配置好的两个tomcat 端口 8081和8082上实现负载均衡
5.2 实现https 需要开启 nginx 的443端口,我实现的是域名证书单向认证,如果是为了学习可以在沃通可以申请免费 域名证书 ,如果你想申请的话,我可以帮你(前提是自己得购买域名和服务器)。
#user nobody;worker_processes 1;#error_log logs/error.log;#error_log logs/error.log notice;#error_log logs/error.log info;#pid logs/nginx.pid;events { worker_connections 1024;}http { 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 on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; upstream localhost { #根据ip计算将请求分配各那个后端tomcat,许多人误认为可以解决session问题,其实并不能。 #同一机器在多网情况下,路由切换,ip可能不同 # ip_hash; server localhost:8081 ; server localhost:8082 ; } server { listen 80; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; #location / { # root html; # index index.html index.htm; #} rewrite ^(.*$) https://$host$1 permanent; location /ngx_status { stub_status on; access_log off; #allow 127.0.0.1; #deny all; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #location ~ \.php$ { # proxy_pass http://127.0.0.1; #} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # #location ~ \.php$ { # root html; # fastcgi_pass 127.0.0.1:9000; # fastcgi_index index.php; # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; # include fastcgi_params; #} # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # #location ~ /\.ht { # deny all; #} } # another virtual host using mix of IP-, name-, and port-based configuration # #server { # listen 8000; # listen somename:8080; # server_name somename alias another.alias; # location / { # root html; # index index.html index.htm; # } #} # HTTPS server # server { listen 443; server_name localhost; ssl on; ssl_certificate sslkey/1_www.tslhl.com_bundle.crt; ssl_certificate_key sslkey/2_www.tslhl.com.key; ssl_session_timeout 5m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers ALL:!DH:!EXPORT:!RC4:+HIGH:+MEDIUM:-LOW:!aNULL:!eNULL; ssl_prefer_server_ciphers on; location / { proxy_connect_timeout 1; proxy_send_timeout 30; proxy_read_timeout 30; proxy_pass http://localhost; } } }5.2 该项目下新建一个index.jsp文件,编辑该文件内容如下:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% 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>My JSP 'session.jsp' starting page</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> This is (TOMCAT1|TOMCAT2), SESSION ID:" + session.getId()+"<br>"); %> </body> </html>
5.3 双击nginx.exe 开启nginx 服务,这时我可以访问我的 域名
5.4 重复刷新发现session的值不变如下所示,session共享成功
5.5 我把关闭nginx做成了批处理closeNginx.bat 这样更方便内容为 ( taskkill /f /im nginx.exe)。
如果你学到了知识请为我点赞!
最后谢谢大家欣赏我的 博客,如果哪里 你发现了 问题,请多多指出,我也是菜鸟,我们共同进步!!!
0 0
- https+nginx1.8+tomcat7+Memcached1.4.4集群session共享以及负载均衡环境搭建(window版本)
- https+nginx1.8+tomcat7+Memcached1.4.4集群session共享以及负载均衡环境搭建(window版本)
- window 环境配置 Nginx1.8+Tomcat7.0 负载均衡+session同步
- nginx+tomcat7(8) 集群,负载均衡和session共享
- Nginx1.10+Tomcat7+Redis-X64-3.05+JDK7实现负载均衡和session共享(win7)
- 【高并发】Apache2.4负载均衡+Tomcat7集群+session共享
- 【 Nginx+Apache-Tomcat7+Memcached搭建负载均衡实现Session共享】
- tomcat7+apache2.2.25 集群负载均衡以及session复制配置
- Nginx1.7.4+Tomcat7+memcached集群环境搭建
- Nginx1.7.4+Tomcat7+memcached集群环境搭建
- Nginx+Tomcat7负载均衡和集群环境搭建
- Windows+Nginx+Tomcat搭建负载均衡和集群环境同时实现session共享(一)
- Windows+Nginx+Tomcat搭建负载均衡和集群环境同时实现session共享(一)
- windows环境 Apache负载均衡及session共享环境搭建
- Unbuntu server15.04 Nginx1.8 + tomcat7集群+redis3 Session共享管理配置
- 搭建Nginx(负载均衡)+Redis(Session共享)+Tomcat集群
- 搭建Nginx(负载均衡)+Redis(Session共享)+Tomcat集群
- 搭建Nginx(负载均衡)+Redis(Session共享)+Tomcat集群
- 最长上升子序列的O(nlogn)解法 (转)
- binary-tree-postorder-traversal
- iOS最新极光推送详解
- Android 使Textview等其他控件重叠,在布局的正上方中间
- Vlan--虚拟局域网
- https+nginx1.8+tomcat7+Memcached1.4.4集群session共享以及负载均衡环境搭建(window版本)
- EL表达式和标签
- 压力测试 webbench
- J2SE 之 基本语法
- 关于js获取样式笔记
- 欢迎使用CSDN-markdown编辑器
- POJ2312坦克大战(优先队列bfs)
- Notepad++背景颜色设置
- 将就OR讲究? ——APP如何成功上线