Nginx+Tomcat+Memcache实现负载均衡及Session共享
第一部分 环境介绍
部署环境:
Host1:Nginx、Memcached、Tomcat1
Host2:Tomcat2
Tomcat_version:8.0.38
第二部分 Nginx+Tomcat实现负载均衡
1、nginx及tomcat的安装省略
2、nginx负载均衡配置:
http标签中定义tomcat集群:
upstream tomcat_server {
server 101.200.229.38:8080;
server 101.200.162.214:8080;
}
server中设置代理,将请求转发给后端tomcat集群处理:
server {
listen 80;
server_name www.xxx.com;
location / {
proxy_pass http://tomcat_server;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
关于nginx负载均衡的策略,有以下几种方式:
2.1 ip_hash:
根据客户端地址,同一个ip地址分配给同一台后段服务器处理,这样可以解决session的问题。但是如果该后端服务器宕掉,则session会失效。
缺点:局域网内的用户使用的是同一个公网IP,这对于ip_hash来说,会被认为是同一个客户端,因此总是会将这个公网ip的请求交给同一个后端服务器来处理,因此起不到负载均衡的作用。
2.2 轮询:
每一个请求,按照时间顺序,逐一分配给后端不同的服务器。
缺点:需要对后端服务器做session共享。
2.3 权重:
每个请求,根据后端服务器的权重值来转发。权重越大,表明该服务器处理能力相对越高。主要用于后端服务器性能不同的情况。
第三部分 利用MSM框架实现session共享
Github项目地址:https://github.com/magro/memcached-session-manager
1、msm框架主要使用缓存(如memcache、redis)来存储session信息,后端服务器都可以从该缓存中读写session。
2、tomcat序列化(Serializable)策略介绍:
序列化是指将对象以字符串形式在网络上传输、存储、读取的过程。
java有以下几种序列化框架:
kryo-serializer
javolution-serializer
xstream-serializer
flexjson-serializer
每种序列化框架需要的依赖jar包不同,本例使用javolution框架
3、准备需要的jar包:
Github上提供了下载链接:https://github.com/magro/memcached-session-manager/wiki/SetupAndConfiguration
本例需要的jar包及版本如下:
asm-5.1.jar
minlog-1.3.0.jar
javolution-5.5.1.jar
reflectasm-1.11.3.jar
msm-javolution-serializer-1.9.5.jar
memcached-session-manager-1.9.5.jar
memcached-session-manager-tc8-1.9.5.jar
注意:对各jar的版本兼容性要求极高!
将以上jar包放在tomcat/lib/目录下。
4、安装memcached,启动memcached:
/usr/local/memcached/bin/memcached -m 512 -d -u memcache -p 11011 -c 1024
-m表示分配内存大小
-d表示后台运行
-u表示以某一用户运行
-p表示监听的端口号
-c表示接受的连接数
tomcat/conf/context.xml配置:
<Context>标签中添加如下内容:
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:127.0.0.1:11011"
sticky="false"
sessionBackupAsync="false"
failoverNodes=""
sessionBackupTimeout=""
lockingMode="uriPattern:/path1|/path2"
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"/>
以上配置后,重启tomcat即可。
参考:http://blog.csdn.net/remote_roamer/article/details/51133790
Nginx+Tomcat+Memcache实现负载均衡及Session共享的更多相关文章
- keepalived+nginx+tomcat+redis实现负载均衡和session共享(原创)
keepalived+nginx+tomcat+redis实现负载均衡和session共享 直接上链接,码了一天,就不再重写了,希望能帮到大家,有问题欢迎留言交流.
- Nginx+Tomcat8+Memcached实现负载均衡及session共享
1> 基础环境 简易拓扑图: 2> 部署Tomcat [root@node01 ~]# ll -h ~ |egrep 'jdk|tomcat'-rw-r--r-- 1 root root ...
- nginx+tomcat集群负载均衡(实现session复制)
转自:http://talangniao.iteye.com/blog/341512 架构描述 前端一台nginx服务器做负载均衡器,后端放N台tomcat组成集群处理服务,通过nginx转发到后面( ...
- windows系统下nginx+tomcat+redis做负载均衡和session粘滞附整套解决方案
Nginx: 在nginx-1.8.0\conf目录下找到nginx.conf文件,打开文件修改文件中http{}中的内容,在http{}中加入 upstream localhost { serve ...
- Nginx反向代理实现负载均衡以及session共享
随着社会的发展和科技水平的不断提高,互联网在人们日常生活中扮演着越来越重要的角色,同时网络安全,网络可靠性等问题日益突出.传统的单体服务架构已不能满足现代用户需求.随之而来的就是各种分布式/集群式的服 ...
- nginx + tomcat + memcached 做负载均衡及session同步
1.nginx配置 # For more information on configuration, see: # * Official English Documentation: http://n ...
- Nginx+Tomcat+Redis实现负载均衡、资源分离、session共享
Nginx+Tomcat+Redis实现负载均衡.资源分离.session共享 CentOS安装Nginx http://centoscn.com/CentosServer/www/2013/0910 ...
- nginx+tomcat+redis负载均衡及session共享
概述 本文档是用来详细描述 nginx+tomcat+redis负载均衡实现session共享 所需软件及下载地址 软件名称 下载地址 功能说明 Nginx-v1.6.0 http://nginx.o ...
- haproxy+tomcat实现负载均衡以及session共享(linux centos7环境)
一.安装HAProxy 1.进入home目录,下载最新haproxy安装包. cd /home wget http://haproxy.1wt.eu/download/1.4/src/haproxy- ...
随机推荐
- “Hello World!”Final发布文案加美工
文案: 大家好,我们是“Hello World!”团队,本次我将向大家简要介绍一下空天猎的final发布,在空天猎final发布中,我主要从以下两个方面向大家进行介绍,第一个方面是增加了敌方的boss ...
- Bing词典vs有道词典比对测试报告
功能篇 核心功能测评:http://www.cnblogs.com/C705/p/4075554.html 细节与用户体验:http://www.cnblogs.com/C705/p/4077112. ...
- CS小分队第二阶段冲刺站立会议(6月2日)
昨日成果:攻克了按钮移动的问题: 遇到问题:一开始按钮移动时候,非常慢,因为是根绝相对位移差来移动,延时很严重,后来改用用鼠标的位置作为按钮的移动位置,效果明显. 按钮的mousedown事件和mou ...
- Sprint8
进展:添加事件主界面实现之后,实现事件添加部分代码的编写,进行设置事件提醒,选择时间.
- Task 8 找水王
任务: 三人行设计了一个灌水论坛.信息学院的学生都喜欢在上面交流灌水,传说在论坛上有一个“水王”,他不但喜欢发帖,还会回复其他ID发的每个帖子.坊间风闻该“水王”发帖数目超过了帖子数目的一半. 如果你 ...
- mybatis连接数据库的几种方式
1.可以通过配置文件 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="ht ...
- C#设置代码只在调试模式下执行
获取一个值,它指示调试器是否已附加到进程. 命名空间:Namespace:System.Diagnostics if (Debugger.IsAttached) { Response.Write(&q ...
- 项目总结之关于JQuery一些常用的函数
最近做一个小的项目,用到了很多关于jquery函数,下面简单总结下自我感觉比较常用的一些函数. jquery函数--Hide函数用法 jquery中,hide函数用于实现层的消失,相反,show函数用 ...
- tomcat文件中server.xml 实例说明
<?xml version='1.0' encoding='utf-8'?> # 这是server类, 指定一个tomcat的应用实例 <Server port="80 ...
- epel [Errno 14] problem making ssl connection
问题描述: 执行yum命令时,报错[Errno 14] problem making ssl connection 问题分析: ssl证书问题 问题解决: sed -i 's/^#baseurl/ba ...