nginx+memcached+tomcat创建集群

上大学的时候就听老师说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还是不会变化的!集群的初步部署咱们就完成了!
还有很多写的不好的地方,望大神们不惜赐教!




评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值