ASP.NET应用程序服务器集群方案
本文采用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应用程序服务器集群方案的更多相关文章
- 开源流媒体服务器SRS学习笔记(4) - Cluster集群方案
单台服务器做直播,总归有单点风险,利用SRS的Forward机制 + Edge Server设计,可以很容易搭建一个大规模的高可用集群,示意图如下 源站服务器集群:origin server clus ...
- PostgreSQL高可用性、负载均衡、复制与集群方案介绍
目录[-] 一.高可用性.负载均衡.复制的几个方案比较: 二.多节点集群方案比较 9.3官方文档(中文):http://58.58.27.50:8079/doc/html/9.3.1_zh/high- ...
- Redis集群方案介绍
由于Redis出众的性能,其在众多的移动互联网企业中得到广泛的应用.Redis在3.0版本前只支持单实例模式,虽然现在的服务器内存可以到100GB.200GB的规模,但是单实例模式限制了Redis没法 ...
- Linux服务器集群系统(二)--转
引用地址:http://www.linuxvirtualserver.org/zh/lvs2.html LVS集群的体系结构 章文嵩 (wensong@linux-vs.org) 2002 年 4 月 ...
- 10分钟搭建服务器集群——Windows7系统中nginx与IIS服务器搭建集群实现负载均衡
分布式,集群,云计算机.大数据.负载均衡.高并发······当耳边响起这些词时,做为一个菜鸟程序猿无疑心中会激动一番(或许这是判断是否是一个标准阿猿的标准吧)! 首先自己从宏观把控一下,通过上网科普自 ...
- 浅析Linux服务器集群系统技术
浅析Linux服务器集群系统技术 目录 前言 常用的服务器集群 集群系统的优势 LVS集群的通用体系结构 为什么使用层次的体系结构 为什么是共享存储 可伸缩Web服务 前言 总结两篇技术文章,努力学习 ...
- Redis 集群方案介绍
由于Redis出众的性能,其在众多的移动互联网企业中得到广泛的应用.Redis在3.0版本前只支持单实例模式,虽然现在的服务器内存可以到100GB.200GB的规模,但是单实例模式限制了Redis没法 ...
- 分布式缓存集群方案特性使用场景(Memcache/Redis(Twemproxy/Codis/Redis-cluster))优缺点对比及选型
分布式缓存集群方案特性使用场景(Memcache/Redis(Twemproxy/Codis/Redis-cluster))优缺点对比及选型 分布式缓存特性: 1) 高性能:当传统数据库面临大规模 ...
- 转载-lvs官方文档-Linux服务器集群系统(二)
Linux服务器集群系统(二) LVS集群的体系结构 章文嵩 (wensong@linux-vs.org) 2002 年 4 月 本文主要介绍了LVS集群的体系结构.先给出LVS集群的通用体系结构,并 ...
随机推荐
- 查询APP Store已发布过的版本记录
1.国内APP使用 酷传 搜索,即可查询到版本记录 2.国外的APP 无法通过国内软件进行搜索,可在App store中直接查询.步骤如下:
- HrbustOJ 1564 螺旋矩阵
Description 对于给定的一个数n,要你打印n*n的螺旋矩阵. 比如n=3时,输出: 1 2 3 8 9 4 7 6 5 Input 多组测试数据,每个测试数据包含一个整数n(1<=n& ...
- No module named MySQLdb
解决办法 easy_install mysql-python (mix os) pip install mysql-python (mix os/ python 2) pip install mysq ...
- 『动态』动态JSON万能转换函数 + .Net40 dynamic动态数据绑定
不废话,调用代码: static void Main(string[] args) { string json = File.ReadAllText("2.txt", Encodi ...
- shell-输入与输出<echo, read, cat, tee >
1. echo echo命令可以显示文本行或变量,或者吧字符串输入到文件. 用法:echo [option] string #[option]可选:-e ==>解析转移字符,(常用的\n & ...
- 大数据与 AI 生态中的开源技术总结
本文由云+社区发表 作者:堵俊平 在数据爆炸与智能革命的新时代,新的平台与应用层出不穷,开源项目推动了前沿技术和业界生态快速发展.本次分享将以技术和生态两大视角来看大数据和人工智能技术的发展,通过分析 ...
- Java面向接口编程,低耦合高内聚的设计哲学
接口体现的是一种规范和实现分离的设计哲学,充分利用接口可以极大的降低程序中各个模块之间的耦合,提高系统的可维护性以及可扩展性. 因此,很多的软件架构设计理念都倡导"面向接口编程"而 ...
- Windows 安装 Scoop
Scoop介绍 scoop是Windows下的包管理工具 安装环境要求 1,操作环境:win10 2,确保你的 PowerShell 版本 >= 3. win7或许低于3,得升级.如何确认Pow ...
- 人生路上对我影响最大的三位老师&&浅谈师生关系
三位老师分别是父母,初升高的罗老师,高考前的谭老师 很小的时候,就是父母引导我学习的,并且在我失去学习信心的时候给我鼓励以及骄傲事的压力,使得我小学打下了不错的基础. 到了初中,成绩慢慢变差,初三勉强 ...
- 使用CAS实现无锁列队-链表
#include <stdlib.h> #include <stdio.h> #include <pthread.h> #include <iostream& ...