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

nginx+memcached+tomcat创建集群

2015-11-23 17:04 555 查看
上大学的时候就听老师说nginx有多好多好,考试的时候也考过相关的题目,但是在实际运用中还真没遇见过,现在开始不断的接触项目,从单个服务器,到was集群,我也越来越感受到集群在以后的发展中重要的位置,因为was是要收费的,试用版的也要下好久,干脆就研究研究nginx+tomcat吧!

废话不多说,咱们先来体会体会nginx的负载均匀的效果吧。

一、nginx部分

下载从官网上下载nginx,这里我用的nginx-1.9.4,解压缩,对于咱们初步接触nginx的,也就是修改一下E/conf/nginx.conf文件里面的内容,简单点说就是配置需要进行请求转发的服务器列表,需要修改的内容很少如下:

1、在http段加入以下代码

upstream a.com {

#我在本机测试的两个tomcat的端口

server http://127.0.0.1:8080;
server http://127.0.0.1:8081;
}

2、修改server段:

server{

listen 80;

server_name a.com;

location / {

proxy_pass http://a.com;
proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

}

}

修改hosts文件加入 127.0.0.1a.com(为了模拟域名访问,这一步可以省略,但是配置文件也就不一样了)

到这里nginx的配置就完成了。

二、java部分

接下来咱们创建两个java web工程,分别在webcontent下面创建index。jsp代码如下:

<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>index.jsp</title>
</head>
<body>
sessionid:<%=session.getId() %><br/>
web1/web2(总之这里要体现出两个工程不一样的地方,你可以用端口号,也可以随便写两个不一样的字符串,能看出区别就行)
</body>
</html>
完成之后分别加入两个tomcat中,分别设定访问端口为8080和8081,修改端口号就不在这里废话了。

启动两个tomcat,启动nginx(启动之后会闪退是正常的,咱们只需要看看进程里面有没有nginx就可以了),访问a.com 看看效果是不是一会又在web1一会又在web2上面啊,这就证明咱们负载均衡已经成功了!

三、设置session共享(这里是java版本的,PHP可以自行参考相关资料)

负载均衡咱们已经成功了,那么在生产环境上只是这样肯定不行啊,要是一宕机在客户那边session什么都没了让人摸不着头脑,咱们接下来需要做的就是在所有tomcat中共享session以达到高并发、高效率和低事故的效果(还有很多好处我就不多废话了)

安装memcached客户端,下载memcached-1.4.20,安装方式很简单,就是进入memcached.exe目录下使用命令:

memcached -d install 安装

memcached -d start启动

启动完成之后查看当前11211端口是不是处于监听状态

下载文件:memcached-session-manager-1.5.1.jar、memcached-session-manager-tc7-1.5.1.jar、spymemcached-2.7.3.jar(根据序列化策略可以选择不同的jar包,但是这三个是必须的,具体请看:基于Memcached的tomcat集群session共享所用的jar

分别在两个tomcat的/config/content.xml的content节点里面添加如下代码(根据序列化策略自行修改,我这里采用的是默认的序列化策略)

<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
</span>memcachedNodes="n1:localhost:11211"
</span>lockingMode="auto"
</span>sticky="false"
</span>requestUriIgnorePattern= ".*\.(png|gif|jpg|css|js)$"
</span>sessionBackupAsync= "false"
</span>sessionBackupTimeout= "100"
</span>transcoderFactoryClass="de.javakaffee.web.msm.JavaSerializationTranscoderFactory"
/>
到这里咱们就已经完成了所有的配置了,重启tomcat和nginx验证吧!不管是不是web1或者web2,上面的sessionid都不会变,而且咱们手动的关闭一个tomcat之后刷新sessionid还是不会变化的!集群的初步部署咱们就完成了!

还有很多写的不好的地方,望大神们不惜赐教!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: