使用ARR来实现主机名共享
概览
使用ARR方式来实现托管主机的共享。关于Host name affinity的更多信息请参考Shared hosting deployment using Application Request Routing。( 这里翻译不准:( )
*前几篇描述的都只是只有一个默认网站的情况,这篇文章描述的是主机名相关的,有点类似于IIS6中的主机头负载均衡*
本篇旨在一步步指导你配置host name affinity特性:
目标
在共享主机环境中配置ARR
先决条件
本演示需要以下先决条件:
l 装有IIS7的Win2008,或者更新版本
l Microsoft ARR和相关模块
l 至少两台装有工作站点和应用程序的应用服务器
n 服务器应该被配置为使用共享配置及共享内容。关于共享配置的资料,请看这篇文章。
n 服务器上的站点应使用主机名绑定。
步骤1 – 启用host name affinity
在继续之前,确保服务器农场已经完成了对共享配置和共享内容的配置工作。在应用服务器上的站点需要通过主机名绑定来实现。
通过图形界面启用host name affinity:
1. 打开IIS管理器
2. 选择一个农场
3. 显示如下:
a)
4. 双击Server Affinity(服务器亲和)
5. 为了启用host name affinity,选择Use Host name, 然后单击Apply保存更改
a)
b) 注意这里提供了2种亲和性提供程序。这和负载均衡的算法不同,这2个提供程序只是为主机名亲和所提供的。它们是:
i. Microsoft.Web.Arr.HostNameRoundRobin
ii. Microsoft.Web.Arr.HostNameMemory
1. Microsoft.Web.Arr.HostNameRoundRobin将请求均匀的分配给各个服务器。使用此提供程序对应用服务器没有要求。
2. Microsoft.Web.Arr.HostNameMemory根据各个应用服务器的内存情况来决定将请求分配过去。这个提供程序使用WMI查询应用服务器的有效内存。并且,应用程序服务器必须是Windows服务器,而且需要进行配置成允许远程WMI查询才可以。更多资料请看这篇文章。
3. Time-out值代表自从最近一次对某个host name请求后,经过多长时间后被reset。这个值需要与应用程序服务器的应用程序池的idle time-out时间相同。
6. 为了确认功能的正常运作,单击Display Routing Table(显示路由表)
a)
7. 输入主机名,然后单击Lookup by host name(根据主机名寻找)。显示出的地址列表就是这个主机名目前被亲和过去的服务器。
使用命令行启用主机名亲和功能:
1. 以administrator身份打开命令行
2. 导航到%windir%\system32\inetsrv
3. 为了启用主机名亲和特性,输入:
a) appcmd.exe set config -section:webFarms /[name='myServerFarm'].applicationRequestRouting.affinity.useHostName:"True" /commit:apphost
步骤2 – 为每个主机名指定服务器数量
默认所有的主机名能够使用所有的应用程序服务器。然而,如果站点拥有者想要增加额外的处理能力,我们能做到为每个主机名指定它们各自能够使用的应用程序服务器的数量。
通过图形界面来指定服务器数量:
1. 在Server Affinity(服务器亲和)界面中,单击Advanced Settings(高级设置)
a)
2. 在Host name(主机名)列中,输入相应的主机名,这个是必填项
3. 在Number of Allocated Servers(分配的服务器数量)列中,输入这个主机名能够使用的服务器数量
4. Alternate Host Names(备用主机名)是个可选项,这里填写的是主机别名。比如,网站主可能为一个网站启用了多个dns记录,这种情况下,他想让ARR使用同一个进程来处理这些dns记录对应的主机名。
5. 单击OK,保存更改
6. 为了确认运作正常,单击Display Routing Table
a)
7. 输入主机名,然后单击lookup by host name。返回的地址列表应该是和Number of Allocated Servers中的一样。返回列表中的地址都是这个主机名能够亲和过去的。
用命令行方式指定服务器数量:
1. 以administrator身份打开命令行
2. 导航到%windir%\system32\inetsrv
3. 我们假设指定www.contoso.com的数量为2台服务器,输入:
a) appcmd.exe set config -section:webFarms /+"[name='myServerFarm'].applicationRequestRouting.affinity.[name='www.contoso.com',servers='2']" /commit:apphost