在上一篇中作者爲大家簡單介紹了下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
創建大連上午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可訪問到的服務器地址,或者***之後的地址
如果要使用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秒