首页 > 代码库 > Windows Server 2016 DNS Policy Tod-Intelligent 2

Windows Server 2016 DNS Policy Tod-Intelligent 2

   在上一篇中作者为大家简单介绍了下Windows Server 2016 DNS Policy基于地理位置的流量隔离功能,本文将为大家介绍DNS policy里面另一个主要的功能 ,基于时间的智能DNS定位


   假定Contoso是一家跨国的图书公司,跨中国和德国,设立在中国大连和德国柏林都有分公司,希望实现平常时间两边分公司的员工都正常访问本分公司的服务器,当负载达到时间峰值时,例如,每天9点到11点是大连这边用户访问的高峰期,这时候百分之80的流量通过大连主机响应,百分之20定位到柏林服务器响应。柏林那边每天下午三点到五点是高峰期,这时候百分之80的流量通过柏林主机响应,百分之20流量通过大连主机响应,其余时间各自访问各自区域的服务器


接下来老王将带领大家看看如何实现这项效果


实验环境介绍


16DNS:承担DNS服务器,设置在公司总部  IP地址:100.0.0.2  GW:100.0.0.1

Web01:承担大连的Web服务器,同时也承担连接总部DNS,柏林客户端,大连客户端的路由器

IP地址1:80.0.0.1 

IP地址2:90.0.0.1

IP地址3:100.0.0.1 DNS 100.0.0.2

Web02:承担柏林的Web服务器,假设在柏林DC,IP地址:90.0.0.2 GW:90.0.0.1

dalian:模仿大连客户端 IP地址:80.0.0.100 GW:80.0.0.1 DNS : 100.0.0.2

bolin:模仿柏林客户端 IP地址:90.0.0.100 GW:90.0.0.1 DNS:100.0.0.2


首先,创建DNS客户端子网,定义柏林和大连的地址范围


Add-DnsServerClientSubnet -Name "daliansubnet" -IPv4Subnet "80.0.0.0/24"

Add-DnsServerClientSubnet -Name "bolinsubnet" -IPv4Subnet "90.0.0.0/24"

技术分享

接下来创建逻辑地理范围

Add-DnsServerZoneScope -ZoneName "eip.com" -Name "dalian"  

Add-DnsServerZoneScope -ZoneName "eip.com" -Name "bolin"  

技术分享

添加主机记录,注意带有-ZoneScope参数

Add-DnsServerResourceRecord -ZoneName "eip.com" -A -Name "www" -IPv4Address "80.0.0.1" -ZoneScope "dalian"

Add-DnsServerResourceRecord -ZoneName "eip.com" -A -Name "www" -IPv4Address "90.0.0.2" -ZoneScope "bolin"

技术分享


创建DNS policy


  1. 创建大连上午9点到11点百分之80流量走本地服务器,百分之20走柏林服务器策略


Add-DnsServerQueryResolutionPolicy -Name "Dalian9to11Policy" -Action ALLOW -ClientSubnet "eq,daliansubnet" -ZoneScope "dalian,4;bolin,1" -TimeOfDay "EQ,01:00-03:00" -ZoneName "eip.com" -ProcessingOrder 1


技术分享

2.创建柏林下午1点到3点百分之80流量走本地服务器,百分之20走大连服务器策略


Add-DnsServerQueryResolutionPolicy -Name "bolin1to3policy" -Action ALLOW -ClientSubnet "eq,bolinsubnet" -ZoneScope "bolin,4;dalian,1" -TimeOfDay "EQ,19:00-21:00" -ZoneName "eip.com" -ProcessingOrder 2


技术分享

在这两条命令中大家可能发现和上一篇的文章中有点不一样


  • 在定义ZoneScope的时候采用了多个逻辑地理区域,正如我上一章节和大家解释的一样,可以通过设置比例来实现负载调换,定义4和1就代表 80|20

  • 增加了TimeOfDay参数,这个参数就是用来定义根据时间只能定位DNS服务器的,但是这里的时间需要换算成GMT时间才可以,这点需要注意

  • 增加了ProcessingOrder参数,这个参数主要用来定义当前策略的优先级,当有多条策略可以匹配时,优先级越低的,越优先。



3.创建正常时间大连客户端访问大连服务器策略

Add-DnsServerQueryResolutionPolicy -Name "dalianPolicy" -Action ALLOW -ClientSubnet "eq,daliansubnet" -ZoneScope "dalian,1" -ZoneName "eip.com"  -ProcessingOrder 3

技术分享

4.创建正常时间柏林客户端访问柏林服务器策略

Add-DnsServerQueryResolutionPolicy -Name "bolinPolicy" -Action ALLOW -ClientSubnet "eq,bolinsubnet" -ZoneScope "bolin,1" -ZoneName "eip.com"  -ProcessingOrder 4

技术分享

5.添加正常主机记录,允许世界其他客户端访问,并在柏林和大连之间轮询

Add-DnsServerResourceRecord -ZoneName "eip.com" -A -Name "www" -IPv4Address "80.0.0.1" 

Add-DnsServerResourceRecord -ZoneName "eip.com" -A -Name "www" -IPv4Address "90.0.0.2"


技术分享

当柏林到达指定时间下午一点,通过nslookup可以看到分别在柏林和大连之间进行解析,并不一直落在柏林上

技术分享


相信通过简单的介绍,大家已经大概明白这项功能是什么意思了,无非是多了时间的参数,可以根据时间,智能的调整负载DNS,能够根据业务场景动态调整DNS服务器的负载了,更加智能化了,唯独就是不同国家每次需要转换不同的GMT时间有点麻烦


除了本地跨国跨地域之间的智能DNS时间定位,2016DNS还支持和Azure联动,例如每天下午3点到5点大连访问较多,在这个时间点,可以配置百分之80的的响应由本地承担,百分之20的响应由云端Azure承担


要配置和Azure进行混合云联动,你需要在Azure上面有一个本地DNS可访问到的服务器地址,或者VPN之后的地址


如果要使用Azure作为云端Site 在创建主机记录时需要注意添加TimeToLive参数,假定如果将大连服务器移动至Azure,应该运行命令如下


创建Azure逻辑地理区域

Add-DnsServerZoneScope -ZoneName "eip.com" -Name "AzureSiteZoneScope"

创建Azure地理位置主机记录

Add-DnsServerResourceRecord -ZoneName "eip.com" -A -Name "www" -IPv4Address "80.0.0.1" -ZoneScope "AzureSiteZoneScope" –TimeToLive 600

创建DNS policy

Add-DnsServerQueryResolutionPolicy -Name "Dalian3to5policy" -Action ALLOW -ClientSubnet "eq,daliansubnet" -ZoneScope "dalian,7;AzureSiteZoneScope,3" –TimeOfDay "EQ,15:00-17:00” -ZoneName "eip.com" –ProcessingOrder 1

可以看到并没有什么特别的,可见Windows Server 2016 DNS Policy可以实现和Azure完美的混合,只需要注意下Azure 主机DNS记录的TTL时间即可,默认保持600秒




本文出自 “一个倔强的孤岛” 博客,请务必保留此出处http://wzde2012.blog.51cto.com/6474289/1920624

Windows Server 2016 DNS Policy Tod-Intelligent 2