Windows7 + Nginx + Memcached + Tomcat 集群 session 共享

一,环境说明

操作系统是Windows7家庭版(有点不专业哦,呵呵!),JDK是1.6的版本,

Tomcat是apache-tomcat-6.0.35-windows-x86,下载链接:http://tomcat.apache.org/

Nginx是nginx-1.3.0,下载链接:http://nginx.org/en/download.html

Memcached是memcached-1.2.6-win32-bin,下载链接:http://code.jellycan.com/files/memcached-1.2.6-win32-bin.zip,

其他所需jar包,如下列表:

memcached-session-manager-1.6.1,memcached-session-manager-tc6-1.6.1(因为Tomcat版本为6.0)

javolution-5.4.3.1,msm-javolution-serializer-1.6.1(准备使用javolution序列化方式)

spymemcached-2.7.3(依赖包),以上jar包在http://code.google.com/p/memcached-session-manager/downloads/list中都可以找到,文档http://code.google.com/p/memcached-session-manager/wiki/SetupAndConfiguration中详细介绍了不同的服务器版本,不同的jar包需求。

好,资源已经准备齐全,马上就可以开始搭建啦!

按照配置的顺序,搭建步骤可以分为四个部分:

1,Tomcat的安装和配置

2,Memcached的安装和配置

3,Nginx的安装和配置

4,应用测试

下面将严格按照步骤来介绍集群的搭建工作,请参考《Windows7 + Nginx + Memcached + Tomcat 集群 session 共享(二)》

一、Tomcat的配置安装

既然是要集群,那自然不可能是一个Tomcat咯。将tomcat的安装包apache-tomcat-6.0.35-windows-x86解压到X:/ (这个路径可以自定义),重命名加压目录,我将这个目录改名为“tomcat1”(因为还有第二个tomcat),然后COPY一份tomcat1至X:/目录,重命名为“tomcat2”。做完上述工作,我的X盘中tomcat的列表如下图(注意忽略你看到的两个虚拟机目录,呵呵!它们与本次任务不相关)。

Windows7 + Nginx + Memcached + Tomcat 集群 session 共享(二) - 落羽 - 落羽
接下来的任务就是TOMCAT的配置啦!
操作对象:$TOMCAT_HOME/conf/server.xml文件(这里注意两个TOMCAT中的文件都要修改)。
修改内容:三个端口号一个命名。
(1) <Server port="8085" shutdown="SHUTDOWN">  (tomcat2中可以为“8086”)
(2) <Connector port="8080" protocol="HTTP/1.1"      (tomcat2中可以为“8081”)
               connectionTimeout="20000"
               redirectPort="8443" />
(3) <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />   (tomcat2中可以为“8089”)
(4) <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">   (tomcat2中可以为“tomcat2”)
上面红色部分是需要修改和增加的内容,确保tomcat1和tomcat2两个目录下server.xml中的4个值不相同。
 
下面测试Tomcat是否安装成功。进入$TOMCAT_HOME/bin,运行start.bat文件,出现下图结果,表示tomcat已启动。
Windows7 + Nginx + Memcached + Tomcat 集群 session 共享(二) - 落羽 - 落羽
按照上述方法同时启动前面安装的两个TOMCAT。打开浏览器,分别输入http://localhost:{端口号},如果看到Tomcat的欢迎页,一个奔跑中的大猫,表示第一步骤已经成功完成。如果未成功,那就要仔细查看控制台的错误信息,通常是端口号冲突,一定要确保配置的端口号是未使用的端口号。
一、Memcached的安装和配置

1、 Memcached的安装

      将安装包memcached-1.2.6-win32-bin解压到X:/目录下面,重命名为memcached。打开命令提示符,进入X:/memcached的目录,输入安装命令“memcached.exe –d install”,安装memcached的windows服务,然后输入“memcached -d start”,以后memcached将作为windows的一个服务每次开机时自动启动。默认端口:11211。

      下面插入介绍一些memcached的常用命名,也是最基本的命令,不然你启动了memcached,不知道怎么停止这个服务了,也不知道是否已经启动该服务。

     (1) 查看memcached的服务是否已经启动:tasklist /fi "imagename eq memcached.exe",如下图

    Windows7 + Nginx + Memcached + Tomcat 集群 session 共享(三) - 落羽 - 落羽

(2)  memcached参数使用介绍(Win7用户要以管理员身份启动命令窗口哦!)
-p 监听的端口
     -l 连接的IP地址, 默认是本机
     -d start 启动memcached服务
    -d restart 重起memcached服务
    -d stop|shutdown 关闭正在运行的memcached服务
    -d install 安装memcached服务
    -d uninstall 卸载memcached服务
    -u 以的身份运行 (仅在以root运行的时候有效) 
    -m 最大内存使用,单位MB。默认64MB
    -M 内存耗尽时返回错误,而不是删除项
    -c 最大同时连接数,默认是1024
    -f 块大小增长因子,默认是1.25
    -n 最小分配空间,key+value+flags默认是48
    -h 显示帮助
2、memcached的配置
(1)把《Windows7 + Nginx + Memcached + Tomcat 集群 session 共享(一)》中提到的jar包(总共是5个),COPY到两个TOMCAT安装目录下的lib/中。
(2)修改文件$TOMCAT/conf/context.xml(两个tomcat中的都需要修改),在Context标签中加入如下代码:

 <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager" 

  memcachedNodes="n1:localhost:11211"   //目前机器只安装了一个memcached,所以这里只写一个节点OK。
  requestUriIgnorePattern=".*/.(png|gif|jpg|css|js)$" 
  sessionBackupAsync="false" 
  sessionBackupTimeout="100"
  transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"  //序列化类
  copyCollectionsForSerialization="false"/>

更多信息,请查看:http://code.google.com/p/memcached-session-manager/wiki/SetupAndConfiguration

一、Nginx的安装和配置

1、Nginx的安装

将安装包nginx-1.3.0.zip解压到X:/目录,目录重命名为nginx。到这里为止,我表示已经安装完成啦!

启动Nginx:进入X:/nginx目录,执行命令:start nginx.exe,弹出屏会一闪而逝。接着输入tasklist /fi "imagename eq nginx.exe",出现如下内容,表示nginx已正常启动啦!在浏览器输入http://localhost,可以看到Nginx的欢迎页。

Windows7 + Nginx + Memcached + Tomcat 集群 session 共享(三) - 落羽 - 落羽

 更多Nginx常用命令:

停止Nginx:nginx.exe -s stop|quit

重启Nginx:nginx.exe -s reload

查看Nginx版本:nginx.exe -v

参考页面:http://hi.baidu.com/ihanxo/blog/item/6d3a8a2688d24ce8d6cae201.html

 

2,Nginx的配置

修改文件$NGINX_HOME/conf/nginx.conf。


  #设定负载均衡的服务器列表

     upstream 127.0.0.1 {

         #weigth参数表示权值,权值越高被分配到的几率越大

         server 127.0.0.1:8081 weight=1;

         server 127.0.0.1:8082 weight=1;

     }

  
    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
            proxy_pass    http://127.0.0.1;
        }

     }

     红色部分是需要在nginx.conf中添加的内容。

     黑色粗体表示当前Nginx监听的主机名和端口号,在浏览器中测试的时候需要输入的内容。

    proxy_pass表示代理主机,upstream 127.0.0.1 {……}配置中配置了代理主机处理请求的两个服务。

    上述配置表示:Nginx监听到http://locahost:80的请求之后,转发到代理127.0.0.1中的两个服务中的一个,有它们来处理请求。weight表示被分配到权重,weight值越大,处理请求的机会越多。

    至此,Nginx的安装与配置结束。

配置工作已经结束了,马上开始测试吧!(记得以管理员身份启动命令提示符窗口

1、启动memcached:进入X:/memcached目录,执行memcached.exe -d start;

2、启动Nginx:进入X:/nginx目录,执行start nginx.exe;

3、启动两个TOMCAT,分别进入$TOMCAT_HOME/bin目录,执行start.bat;

4、准备测试页面test.jsp。

<%@ page contentType="text/html; charset=GBK" %>

<%@ page import="java.util.*" %>

<html><head><title>Cluster Test (TOMCAT1|TOMCAT2)</title></head>

<body>

<%

System.out.println(session.getId());

out.println("<br> This is (TOMCAT1|TOMCAT2), SESSION ID:" + session.getId()+"<br>");

%>

</body>

</html>

      不同的Tomcat下放置不同的文件,以便从结果中看出SESSION共享的效果,即:不论是访问TOMCAT1还是TOMCAT2,session都是不变的,同一个sessioin。

在浏览器输入http://localhost/test.jsp,然后不停的刷新页面,即可看到效果了。

我的页面效果:

Windows7 + Nginx + Memcached + Tomcat 集群 session 共享(四) - 落羽 - 落羽
Windows7 + Nginx + Memcached + Tomcat 集群 session 共享(四) - 落羽 - 落羽
结果说明:n1:memcached节点ID,我们在$TOMCAT/conf/context.xml中仅配置了一个节点,ID为“n1”,显示的sessionID就是存储在这个节点上的,后面跟着的tomcatN,表示目前所访问的web应用服务器的名称,这个值在$TOMCAT_HOME/conf/server.xml中的<Engine>标签的jvmRoute属性中已配置。

杨航收集技术资料,分享给大家


 



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/388391.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大数据 vr csdn_VR中的数据可视化如何革命化科学

大数据 vr csdnAstronomy has become a big data discipline, and the ever growing databases in modern astronomy pose many new challenges for analysts. Scientists are more frequently turning to artificial intelligence and machine learning algorithms to analyze…

Xcode做简易计算器

1.创建一个新项目&#xff0c;选择“View-based Application”。输入名字“Cal”&#xff0c;这时会有如下界面。 2.选择Resources->CalViewController.xib并双击&#xff0c;便打开了资源编辑对话框。 3.我们会看到几个窗口。其中有一个上面写着Library&#xff0c;这里…

导入数据库怎么导入_导入必要的库

导入数据库怎么导入重点 (Top highlight)With the increasing popularity of machine learning, many traders are looking for ways in which they can “teach” a computer to trade for them. This process is called algorithmic trading (sometimes called algo-trading)…

windows查看系统版本号

windows查看系统版本号 winR,输入cmd&#xff0c;确定&#xff0c;打开命令窗口&#xff0c;输入msinfo32&#xff0c;注意要在英文状态下输入&#xff0c;回车。然后在弹出的窗口中就可以看到系统的具体版本号了。 winR,输入cmd&#xff0c;确定&#xff0c;打开命令窗口&…

02:Kubernetes集群部署——平台环境规划

1、官方提供的三种部署方式&#xff1a; minikube&#xff1a; Minikube是一个工具&#xff0c;可以在本地快速运行一个单点的Kubernetes&#xff0c;仅用于尝试Kubernetes或日常开发的用户使用。部署地址&#xff1a;https://kubernetes.io/docs/setup/minikube/kubeadm Kubea…

更便捷的画决策分支图的工具_做出更好决策的3个要素

更便捷的画决策分支图的工具Have you ever wondered:您是否曾经想过&#xff1a; How did Google dominate 92.1% of the search engine market share? Google如何占领搜索引擎92.1&#xff05;的市场份额&#xff1f; How did Facebook achieve 74.1% of social media marke…

的界面跳转

在界面的跳转有两种方法&#xff0c;一种方法是先删除原来的界面&#xff0c;然后在插入新的界面&#xff1a;如下代码 if (self.rootViewController.view.superview nil) { [singleDollController.view removeFromSuperview]; [self.view insertSubview:rootViewControlle…

计算性能提升100倍,Uber推出机器学习可视化调试工具

为了让模型迭代过程更加可操作&#xff0c;并能够提供更多的信息&#xff0c;Uber 开发了一个用于机器学习性能诊断和模型调试的可视化工具——Manifold。机器学习在 Uber 平台上得到了广泛的应用&#xff0c;以支持智能决策制定和特征预测&#xff08;如 ETA 预测 及 欺诈检测…

矩阵线性相关则矩阵行列式_搜索线性时间中的排序矩阵

矩阵线性相关则矩阵行列式声明 (Statement) We have to search for a value x in a sorted matrix M. If x exists, then return its coordinates (i, j), else return (-1, -1).我们必须在排序的矩阵M中搜索值x 。 如果x存在&#xff0c;则返回其坐标(i&#xff0c;j) &#x…

一地鸡毛 OR 绝地反击,2019年区块链发展指南

如果盘点2018年IT技术领域谁是“爆款流量”,那一定有个席位是属于区块链的,不仅经历了巨头、小白纷纷入场的光辉岁月,也经历了加密货币暴跌,争先退场的一地鸡毛。而当时间行进到2019年,区块链又将如何发展呢? 近日,全球知名创投研究机构CBInsight发布了《What’s Next …

iphone UITableView及UIWebView的使用

1。新建一个基于Navigation&#xff0d;based Application的工程。 2。修改原来的RootViewController.h,RootViewController.m,RootViewController.xib为MyTableViewController.h,MyTableViewController.m,MyTableViewController.xib。 3。点击MainVindow.xib&#xff0c;将R…

物联网数据可视化_激发好奇心:数据可视化如何增强博物馆体验

物联网数据可视化When I was living in Paris at the beginning of this year, I went to a minimum of three museums a week. While this luxury was made possible by the combination of an ICOM card and unemployment, it was founded on a passion for museums. Looking…

计算机公开课教学反思,语文公开课教学反思

语文公开课教学反思引导语&#xff1a; 在语文的公开课结束后&#xff0c;教师们在教学 有哪些需要反思的呢?接下来是yjbys小编为大家带来的关于语文公开课教学反思&#xff0c;希望会给大家带来帮助。篇一&#xff1a;语文公开课教学反思今天早上&#xff0c;我上了一节语文…

bigquery数据类型_将BigQuery与TB数据一起使用后的成本和性能课程

bigquery数据类型I’ve used BigQuery every day with small and big datasets querying tables, views, and materialized views. During this time I’ve learned some things, I would have liked to know since the beginning. The goal of this article is to give you so…

中国计算机学科建设,计算机学科建设战略研讨会暨“十四五”规划务虚会召开...

4月15日下午&#xff0c;信息学院计算机系举办了计算机科学与技术学科建设战略研讨会暨“十四五”规划务虚会。本次会议的主旨是借第五轮学科评估的契机&#xff0c;总结计算机学科发展的优劣势&#xff0c;在强调保持优势的同时&#xff0c;更着眼于短板和不足&#xff0c;在未…

服务器被攻击怎么修改,服务器一直被攻击怎么办?

原标题&#xff1a;服务器一直被攻击怎么办&#xff1f;有很多人问说&#xff0c;网站一直被攻击&#xff0c;什么被挂马&#xff0c;什么被黑&#xff0c;每天一早打开网站&#xff0c;总是会出现各种各样的问题&#xff0c;这着实让站长们揪心。从修改服务器管理账号开始&…

脚本 api_从脚本到预测API

脚本 apiThis is the continuation of my previous article:这是我上一篇文章的延续&#xff1a; From Jupyter Notebook To Scripts从Jupyter Notebook到脚本 Last time we discussed how to convert Jupyter Notebook to scripts, together with all sorts of basic engine…

Iphone代码创建视图

要想以编程的方式创建视图&#xff0c;需要使用视图控制器中定义的viewDidLoad方法&#xff0c;只有在运行期间生成UI时才需要实现该方法。 在此只贴出viewDidLoad方法的代码&#xff0c;因为只需要在这个方法里面编写代码&#xff1a; [cpp] view plaincopyprint?- (void)vi…

binary masks_Python中的Masks概念

binary masksAll men are sculptors, constantly chipping away the unwanted parts of their lives, trying to create their idea of a masterpiece … Eddie Murphy所有的人都是雕塑家&#xff0c;不断地消除生活中不必要的部分&#xff0c;试图建立自己的杰作理念……埃迪墨…

Iphone在ScrollView下点击TextField使文本筐不被键盘遮住

1.拖一个Scroll View视图填充View窗口&#xff0c;将Scroll View视图拖大一些&#xff0c;使其超出屏幕。 2.向Scroll View拖&#xff08;添加&#xff09;多个Label视图和Text View视图。 3.在.h头文件中添加如下代码&#xff1a; [cpp] view plaincopyprint?#import <U…