本文采用Nginx来实现ASP.NET程序集群化。

  准备环境

  首先准备Nginx环境,Windows版本下载链接:http://nginx.org/en/download.html

  解压后文件格式如下:

  

  修改配置文件

  打开 conf 文件夹中的 nginx.conf 配置文件

  

  配置说明:

  1.listen #表示需要监听的端口(默认为80)

  2.server_name #服务器地址

  3.location #代理配置

  4.upstream #配置负载均衡服务器列表(处理监听到请求的服务器)

  需要注意的是 upstream 中的 ip_hash; 节点,该节点表示启用Nginx的ip哈希分配算法,意味着同一ip地址的不同请求将会被分配至同一服务器。好处就是不用借助第三方工具管理Session,坏处就是并非正真的负载均衡(会出现有的服务器请求处理不过来,有的服务器只接收到少量的请求)。若使用第三方Session管理工具请删除此配置节点。

  测试

  启动nginx.exe程序

  浏览器访问我们配置的负载均衡服务器节点,即 127.0.0.1:2018 (端口根据自己部署的程序配置)。

  提示

  在整个配置中需要注意的是80端口被占用的问题。或者像我一样改Nginx的监听端口(如果更改监听端口则可以忽略下面的问题)

  1.将IIS中默认的Default Web Site端口改掉

  2.如果电脑装有Sql server 则还需关闭SQL Server Reporting Services服务(此服务会占用80端口)

  3.其它问题敬请百度...

  不同服务器同步Session

  如果启用Nginx的ip_hash配置请忽略本条,此项针对不同服务器之间Session共享提供建议方案。  

  一、状态服务器Session(启动独立的进程保存Session)    

  首先开启一个ASP.NET 状态设置的服务

即:在 “我的电脑” 鼠标右键--->管理--->服务和应用程序----> 服务--->ASP.NET状态服务(或者ASP.NET State Service)--->点击右键选择“启动”

启动ASP.NET状态服务后,然后再Web.config配置文件中添加<sessionState>这个节点内容

<?xml version="1.0" encoding="utf-8"?>

<!--
有关如何配置 ASP.NET 应用程序的详细信息,请访问
http://go.microsoft.com/fwlink/?LinkId=169433
--> <configuration>
<system.web>
<compilation debug="true" targetFramework="4.5" />
<httpRuntime targetFramework="4.5" />
<!--状态服务器Session的配置 :添加这一段代码-->
<sessionState stateConnectionString="tcpip=127.0.0.1:2018" mode="StateServer"></sessionState>
</system.web> </configuration>

Config

  二、数据库Session

  怎么将Session记录到数据库中呢? 其实微软已经为我们设置好了。只要我们简单的配置一下就行了。

首先。我们进入C盘下的 Windows文件夹 下的Microsoft.Net文件夹下的Framework/Framework64文件夹下的v4.0.30319文件夹下:找到aspnet_regsql 文件。

具体的路径是: C:\Windows\Microsoft.NET\Framework64\v4.0.30319

然后:快捷键win+R调出cmd 命令窗口

在cmd中进入C:\Windows\Microsoft.NET\Framework64\v4.0.30319文件夹下

即:在cmd 命令中输入:cd C:\Windows\Microsoft.NET\Framework64\v4.0.30319

然后执行 aspnet_regsql.exe -S . -U sa -P 123456 -ssadd -sstype c -d Demo

解释一下 aspnet_regsql.exe表示执行这个文件 ,-S  后接的参数为数据库服务器的名称或者IP地址;-U 表示SqlServer的登陆用户名是sa  ,-P 表示登陆密码是123456   最后面的demo是数据库名,即:你要将Session保存到哪个数据库下。

点击回车键后,直到执行完毕

  

  Web.Config配置:

<?xml version="1.0" encoding="utf-8"?>

<!--
有关如何配置 ASP.NET 应用程序的详细信息,请访问
http://go.microsoft.com/fwlink/?LinkId=169433
--> <configuration>
<system.web>
<compilation debug="true" targetFramework="4.5" />
<httpRuntime targetFramework="4.5" />
<!--进程外Session添加这一段代码-->
<!--<sessionState stateConnectionString="tcpip=127.0.0.1:2018" mode="StateServer"></sessionState>--> <!--数据库Session配置文件-->
<!--timeout是设置Session过期时间,这里设为60分钟。如果不设置,则默认为20分钟-->
<sessionState sqlConnectionString="server=.;database=Demo;uid=sa;pwd=123456" allowCustomSqlDatabase="true" mode="SQLServer" timeout=""></sessionState>
</system.web> </configuration>

Config

  登陆数据库验证:

上面两张表就是根据配置自动生成保存Session的数据表。

至此Session共享问题已解决。

ASP.NET应用程序服务器集群方案的更多相关文章

  1. 开源流媒体服务器SRS学习笔记(4) - Cluster集群方案

    单台服务器做直播,总归有单点风险,利用SRS的Forward机制 + Edge Server设计,可以很容易搭建一个大规模的高可用集群,示意图如下 源站服务器集群:origin server clus ...

  2. PostgreSQL高可用性、负载均衡、复制与集群方案介绍

    目录[-] 一.高可用性.负载均衡.复制的几个方案比较: 二.多节点集群方案比较 9.3官方文档(中文):http://58.58.27.50:8079/doc/html/9.3.1_zh/high- ...

  3. Redis集群方案介绍

    由于Redis出众的性能,其在众多的移动互联网企业中得到广泛的应用.Redis在3.0版本前只支持单实例模式,虽然现在的服务器内存可以到100GB.200GB的规模,但是单实例模式限制了Redis没法 ...

  4. Linux服务器集群系统(二)--转

    引用地址:http://www.linuxvirtualserver.org/zh/lvs2.html LVS集群的体系结构 章文嵩 (wensong@linux-vs.org) 2002 年 4 月 ...

  5. 10分钟搭建服务器集群——Windows7系统中nginx与IIS服务器搭建集群实现负载均衡

    分布式,集群,云计算机.大数据.负载均衡.高并发······当耳边响起这些词时,做为一个菜鸟程序猿无疑心中会激动一番(或许这是判断是否是一个标准阿猿的标准吧)! 首先自己从宏观把控一下,通过上网科普自 ...

  6. 浅析Linux服务器集群系统技术

    浅析Linux服务器集群系统技术 目录 前言 常用的服务器集群 集群系统的优势 LVS集群的通用体系结构 为什么使用层次的体系结构 为什么是共享存储 可伸缩Web服务 前言 总结两篇技术文章,努力学习 ...

  7. Redis 集群方案介绍

    由于Redis出众的性能,其在众多的移动互联网企业中得到广泛的应用.Redis在3.0版本前只支持单实例模式,虽然现在的服务器内存可以到100GB.200GB的规模,但是单实例模式限制了Redis没法 ...

  8. 分布式缓存集群方案特性使用场景(Memcache/Redis(Twemproxy/Codis/Redis-cluster))优缺点对比及选型

    分布式缓存集群方案特性使用场景(Memcache/Redis(Twemproxy/Codis/Redis-cluster))优缺点对比及选型   分布式缓存特性: 1) 高性能:当传统数据库面临大规模 ...

  9. 转载-lvs官方文档-Linux服务器集群系统(二)

    Linux服务器集群系统(二) LVS集群的体系结构 章文嵩 (wensong@linux-vs.org) 2002 年 4 月 本文主要介绍了LVS集群的体系结构.先给出LVS集群的通用体系结构,并 ...

随机推荐

  1. Jmeter-----【mac电脑】配置web浏览器的代理抓取请求

    在测试中,不仅会涉及到APP中的数据测试,时常我们APP的数据需要与后台进行交互,因此我们不可避免的也需要对web进行接口测试,更准确的来说是使用web的接口来快速的帮我们实现App中所需的数据录入, ...

  2. 【数学基础篇】---详解极限与微分学与Jensen 不等式

    一.前述 数学基础知识对机器学习还有深度学习的知识点理解尤为重要,本节主要讲解极限等相关知识. 二.极限 1.例子 当 x 趋于 0 的时候,sin(x) 与 tan(x) 都趋于 0. 但是哪一个趋 ...

  3. Spark学习之RDD编程总结

    Spark 对数据的核心抽象——弹性分布式数据集(Resilient Distributed Dataset,简称 RDD).RDD 其实就是分布式的元素集合.在 Spark 中,对数据的所有操作不外 ...

  4. Vue.js 牛刀小试(持续更新~~~)

    一.前言 这个系列的文章开始于今年9月从上一家公司辞职后,在找工作的过程中,觉得自己应该学习一些新的东西,从前几章的更新日期也可以看出,中间隔了很长的时间,自己也经历了一些事情,既然现在已经稳定了,就 ...

  5. Access2007数据库下载地址与AccessHelper

    链接:https://pan.baidu.com/s/1pLzOlTv0nqSbhzujHZht1w 提取码:1m9l AccessHelper: using System; using System ...

  6. JAVA SPI(Service Provider Interface)原理、设计及源码解析(其一)

    背景 团队内部轮流技术分享,其他人都是分享源码,我每次都是设计和架构,感觉自己太特立独行.这次我要合群点,分享点源码. 概念 Service Provider Interface:服务提供方接口.是一 ...

  7. springboot中HandlerMethodArgumentResolver的使用

    springboot项目中在所有的controller方法中想增加token验证,即所有的方法都必须登陆有token之后才能访问.springboot封装了SpringMVC中的HandlerMeth ...

  8. windows&lunix下node.js实现模板化生成word文件

    最近在做了一个小程序!里面有个功能就是根据用户提交的数据,自动生成一份word文档返回给用户.我也是第一次做这功能,大概思路就是先自己弄一份word模板,后台接受小程序发过来的数据,再根据这些数据将相 ...

  9. Python的垃圾回收机制(引用计数+标记清除+分代回收)

    一.写在前面: 我们都知道Python一种面向对象的脚本语言,对象是Python中非常重要的一个概念.在Python中数字是对象,字符串是对象,任何事物都是对象,而它们的核心就是一个结构体--PyOb ...

  10. jqgrid three 树形结构

    最近我们的表格中,需要更改数据的显示方式,就是jqgrid中以树形的方式显示.请先看图: 就是简单的这种从属方式.但是因为这个没有找到官方的文档(后来找到了,但是发现是翻译过来的,也不是很清楚),所以 ...