asp.net如何实现负载均衡方案讨论

请注意,本文内容分屡次修改,如需阅读,请阅读完整,由于早期的观点是不太合理的,后面因为水平进步,已经作了修改!html

 

个人目标是我一我的搭建一个负载均衡网站。不接受这是网络部,或者运维,或者系统部的事情,全部事情都是我一我的来完成,包括掏钱,包括未来发展等等,同时也别告诉我有没有意义,just do  it !给我方案,给我方法。nginx

拥有资源:不够能够买,多了能够先闲着。web

 

如今我已经买了5台阿里云服务器,ip地址分别为算法

ip地址                      名字简称      操做系统       iis服务器     cpu   内存DDR3      机械硬盘sql

111.13.101.204       ay1            window7        iis7          4核    8GB              1TB数据库

111.13.101.205       ay2            window7        iis7          4核    8GB              1TB       windows

111.13.101.206       ay3            window7        iis7          4核    8GB              1TB浏览器

111.13.101.207       ay4            window7        iis7          2核    4GB              1TB服务器

111.13.101.208       ay5            window7        iis7          2核    4GB              1TB网络

 

我买好一个域名:www.bd.com(已备案)

 

项目已经作好,用asp.net MVC4开发,  .netFramework4.5      项目名MyBD

项目首页是index.cshtml

项目结构WebSite\xxx

使用数据库sqlserver2014

 

 

我如今但愿将项目发布多份,分别放在不一样的服务器上,可是只能用一个域名 www.bd.com,我不是子域名主域名那种应用场景。

下来我想问,我该如何操做?

 

--------------------------------------------------------------------------------------------------

该文章题目也能够称为,如何将一个网站发布到两台服务器上,或者如何将一个项目发布到两个服务器上。 方便搜索引擎索引(该行文字是为了帮助seo)。

 

想先搭建一个负载均衡的架构,至因而否必要,是否浪费资源请不要考虑,可是能够考虑之后如何扩展。

但愿更多人能看到,你们在评论里面给出本身的方案或建议。

 

我在百度搜索解决方案,有人的方案是,在HttpHandler中捕获到用户请求,而后从一组定以好的  跳转地址中随机选择一个,而后进行跳转

定义好服务器地址: static string [] servers={"http://192.168.1.100/index.aspx" , "http://192.168.1.101/index.aspx"};

Response.Redirect(servers[DateTime.Now.Millisecond % 2]);这里这个随机算法,彻底能够能够本身自定义,也能够借助数据库来进行,决定跳转到哪里。

这种方案是浏览器发送了两次请求,并且性能受这个拦截服务器的瓶颈限制。 这是从大哥Luminji学来的。

这位大哥博客地址:http://www.cnblogs.com/luminji/archive/2012/05/16/2184280.html

 

但愿你们来讨论讨论这个话题。

 ----------------------------------------------------------------------------------------------------------

20160118更新

在网上找到了这样一篇文章,介绍  nginx+iis实现负载均衡

 

博客地址:http://www.cnblogs.com/yanweidie/archive/2015/07/19/4658136.html#!comments

做者:焰尾迭 你们能够移步至此,看看这位大哥的实现方案。

不少人说windows平台,大概是windows操做系统的意思,用NLB微软的专门方案来实现,这里涉及到层面,层级问题。

就是硬件驱动层面,操做系统层面,还有iis层面。我也没搞太清楚,甚至还有windows操做系统 的用户模式,和内核模式,这是window操做系统的设计框架,为了是隔离用户应用程序与操做系统程序,防止用户程序的奔溃或者恶意代码等等对操做系统构成威胁,甚至硬件构成威胁。早期windows95常常须要强制关机,死机好像就是没有隔离应用程序和操做系统的缘故,这一块很是深,须要普遍阅读研究。

 

 

如今来谈一个关联问题:

负载均衡通常都涉及到一个问题,session共享问题,或者说是用户信息(登陆状态信息、会话认证、创建的联接信息,等称为)保存共享问题。咱们知道,web开发由于http的无状态特性,每次新的http请求,新的页面请求,都涉及到你是谁的问题,

你是否已经被我认证过了?你是否刚刚(几秒钟前,几分钟前通常时间很短,session默认时间20分钟asp.net中)访问了个人网站,若是你刚刚访问了我,我会给你一个凭证,而后保存一个和这个凭证对应的你的信息记录。咱们不可能用户每请求一个页面就让用户登陆一次,若是这样简直是折磨。

 

asp.net替开发者实现了一个内置对象Session,或者一个容器,或者说一个仓库等,总之能够存一点信息,不知道这种说法对不对。

session有个发展历程,微软早期的asp技术,也即第一代动态网页技术中,就提供了一个session,实现了一个session,可是那时session的生存环境只有一种,或者存在位置

就是在进程中session,即InProc(这个实现,或者提供的这个容器,或者说提供的这个可用环境,很不稳定,动不动就可能损坏,或者清理下你放在那里的东西即信息)。后来出了asp.net技术,session有了多种模式

Custom、Off、InProc、SQLServer、StateServer。分别是自定义模式,也就是你能够本身想办法搞一个容器或者地方来存放你的用户信息,很是自由。 Off这个是关闭Session,也就是不使用;InProc进程内模式,就是这个容器依靠一个进程,这个进程就是aps.net页面,文件处理解析进程(这里涉及到为何进程内不稳定,能够参考下面博文)。

ASP.NET会话(Session)保存模式

 

等有空继续修改,还没修改完。

 ---------20171122更新

负载均衡确实不该该是先被80端口监听程序监听到请求,再跑到IIS,再到iis上运行的某个网站的某个class中,在这个class中处理后,返回个跳转地址,跳到另外一个网站,这种方式效率极其低下的,跳转的次数太多了,方式很低效!根据百度百科,负载均衡是能够在不少层面,不少地方作的,上面的方案层面太不合适了。

目前经常使用的软件负载均衡方式是,由一个监听80端口的监听程序来作负载均衡,而不是层层跳转,这样才能效率更好。

相关文章
相关标签/搜索