将asp.net迁移到Load Balance和NAS上的步骤(转)
将asp.net应用程序迁移到Load Balance和NAS环境
1. 权限控制
a) 将Web Server和NAS加入同一个Domain(AD)中,如DomainWeb。当然也可以使用所有Web Server与NAS的某个帐号的密码相同来进行欺骗。但是这样在管理上会比较复杂。
b) 在域中创建一个专用于asp.net程序运行的帐号(替代本地的ASPNET),如ASPNETOwner。
2. NAS目录与权限
a) 在NAS上设置一个共享目录,如\\nas\upload,确保DomainWeb\ASPNETOwner对NAS的磁盘和共享都有写权限。
3. Web Server目录与权限
a) 保证DomainWeb\ASPNETOwner对本地Web程序目录的访问权限。
b) 保证DomainWeb\ASPNETOwner可以写C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\Temporary ASP.NET Files目录。
c) 保证DomainWeb\ASPNETOwner可以写系统的临时目录(为满足一些特殊情况)。
4. 程序处理
a) 确保不使用Session(为了保证Load Balance算法的多样性),如果必须使用则可以使用State Server或数据库存储Session,但是强烈建议不要使用Session。
b) 统一Cookie和ViewState的Key(保证先后访问不同Web Server可以正常的解密ViewState),因为默认的是Key是各服务器自动生成。
c) 更改程序的web.config文件,设置Identity,使用DomainWeb\ASPNETOwner和密码运行asp.net程序。
Web.config相关部分示例:
<system.web>
<machineKey
validationKey= "250B3C89CB21F4F1422FF158A5B42D0E8DB8CB5CDA1742572A487D9401E3400267682B202B746511891C1BAF47F8D25C07F6C39A104696DB51F17C529AD3CABE"
decryptionKey= "1A9BE8FD67AF6979E7D20198CFEA50DD3D3799C77AF2B72F"
validation="SHA1"
/>
<identity impersonate="true" userName="DomainWeb\ASPNETOwner" password="Password"/>
<httpRuntime maxRequestLength="10240" useFullyQualifiedRedirectUrl="true" appRequestQueueLimit="500" executionTimeout="100"/>
</system.web>
反馈
# re: 将asp.net迁移到Load Balance和NAS上的步骤 2006-3-30 0:01 rIPPER
NAS...技术含量低了点,不上个SAN也可以搞个iSCSI玩玩嘛
# re: 将asp.net迁移到Load Balance和NAS上的步骤 2006-3-30 10:39 sunmast
# re: 将asp.net迁移到Load Balance和NAS上的步骤 2006-3-30 11:35 刘钧
这个早就做过类似的方案了。不过我们更狠,不是添改 web.config 中的 identity 节,而是直接修改 machine.config 中相应的地方。这样只有跟程序无关的网管知道服务器安全所在,维护系统的程序员不知道这个实际运行 .NET 的域用户的密码。
# re: 将asp.net迁移到Load Balance和NAS上的步骤 2006-3-30 13:03 hopeq
to rIPPER:
对asp.net来说不牵扯技术含量,都是钱啊。不过其他方案在asp.net也不会再复杂了
to 刘钧:
呵呵,如果系统比较单纯那是好办法。不过要是多种应用同时部署在一组Server上,有些走Nas,有些不走,那么就不好了。Identity会损失性能(很少量)。另外,web.config可以留给管理员改啊,呵呵,毕竟只有一个password而已。