標籤:負載 dns輪詢 cto 還需 不能 兩台 美國伺服器 type power
說到智能DNS,作為一個IT人員來說並不陌生,但是一般都是第三方提供的,很少可以在本地實現,今天我們說說可以在本地實現配置智能DNS的解決方案,那就是Windows Server 2016下通過配置DNS Policy可以實現智能DNS解析,我們必須要重申一下,只有Windows Server 2016下的DNS才支援哦,Windows Server 2016已經發布很長時間了,所以今天我們對於Windows Server上DNS支援的功能我們做一下功能示範,首先介紹的是DNS Policy Geo-Location,言外之意就是通過DNS Policy裡面可以基於地區進行隔流量訪問,對於這個功能我們已經應用到了生產環境上,首先說說我們日常環境需求,我們公司的www網站,在中國有一台伺服器,美國有一台伺服器,兩台伺服器資料進行同步,在最初DNS中有兩條記錄同時指向不同的地區伺服器,以前是通管局哦DNS輪詢機制實現負載及跳轉,有的時候中國使用者會訪問到美國伺服器上,這樣就出現了訪問緩慢的現象,美國使用者訪問就會訪問到中國的伺服器,以上問題給使用者體驗帶來很多困擾,但是在Windows server 2016裡面外面可以通過配置DNS Policy實現中國使用者訪問中國伺服器,美國使用者訪問美國伺服器,最終的結果是不是很神奇,對於這個神奇的功能,外面今天通過以下實現呈現給大家,如有總結不對的地方歡迎大家來交流。
註:需要注意的是,DNS Policy是針對於本地的,不能在全域環境中進行同步。所以我們需要在負責DNS解析的伺服器上均需要配置Policy。
環境介紹:
Hostname:DC.ixmsoft.com
Roles:DC、DNS
IP:192.168.5.20
Hostname:Web1.ixmsoft.com
Roles:Web Server
IP:192.168.6.198
Location:China
Hostname:Web2.ixmsoft.com
Roles:Web Server
IP:192.168.7.198
Location:US
我們先確認兩台WEB伺服器的訪問內容:
首先是中國伺服器
然後訪問美國伺服器:
兩個地區的伺服器準備好後,我們就可以要配置DNS Policy了,我們配置需要使用Powershell來進行配置,要實現地區隔離,首先要先建立DnsServerClientSubnet
也就是說,你要先告訴DNS,那一段子網是屬於北京的用戶端,哪一段子網是屬於美國的用戶端,你告訴了DNS之後,他才知道以後該怎麼判斷轉寄請求
我們開始建立北京及美國的子網
Add-DnsServerClientSubnet -Name "beijingsubnet" -IPv4Subnet "192.168.6.0/24"Add-DnsServerClientSubnet -Name "ussubnet" -IPv4Subnet "192.168.7.0/24"
建立完成後,我們可以查詢
Get-DnsServerClientSubnet
子網建立好了,我們還需要建立DnsServerZoneScope,這裡是核心中的核心,我們需要在一個DNS地區裡面建立出來多個邏輯的地理地區,一定要理解這個概念,例如,現在有個DNS主地區叫ixmsoft.com,我們就要在ixmsoft.com這個地區裡面再劃分出來邏輯地理範圍,比如需要建立一個北京地區,一個美國地區,這樣做了之後,就實現了同一個DNS主地區下面,包括了多個地理地區
Add-DnsServerZoneScope -ZoneName "ixmsoft.com" -Name "beijing" Add-DnsServerZoneScope -ZoneName "ixmsoft.com" -Name "us"
建立完成後,我們也可以查詢
Get-DnsServerZoneScope -ZoneName "ixmsoft.com"
建立完成邏輯地理地區,主要用來包含主機記錄,串起來做Policy 判斷使用,例如我們建立了邏輯地理地區北京,接著我們就需要建立北京Web伺服器的主機記錄,在建立主機記錄過程中,最主要的一步就是指定-ZoneScope,指定了這個參數之後建立出來的這個主機記錄就會綁定在這個地理地區內,之後建立策略,只有策略中指定的子網範圍內用戶端可以訪問對應的“包括地理地區的主機記錄”
Add-DnsServerResourceRecord -ZoneName "ixmsoft.com" -A -Name "web" -IPv4Address "192.168.6.198" -ZoneScope "beijing"Add-DnsServerResourceRecord -ZoneName "ixmsoft.com" -A -Name "web" -IPv4Address "192.168.7.198" -ZoneScope "us"
我們在此也需要注意:我們定義的-A -Name名稱為web,所以我們使用者最終是以web.ixmsoft.com來訪問伺服器的。
建立完成後,我們可以查詢該記錄
Get-DnsServerResourceRecord -ZoneName "ixmsoft.com"
我們上面建立的是基於ZoneScope地區的解析記錄,但是我們需要注意的是,如果只有給ZoneScope地區中增加記錄,ZoneScope以外沒有記錄的話,除了自訂的子網使用者以外訪問都會出現無法解析的問題,所以我們還需要在ZoneScope中增加解析記錄
Add-DnsServerResourceRecord -ZoneName "ixmsoft.com" -A -Name "web" -IPv4Address "192.168.6.198"Add-DnsServerResourceRecord -ZoneName "ixmsoft.com" -A -Name "web" -IPv4Address "192.168.7.198"
執行後,我們就會在DNS中看見剛才上面增加的兩條記錄
以上條件配置好後,我們接下來要建立DNS查詢返回策略了,也是非常重要的,
在這裡我們指定用戶端子網範圍,eq代表等於的意思,一旦用戶端子網等於已經定義好的範圍,即有對應地區內的主機記錄給予響應,Zone Scope參數後面有一個1,這個在之後的文章我們會多次用到,在本次情境中我們是一個完全的分流的情境,如果不完全分流,例如大連使用者百分之70訪問北京伺服器,百分之30訪問美國伺服器,我們寫1,代表大連用戶端訪問百分之百是由北京地區的主機記錄給予響應
Add-DnsServerQueryResolutionPolicy -Name "beijingPolicy" -Action ALLOW -ClientSubnet "eq,beijingsubnet" -ZoneScope "beijing,1" -ZoneName "ixmsoft.com" Add-DnsServerQueryResolutionPolicy -Name "usPolicy" -Action ALLOW -ClientSubnet "eq,ussubnet" -ZoneScope "us,1" -ZoneName "ixmsoft.com"
建立好Policy後,我們可以查詢的
Get-DnsServerQueryResolutionPolicy -ZoneName "ixmsoft.com"
接著我們就可以測試了,
我們類比北京的子網地址,然後訪問的是北京的伺服器
我們類比美國的子網地址,然後訪問的是美國的伺服器
在此我們的基本配置已經完成了,我們下一節繼續介紹關於Windows Server DNS的相關文章。
Windows Server 2016 智能DNS(一)