导航

负载均衡

Posted on 2014-04-11 17:47  杨彬Allen  阅读(536)  评论(0编辑  收藏  举报

负载均衡分两大部分:

一、N个网站之间的配置要保持一致

  1、 确定状态服务器也就是主要机器A,将其注册表中HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\aspnet_state\Parameters\AllowRemoteConnection的键值改为1,然后重启本机的ASP.NET State Service服务。

  2、确定N台服务器A,B..., Web 站点的应用程序路径(D:\XX\XX)、应用名称(网站名称)、应用的端口、应用ID(网站点右键->管理网站->高级设置->ID)是一致的(比如都设成1)。

  3、N个网站下的web.config中添加machinekey配置,包括手机端webservice也要一并设置。

  <system.web>
    <!-- 
            设置 compilation debug="true" 可将调试符号插入
            已编译的页面中。但由于这会 
            影响性能,因此只在开发过程中将此值 
            设置为 true。
        -->
<machineKey validationKey="78AE3850338BFADCE59D8DDF58C9E4518E7510149C46142D7AAD7F1AD49D95D4" decryptionKey="5FC88DFC24EA123C" validation="SHA1"/>
</system.web>

machinekey生成算法如下:

    validationKey = CreateKey(20);
    decryptionKey = CreateKey(24);

     protected string CreateKey(int len)
     {
             byte[] bytes = new byte[len];
             new RNGCryptoServiceProvider().GetBytes(bytes);
               StringBuilder sb = new StringBuilder();
               for(int i = 0; i < bytes.Length; i++)
               {   
                   sb.Append(string.Format("{0:X2}",bytes[i]));
               }
               return sb.ToString();
     }

  4、N个网站下的web.config下的SessionState设置

  <system.web>
    <!-- 
            设置 compilation debug="true" 可将调试符号插入
            已编译的页面中。但由于这会 
            影响性能,因此只在开发过程中将此值 
            设置为 true。
        -->
<sessionState mode="StateServer" cookieless="false" timeout="240" stateConnectionString="tcpip=192.168.1.110:42424" stateNetworkTimeout="14400" />    
<compilation debug="true" targetFramework="4.0">

</system.web>

  5、如果开启了防火墙,将42424端口开启。

 

补充一些相关资料:
关于Session

PRB: Session Variables Are Lost If You Use FRAMESET in Internet Explorer 6.0
http://support.microsoft.com/kb/323752/EN-US/#
PRB: Session Data Is Lost When You Use ASP.NET InProc Session State Mode
http://support.microsoft.com/?id=324772
PRB:如果您使用 SqlServer 或 StateServer 会话模式 Web 场中会丢失会话状态
http://support.microsoft.com/default.aspx?scid=kb;zh-cn;325056

ASP.NET Session State FAQ
http://www.eggheadcafe.com/articles/20021016.asp

参考来自:http://hi.baidu.com/panshuaiyang

 

 

二、集群的设定和负载均衡设定

1、在N个服务器的基础上,设定一个虚拟网址,用户其实都是访问这个虚拟网址,但实际随即映射到N个服务器。

2、专用负载均衡软件

  服务器管理器->功能->网络负载平衡

  (待补)

 

需注意事项:

  1、凡设计到上传文件的要保持N个服务器之间要一致。

    解决办法:1、文件以附件的格式存在数据库中;2、上传的同时要同步至所有服务器上