ASP.NET应用程序服务器集群方案
2018-12-06 07:30:54来源:博客园 阅读 ()
本文采用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>
二、数据库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="60"></sessionState> </system.web> </configuration>
登陆数据库验证:
上面两张表就是根据配置自动生成保存Session的数据表。
至此Session共享问题已解决。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:ABP适配Oracle全过程
下一篇:检查字体是否存在的方法
- asp.net源程序编译为dll文件并调用的实现过程 2020-03-29
- Asp.net MVC SignalR来做实时Web聊天实例代码 2020-03-29
- ASP.NET MVC中jQuery与angularjs混合应用传参并绑定数据 2020-03-29
- Asp.Net中WebForm的生命周期 2020-03-29
- ASP.NET使用Ajax返回Json对象的方法 2020-03-23
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash