【问题标题】:Load balanced websites on IIS 7IIS 7 上的负载平衡网站
【发布时间】:2010-10-21 03:30:05
【问题描述】:

希望在 IIS 上为 Windows 托管网站实现负载平衡,但想了解这样做所涉及的问题。网站是 ASP.NET - 混合了自定义身份验证和 ASP.NET 身份验证。例如:

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

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

【问题讨论】:

    标签: iis iis-7


    【解决方案1】:
    • 文件:指向网络共享解决了一​​些问题并引入了其他问题,例如单点故障。对文件共享进行集群可以稍微缓解这种情况,但您仍然拥有数据的单个副本。我更喜欢无共享的方法,其中内容对于每个网络服务器都是本地的,在提供内容时消除了 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 记录。

    【讨论】:

    • 任何关于如何使用 RoboCopy 在服务器之间进行复制的示例(包括权限)?
    猜你喜欢
    • 2013-04-09
    • 2014-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多