在IIS 7上加载平衡的网站

时间:2009-04-22 15:45:50

标签: iis iis-7

考虑在IIS上实现Windows托管网站的负载平衡,但想知道这样做涉及的问题。网站是ASP.NET - 混合使用自定义身份验证和ASP.NET身份验证。例如:

  • 文件:存储在网络共享上的明显选择,但我预计它会对文件服务器提出很多需求,使网站变慢并可能导致“已达到网络BIOS命令限制”问题,或者放慢速度其他数据流量
  • 会话状态:最好存储在SQL数据库中,以防止响应来自不同的服务器时出现问题?这该怎么做?我认为是web.config设置吗?
  • 服务器停机时间:当服务器出现故障(崩溃,硬件故障等)或更新时,网站是否仍会正常运行?
  • DNS:由于负载均衡,我假设网站需要两个IP地址?使用Microsoft DNS

关于文件,它们可以轻松地在服务器之间同步吗?最多可能有8MB文件(偶尔会更大)。 DFS是未来可能会考虑的选项,但还有其他技术(除了robocopy)可以使用吗?

1 个答案:

答案 0 :(得分:2)

  • 文件:指向网络共享可以解决一些问题并引入其他问题,例如单点故障。对文件共享进行聚类可以缓解一点,但您仍然只拥有一份数据副本。我更喜欢无共享方法,其中内容是每个网络服务器的本地内容,消除SPOF并在提供内容时从等式中删除网络。我目前正在使用robocopy执行此操作,而不是DFS - 不喜欢AD绑定,对分区网络基础结构中服务器放置的限制。 Robocopy也不理想。

  • 会话状态 - 同意,ASPState SQL数据库。请确保在web.config中为所有服务器设置一个通用机器密钥,但我正在考虑这个问题。

掉落<sessionState allowCustomSqlDatabase="true" cookieName="yourcookiname" mode="SQLServer" cookieless="false" sqlConnectionString="connnstringname" sqlCommandTimeout="10" timeout="30"/>

<connectionStrings> <add name="connstringname" connectionString="Data Source=sqlservername;Initial Catalog=DTLAspState;Persist Security Info=True;User ID=userid;Password=password" providerName="System.Data.SqlClient"/> </connectionStrings>

进入web.config。 最后,跑 C:\ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ aspnet_regsql.exe -S sqlservername -E -ssadd -sstype p

  • 服务器停机时间 - 当单个服务器出现故障时,网站仍然可以运行。当然,这取决于您的网络服务器 - 确保它不使用“ping”作为确定是否应该向该网络服务器发送请求的唯一指标。
  • DNS - 单项。遗憾的是HTTP不能识别SRV记录。