笔者以企业网中的Web服务器为例来介绍一下如何使用DNS服务器实现网络负载均衡。为了提高域名为“www.”的网站的访问量,在企业网中部署三台内容相同的Web服务器,它们提供相同的服务,但每台服务器的IP地址都不一样。下面对企业网中的DNS服务器进行设置来实现三台Web服务器共同承担客户对网站的访问。
一、启用循环
以WindowsServer2003系统为例,在DNS服务器中,依次点击“开始→程序→管理工具→DNS”选项,进入DNS管理器窗口,鼠标右键点击DNS服务器图标,在弹出的快捷菜单中选择“属性”选项,接着在属性对话框中切换到“高级”选项卡(图1),确保“服务器选项”列表框中的“启用循环”选项处于选中状态。
二、添加主机记录
在“”区域中创建主机记录。在DNS管理器窗口中,右键点击“”项,在弹出的菜单中选择“新建主机”,进入新建主机对话框,在“名称”栏中输入“WWW”,IP地址栏中输入其中一台Web服务器的IP地址,如192.168.0.5,最后点击“添加主机”按钮。
因为企业网中有三台Web服务器,并且它们的IP地址都不同,因此另外还要新建两条主机名为“WWW”的主机记录,方法和上面一样,仅仅是它们的IP地址内容不同。这样就能将网站域名分别解析到不同的Web服务器上。
DNS服务器区域三条主机记录内容如下表所示:
完成了以上三条主机记录的创建后(图2),就实现了Web服务器的网络负载均衡。这样当客户机访问www.网站时,就会向DNS服务器发出域名解析请求。DNS服务器收到第一个请求时,会把第一个IP地址192.168.0.5返回给客户机,当第二个客户机要求域名解析时,DNS服务器就把第二个IP地址192.168.1.5返回给客户机。通过这样的循环分配,就可以把客户机的访问分担到不同的Web服务器上,从而实现网络负载均衡功能。
三、负载均衡功能的优化
企业网通常由很多子网构成,为了降低网络中的数据流量,客户机最好能访问处于同一子网内的Web服务器。虽然实现了网络负载均衡功能,但并不能保证客户访问的是本子网的Web服务器。其实这个问题也很好解决,只要启用DNS服务器的“启用网络掩码排序”功能即可。
在DNS管理器窗口中,右键点击DNS服务器,在弹出的菜单中选择“属性”,然后在属性对话框中切换到“高级”选项卡,勾选“服务器选项”列表框中的“启用网络掩码排序”选项即可。这样客户机每次都能访问到本子网内的Web服务器了。
完成以上设置后,就使DNS服务器实现了网络负载均衡功能,把客户的访问分担到每个Web服务器上,并且还减少了跨子网的网络通信流量,大大降低了企业网的通信负担。
完整版本:
现在网络的规模越来越大,网络中服务器的负载也变得越来越重。例如:在公司的网络中安装了一台WEB服务器,用于向企业内部网中的用户提供服务,假如网络中有几千甚至上万个用户需要同时访问这台WEB服务器,那么这台服务器的性能将变得极差。
如何来解决这个问题呢?在Windows 2000 Advanced Server中提供有Load Banlance负载均衡服务可以解决这个问题,但该服务的设置较复杂。另外我们还可以通过DNS来实现负载均衡的功能。
Enable round robin 启用循环
为了减轻某台服务器的负载,我们可以在网络中安装多台服务器。例如,原来网络中只有一台X235 的WEB服务器,其主机名为www.test.com,IP地址为192.168.1.100。为了减轻这台WEB服务器的负载,我们可以在网络中安装多台X235来提供WEB服务,并保证每台WEB服务器的内容都是一致的。如果可以实现让客户端分别访问不同的WEB服务器,这样就达到了分担负载的目的。那么如何让客户端分别向不同的WEB服务器访问呢?这就要用到DNS服务所提供的round robin功能。
我们可以按如下步骤操作:
在Windows200中打开管理工具中的DNS管理器。
在DNS管理其中,用鼠标右键点击该DNS服务器图标,在弹出的菜单中选择Property属性菜单。
在弹出的窗口中,选择Advanced选项卡。确保Enable round robin选项是处于被选中的状态。
点击OK关闭该窗口。
当设定好Round roubin后,接下来需要在DNS的区域(Zone)中添加主机记录:
打开管理工具中的DNS管理器
用鼠标右键点击将要创建记录的区域,在弹出的菜单中选择New host新建主机记录。然后依照向导提示输入必要的信息。
主机名 IP地址
www 192.168.1.200
www 192.168.1.201
www 192.168.1.202
当输入完所有主机的主机名与IP的对应关系后,你将看到类似于下图的窗口。
在这里我们注意到,添加的三条主机记录是同一个主机名对应着不同的IP。这些不同的IP即为网络中安装的多台WEB服务器的实际IP,他们对应着同一个主机名www.test.com。
这样当客户端们在浏览器的地址栏中输入:www.test.com去访问WEB服务器时,就会向DNS服务器发出名称解析请求。当DNS服务器收到第一个客户端的请求时,会把第一个IP 192.168.1.200响应给客户端,当第二个客户端要求解析时,服务器把第二个IP192.168.1.201响应给客户端,以此类推。通过这样的循环分配IP地址,就可以让不同的客户器访问不同的服务器,从而达到分担服务器的负载的功能。
Enable netmask ordering 启用子网优先
如果公司的网络是由多个子网构成的,为了使用户能够更有效地访问服务器中的资源,例如WEB服务器上的资源,我们可以在每个子网中都安装一台WEB服务器,这些WEB服务器保存的数据是完全一样的并且都使用同一个主机名,例如:www.test.com。那么如何让用户在其浏览器的地址栏中输入主机名www.test.com时,访问的是本子网的WEB服务器,而不是其他子网的web服务器呢?我们可以通过设置Enable netmask ordering 启用子网优先来实现这一功能。
想实现Enable netmask ordering 启用子网优先,我们可以按以下步骤操作:
打开管理工具中的DNS管理器
在DNS管理其中,用鼠标右键点击该DNS服务器图标,在弹出的菜单中选择Properties属性菜单。在弹出的窗口中,选择Advanced选项卡。确保Enable subnet ordering选项是处于被选中的状态。点击OK关闭该窗口。
当设定好subnet ordering后,接下来需要在区域中添加主机记录:
打开管理工具中的DNS管理器
用鼠标右键单击将要创建记录的区域,在弹出的菜单中选择New host新建主机记录。然后依照向导提示输入必要的信息。
例如:
主机名 IP地址
www 192.168.1.200
www 202.96.1.201
www 64.35.1.202
当输入完所有主机的主机名与IP的对应关系后,你将看到类似于下图的窗口。
这样我们在DNS服务器中添加了三条主机记录:同一个主机名对应着不同的IP。这些不同的IP即为不同子网中安装的WEB服务器的实际IP地址,他们对应着同一个主机名www.test.com。
这样当用户在其浏览器的地址栏中输入:www.test.com去访问该WEB服务器时,该客户端就会向DNS服务器发出名称解析请求。作为DNS服务器收到客户端的查询请求后,将比较客户端的IP地址,与它所请求的主机名所对应的IP地址中的哪一个在同一子网中,然后将这个IP (与客户端在同一子网中的IP地址) 响应给客户端。这样就可以实现客户端访问的总是本子网中的服务器, 把服务器的访问负载分摊到了各个子网的服务器中,并且减少了跨子网的网络流量。
解决方法一:
1. 开启ASP.NET State Service服务:
选择管理工具->服务,找到ASP.NET State Service,点开后选择启动,并将启动类型设为自动。
2. 设置程序配置文件:
将web.config打开,会看到有一行是<sessionState mode="InProc" stateConnectionString="tcpip=127.0.0.1:42424" timeout="20"/>,如果没有,请在<system.web>的下一行添加,再将其中的InProc改为StateServer,保存即可。
解决方法:
如果按照方法一还不行出现如下错误:解决方法如下
错误描述:
Unable to make the session state request to the session state server. Please ensure that the ASP.NET State service is started and that the client and server ports are the same. If the server is on a remote machine, please ensure that it accepts remote requests by checking the value of HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\aspnet_state\Parameters\AllowRemoteConnection. If the server is on the local machine, and if the before mentioned registry value does not exist or is set to 0, then the state server connection string must use either 'localhost' or '127.0.0.1' as the server name.
解决办法
网上搜索了半天,找到的相关答案都说是ASP.NET State Service服务没有开启,但服务器上明明已经开启了啊!就是因为杀毒软件的问题,以前在另一台服务器上装了MCAFEE,开启访问保护ASP.NET的所有网站都会出错,看了一下服务器里装的NOD32,是把所有的功能都开启了,关掉网络监视(IMON),验证码就可以正常显示了
解决办法1:
远程桌面连接-》选项-》高级-》去掉“主题”和“位图缓存”这两个选项,然后登陆服务器
解決的方法2:
一个用户黑屏后,使用另外一个管理员用户登陆。然后打开任务管理器,点用户,注销掉黑屏的用户链接!
解决办法3:
用增强的3389远程桌面登陆器登录试一试,能正常登录就重启服务器或vps。
解决办法4:
超出最大连接数(同样可以处理远程黑屏和蓝屏问题):
在本地电脑运行命令行:
mstsc /console /v:你的服务器IP:远程端口