之前我們寫過一篇博文談到Azure內置的內網DNS服務器不能跨Cloud Service,而我們的虛擬機部署場景恰恰需要跨多個Cloud Service,所以目前只能選擇用Azure虛擬機搭建自己的內網DNS服務器。這篇博文分享的是我們在Azure上搭建自己的內網DNS服務器的經過。
1、創建1臺用于跑DNS服務的虛擬機,假設名叫dnsserver。
2、登錄這臺虛擬機,安裝DNS服務。
3、安裝時Windows警告虛擬機用的是動態IP,推薦使用靜態IP。聽從該警告,接下來我給虛擬機配置靜態IP。
4、進入Azure管理控制臺->Networks,在虛擬網中添加一名為DNS的子網,子網的目的僅是為了給DNS服務器保留內網IP,這里我們保留了3個IP(見下圖)
在添加子網保存時,我們發現了這樣的提示:
Changing the configuration of a network that is in use will briefly disrupt the connection between the virtual network and the local network. Are you sure you want to continue?
修改虛擬網設置竟然會引起網絡短時間的中斷!難道在生產環境中,如果要修改虛擬網設置,還要找個夜深人靜、訪問量最少的時間。即使這樣,也是造成了正常服務的中斷。這地方的設計還是有所欠缺。
5、回到需要安裝DNS服務的虛擬機,給它指定靜態IP(10.0.1.4),但是子網掩碼與網關不知怎么填。算了,還是把這臺虛擬機移到DNS這個子網(之前在FrontEnd子網),然后根據DHCP的信息進行填寫。
6、但無法在子網間移動虛擬機,只能先“刪除”這臺虛擬機(在Azure中,刪除虛擬機是指刪除虛擬機的運行實例,從編程角度講刪除的是對象,而不是類文件)。
7、New Virtual Machine From Gallery -> My Disks,重新創建dnsserver虛擬機,創建時選擇DNS這個虛擬網子網。
8、dnsserver虛擬機創建好之后,根據DHCP分配的IP信息,設置靜態IP(見下圖)。
(注:在保存靜態IP設置時,遠程桌面連接會閃斷一下)
9、重新打開Server Manager,繼續安裝DNS服務。安裝成功之后在其他虛擬機上用“telnet 10.0.14 53”命令測試一下,如果成功連接說明DNS服務工作正常。
10、在dnsserver虛擬機上打開DNS管理工具,新建一個名為cnblogs.local的區域,在創建時一定要選擇允許動態更新(見下圖)。
11、創建好區域之后,DNS服務器本身的配置工作就完成了。
12、打開Azure的Networks管理控制臺,選擇相應的虛擬網,進入Configure頁面,添加之前配置的DNS服務器。
13、保存時出現如下的提示:
Changing the configuration of a network that is in use will briefly disrupt the connection between the virtual network and the local network. Are you sure you want to continue?
If you change the DNS server while the virtual network is in use, you have to restart the virtual machines to reset the DNS settings.
不僅會造成網絡中斷,而且為了使DNS生效,需要重啟所有虛擬機。
14、保存成功后,發現原來為虛擬機提供DNS解析服務的Azure內置DNS服務器拒絕服務了,這個地方的設計不夠人性化。
15、分別重啟不在同一個Cloud Service中的blogserver2與passport這兩臺虛擬機,重啟發現DNS的確切換為了我們設置的DNS服務器。
然后,測試dns解析,ping blogserver2,結果依然是:
Ping request could not find host blogserver2. Please check the name and try again.
再看一下blogserver2的IP信息,DNS后綴與DNS服務器的區域信息不匹配。
而且DNS服務器中也沒有對應的blogserver2主機記錄。
16、解決方法:打開blogserver2的TCP/IP高級設置,在“DNS”設置中,給“DNS suffix for this connection”添加后綴值cnblogs.local(與DNS區域名稱保持一致),并且選中“Use this connection's DNS buffix in DNS registration”(讓DHCP將主機名解析注冊至DNS服務器中)。
passport這臺虛擬機也進行同樣的設置,然后重啟這兩臺虛擬機。
17、blogserver2與passport這兩臺虛擬機重啟成功后,就會在DNS服務器的區域中看到這兩臺服務器的解析記錄。
18、在passport這臺虛擬機中測試一下dns解析,運行命令:ping blogserver2,運行結果如下:
搞定!
配置要點小結
1、DNS服務器要用靜態IP,劃分專門的子網以保留IP給DNS服務器。
2、DNS服務器要允許動態更新。
3、每臺需要DNS服務的虛擬機都需要修改TCP/IP設置,給“DNS suffix for this connection”添加后綴值cnblogs.local(與DNS區域名稱保持一致),并且選中“Use this connection's DNS buffix in DNS registration”(讓DHCP將主機名解析注冊至DNS服務器中)。
4、每臺需要DNS服務的虛擬機都需要重啟。
如何解決DNS服務器的單點故障
再用虛擬機搭建一臺DNS服務器,讓這兩臺DNS服務器自動復制,然后在Azure虛擬網中設置兩臺DNS服務器。
文章列表