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代码如下:
启动两个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节点里面添加如下代码(根据序列化策略自行修改,我这里采用的是默认的序列化策略)
还有很多写的不好的地方,望大神们不惜赐教!
废话不多说,咱们先来体会体会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还是不会变化的!集群的初步部署咱们就完成了!
还有很多写的不好的地方,望大神们不惜赐教!
相关文章推荐
- memcache的原理和命中率的总结
- Windows下Memcached的安装配置方法
- 分布式缓存集群方案特性使用场景(Memcache/Redis(Twemproxy/Codis/Redis-cluster))优缺点对比及选型
- redis memcached比较
- Memcached 及 Redis 架构分析和比较(一)
- Redis与Memcached的比较
- REDIS与MEMCACHED的区别
- 缓存Redis与Memcached的比较
- Memcached 及 Redis 架构分析和比较
- 谈谈Memcached与Redis
- Memcached笔记——(一)安装&常规错误&监控
- Memcached在使用中常用到的方法
- memcached开发注意事项
- memcached&php扩展安装
- Spring与Memcached整合
- memcached实现tomcat集群的session共享
- Redis和Memcache性能测试对比
- 内存碎片和memcached slab控制碎片方法
- 简单理解Memcached的Slab Allocation
- 剖析Memcached分布式内存对象缓存系统的工作原理