iis负载均衡(iis负载均衡高可用方案)

更新时间:2023-03-01 03:49:48 阅读: 评论:0

iis 怎样部署 实现负载均衡

在windows平台,不需要 nginx 之类的低效软件。如果你没钱买硬件负载均衡器,就使用 windows rver 操作系统自身的负载均衡功能就行了。并且既然你已经使用 iis 7.x 以上版本,更是不需要再使用 nginx。

关于ASP.NET中的负载均衡

  ASP NET站点中做负载均衡

  基于HTTP协议我们可能发现我们要解决两点问题

  第一 做到负载均衡 我们需要一个负载均衡器

  可以通过DNS轮询来做 在DNS服务器上配置为每次对我们做负载均衡的同一主机名的DNS查询得到不同的IP地址 这样的好处是配置简单投入较小 缺点是浏览器访问各个服务器的机会是均等的 不能根据服务器的负载程度自动把请求路由到负载较小的服务器

  可以通过专用的负载均衡设备 通过监测后台数台服务器的负载情况 自动把HTTP请求转发到负载较轻的服务器 另外必须监测后台服务器的IIS负载情况 而不是整台服务器的CPU负载 同时可能需要在负载均衡器和后台服务应用之间建立心跳连接 以避免出现某台服务器IIS进程或者其中跑的应用已经down掉 负载均衡器反而监测到这台服务器的负载最小而把大量请求转发的这台服务器 达到相反的效果

  第二 Session状态的保持和迁移

  由于HTTP协议的无状态性 我们一般是在Session中保存客户端的一些状态数据 负载均衡之后 前后两次HTTP请求所到达的服务器可能不是同一台 这就造成可能出现这样的情况 前一此请求处理中设置的ssion在第二次请求中变得不可用了 造成应用程序出错 所以我们要把ssion跟随迁移 实现的方法就是ssion的统一存储和服务器间共享

  在ASP NET中服务器保存ssion有五种方式 Off不说了 InProc是保存在服务器进程的内存中 显然不能满足要求 另外两种能够满足

  StateServer是把ssion保存在专门的状态服务器中 这样各台服务器都存取同一个StateServer 达到共享的目的

  SQLServer是把ssion保存在数据库中 同样能达到目的

  Custom自定制的存储方案 我们自己写当然能够实现

  比较一下 Custom这种自己实现比较麻烦一般不用 SQLServer可以利用数据库的cluster达到高性能和高可用性的目的 StateServer当然也可以通过手段达到高可用性 不过似乎不能实现集群所以性能也有所限制

  另外如果要做负载均衡在StateServer和SQLServer中配置ssion时 必须在nfig中重写machineKey节点

  <machineKey

  validationKey= AAAAAAAAAA

  decryptionKey=

  validation= SHA

  decryption= Auto

  />

  否则各个应用服务器拿到的ssion还是不一样的

lishixinzhi/Article/program/net/201311/12775


网络负载均衡的验证方法

网络负载均衡配置好后,为了实现某项具体的服务,需要在网络负载均衡的计算机上安装相应的服务。例如,为了实现IIS网站的负载均衡,需要在相应的网络负载均衡服务器上安装IIS服务。为了让每个用户在通过网络负载均衡访问到不同的计算机时,能够访问到一致的数据,需要在网络负载均衡的每台计算机上保持数据的一致性。举例来说,实现了两个节点的IIS的网络负载均衡,为了保证两个网站内容的一致性,除了这两个IIS服务器的配置相同外,相应的网站数据必须一致。
为了检验网络负载均衡,我们可以通过IIS来进行验证,其他的一些应用如终端服务、Windows Media服务与IIS的应用与之相类似。在其他计算机上的IE浏览器中键入192.168.0.9,根据网络的负载,网络负载均衡会自动转发到A机或B机。为了验证效果,你可以在浏览的时候,拔掉第一台计算机的网线或拔掉第二台机器的网线,将会发现浏览到的将是不同内容。当然,我们在测试的时候,为了验证网络负载均衡的效果,把两个网站设置成不一致的内容,而在正式应用的时候,网络负载均衡群集的每个节点计算机的内容将是一致的,这样不管使用哪一个节点响应,都能保证访问的内容是一致的。


iis 负载均衡 如何保存ssion状态

一、Inproc模式
Inproc是缺省的设置,这种模式和以前的ASP的会话状态的方法是类似的,会话的状态会被保存在ASP.NET进程中,它的优点是显而易见的:性能。进程内的数据访问自然会比夸进程的访问快。然而,这种方法Session的状态依赖于ASP.NET进程,当IIS进程崩溃或者正常重起启时,保存在进程中的状态将丢失。

二、StateServer模式
为了克服Inproc模式的缺点,ASP.NET提供了两种进程外保持会话状态的方法。

ASP.NET首先提供了提供了一个Windows服务:ASPState,这个服务启动后,ASP.NET应用程序可以将mode属性设置为 “SateServer”,来使用这个Windows服务提供的状态管理方法。

除了在web.config文件中设置mode属性为StateServer外,还必须设置运行StateServer服务器的IP地址和端口号,具体配置方法如下:

2.1 如果在IIS所在的机器运行StateServer则IP地址就是127.0.0.1,端口号通常是42424.配置如下:

mode=”StateServer”

stateConnectionString=”tcpip=127.0.0.1:42424″

2.2 找一台服务器作为Session服务器

如IP为:172.18.1.188,启动其Windows中的ASP.NET State Service(默认的端口号为42424),把启动类型改为自动;

2.3 修改Session服务器注册表中的项:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services \aspnet_state\Parameters中的AllowRemoteConnection 键的值为1,其中的Port键控制ASP.NET State Service的监听端口;修改后需要重启ASP.NET State Service才生效;

2.4 每台服务器的web.config 的stateConnectionString都指向这台服务器

使用这种模式,会话状态的存储将不依赖IIS进程的失败或者重启,会话的状态将存储在StateServer进程的内存空间中。

三、SQlServer模式
另一种会话状态模式是SQLServer模式。这种模式是将会话的状态保存在SQL Server数据库中的。使用这种模式前,必须至少有一台SQL Server服务器,并在服务器中建立需要的表和存储过程。.NET SDK提供了两个脚本来简化这个工作:InstallSqlState.sql和UnInstallSqlState.sql。这两个文件存放在下面路径中:

c:\windows\Microsoft.NET\Framework

要配置SQL Server 服务器,可以在命令行中运行SQL Server提供的命令行工具osql.exe

osql -s [rver name] -u [ur] -p [password]

例如:

osql -s (local) -u as -p “”-i InstallSqlState.sql

做好必要的数据库准备工作后,将web.config文件中的ssionstate元素的mode属性改为”sqlrver”,并指定 SQL连接字符串。具体如下:

mode=”SQLServer”

sqlConnectionString=”data source=127.0.0.1;urid=sa;password=;Trusted_Connection=yes”

使用SQLServer模式处了可以使Session的状态不依赖于IIS服务器之外,还可以利用SQL Server的集群,使状态存储不依赖于单个的SQL Server,这样就可以为应用程序提供极大的可靠性。

多台服务器如何做网络负载均衡?

1:找分区或目录同步软件,某台服务器改动了自动把修改应用到别的服务器,比如红旗的HA。

2:换种建服务器的思路,后台用一台独立的服务器做数据库和文件服务器,用来存放数据库和上传的文件,另外的做负载均衡运行服务器,把不需要变动的网页程序放上面。


本文发布于:2023-02-28 19:24:00,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/zhishi/a/167761378859491.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:iis负载均衡(iis负载均衡高可用方案).doc

本文 PDF 下载地址:iis负载均衡(iis负载均衡高可用方案).pdf

标签:负载均衡   方案   iis
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 实用文体写作网旗下知识大全大全栏目是一个全百科类宝库! 优秀范文|法律文书|专利查询|