对服务进行集群部署,前端进行负载均衡时,需要实现会话保持,对于同一会话的多个请求,通过集群中的一个节点来提供服务。系统的部署结构如图所示,通过Resin部署Web应用提供服务,通过Nginx进行负载均衡。基于nginx-sticky-module-ng实现会话保持。
未命名

安装

Nginx已安装(版本为1.7.9),此处介绍如何添加nginx-sticky-module-ng。
1)从https://bitbucket.org/nginx-goodies/nginx-sticky-module-ng下载源码压缩包并解压;
2)“nginx -V”查看原先安装Nginx时的配置信息:

3)在Nginx源码目录下使用上述配置信息进行配置,并添加nginx-sticky-module-ng:

4)“make”进行编译,若编译时报“src/core/ngx_sha1.h:19:17: fatal error: sha.h: No such file or directory”错误,则先执行“yum install openssl-devel”安装OpenSSL包再配置;
5)编译成功后,备份/usr/local/nginx/sbin/nginx,并使用objs/nginx覆盖/usr/local/nginx/sbin/nginx:

配置

使用Resin启动两个Web应用进程,端口分别是8082和8089,两个Web应用中都包含一个jsp页面session_sticky/test.jsp:

test.jsp在两个Web应用中的不同在于一个输出“Service 1”,另一个输出“Service 2”。
在Nginx中配置upstream和location,实现反向代理和会话保持:

测试

1)删除upstream中的“sticky”,使用默认的轮询方式进行反向代理,访问test.jsp,页面输出中交替出现“Service 1”和“Service 2”,说明请求交替发往两个Web应用,会话未保持:
1
2
2)在upstream中添加“sticky”,访问test.jsp,页面输出中一直出现“Service 1”,说明请求发往第一个应用,会话保持:
1
3)在2)的基础上,停掉第一个应用,继续访问test.jsp,页面仍有响应,输出中一直出现“Service 2”,说明请求在检测到失败后,会自动发往第二个应用,并在第二个应用会话保持:
2

标签:

基于WebSocket实现微信小程序的消息推送

微信小程序支持通过基于WebSocket进行消息推送,提供了相应的API,例如创建连接示例代码: JavaScript wx.connectSocket({ ...

阅读全文

ActiveMQ基于Zookeeper和LevelDB实现Master/Slave

ActiveMQ的Master/Slave目前支持三种实现方式: 1)Shared File System Master Slave; 2)JDBC Master Slave; 3)Replicated LevelDB Store。 对于第三种方...

阅读全文

一个简单的Dubbo示例

定义服务接口及其实现 服务接口TestService: Java package com.magicwt.service; public interface TestService { ...

阅读全文