本文介紹Azure應(yīng)用服務(wù)VNet集成功能,并介紹如何為Azure應(yīng)用服務(wù)中的應(yīng)用設(shè)置此功能。使用Azure虛擬網(wǎng)絡(luò)(VNet)可將多個(gè)Azure資源置于無法通過Internet路由的網(wǎng)絡(luò)中。
Azure應(yīng)用服務(wù)有兩種變體:
·支持除獨(dú)立定價(jià)計(jì)劃以外的全部定價(jià)計(jì)劃的多租戶系統(tǒng)。
·部署到VNet中且支持獨(dú)立定價(jià)計(jì)劃應(yīng)用的應(yīng)用服務(wù)環(huán)境。
VNet集成功能用于多租戶應(yīng)用。如果應(yīng)用在應(yīng)用服務(wù)環(huán)境中,則該應(yīng)用已處于VNet中且不需要使用VNet集成功能來獲取同一VNet中的資源。有關(guān)所有網(wǎng)絡(luò)功能的詳細(xì)信息,請參閱應(yīng)用服務(wù)網(wǎng)絡(luò)功能。
VNet集成允許應(yīng)用訪問VNet中的資源,但不允許通過VNet對應(yīng)用進(jìn)行入站專用訪問。專用站點(diǎn)訪問指的是僅可從專用網(wǎng)絡(luò)(例如Azure虛擬網(wǎng)絡(luò))對應(yīng)用進(jìn)行訪問。VNet集成僅用來從應(yīng)用對VNet進(jìn)行出站調(diào)用。VNet集成功能可以用于同一區(qū)域中的VNet,也可用于其他區(qū)域中的VNet,這兩種情況下的行為有所不同。VNet集成功能有兩種變體:
·需要網(wǎng)關(guān)的VNet集成:連接到其他區(qū)域中的VNet或同一區(qū)域中的經(jīng)典虛擬網(wǎng)絡(luò)時(shí),需要在目標(biāo)VNet中預(yù)配Azure虛擬網(wǎng)關(guān)。
VNet集成功能:
·需要“標(biāo)準(zhǔn)”、“高級”、“高級V2”或“彈性高級”定價(jià)計(jì)劃。
·支持TCP和UDP。
·適用于Azure應(yīng)用服務(wù)應(yīng)用和函數(shù)應(yīng)用。
VNet集成不支持某些功能,例如:
·裝載驅(qū)動(dòng)器。
·Active Directory集成。
·NetBIOS。
需要網(wǎng)關(guān)的VNet集成只允許訪問目標(biāo)VNet中的資源,或者訪問通過對等互連或VPN連接到目標(biāo)VNet的網(wǎng)絡(luò)中的資源。需要網(wǎng)關(guān)的VNet集成不支持訪問可通過Azure ExpressRoute連接使用的資源,也不適用于服務(wù)終結(jié)點(diǎn)。
無論使用哪個(gè)版本,VNet集成都允許應(yīng)用訪問VNet中的資源,但不允許通過VNet對應(yīng)用進(jìn)行入站專用訪問。專用站點(diǎn)訪問指的是僅可從專用網(wǎng)絡(luò)(例如Azure VNet)對應(yīng)用進(jìn)行訪問。VNet集成只是為了從應(yīng)用對VNet進(jìn)行出站調(diào)用。
啟用VNet集成
1.在應(yīng)用服務(wù)門戶中轉(zhuǎn)到“網(wǎng)絡(luò)”UI。在“VNet集成”下,選擇“單擊此處進(jìn)行配置”。
2.選擇“添加VNet”。
3.下拉列表包含訂閱內(nèi)位于相同區(qū)域中的所有Azure資源管理器虛擬網(wǎng)絡(luò)。下面是所有其他區(qū)域中資源管理器虛擬網(wǎng)絡(luò)的列表。選擇要集成的VNet。
·若要選擇另一區(qū)域中的VNet,必須已預(yù)配一個(gè)啟用了點(diǎn)到站點(diǎn)連接的VNet網(wǎng)關(guān)。
·若要與經(jīng)典VNet集成,請不要選擇“虛擬網(wǎng)絡(luò)”下拉列表,而應(yīng)選擇“單擊此處連接到經(jīng)典VNet”。選擇所需的經(jīng)典虛擬網(wǎng)絡(luò)。目標(biāo)VNet中必須已預(yù)配一個(gè)啟用了點(diǎn)到站點(diǎn)連接的虛擬網(wǎng)關(guān)。
在集成期間,應(yīng)用會(huì)重啟。完成集成后,將會(huì)看到與之集成的VNet的詳細(xì)信息。
需要網(wǎng)關(guān)的VNet集成
需要網(wǎng)關(guān)的VNet集成支持連接到另一區(qū)域中的VNet,或連接到經(jīng)典虛擬網(wǎng)絡(luò)。需要網(wǎng)關(guān)的VNet集成:
·允許應(yīng)用一次只連接到一個(gè)VNet。
·允許在一個(gè)應(yīng)用服務(wù)計(jì)劃中最多集成5個(gè)VNet。
·允許在應(yīng)用服務(wù)計(jì)劃中由多個(gè)應(yīng)用使用同一個(gè)VNet,不影響可供應(yīng)用服務(wù)計(jì)劃使用的總數(shù)。如果有6個(gè)應(yīng)用在使用同一應(yīng)用服務(wù)計(jì)劃中的同一VNet,則算作是使用了一個(gè)VNet。
·由于SLA是基于網(wǎng)關(guān),因此可實(shí)現(xiàn)99.9%的SLA。
·允許應(yīng)用使用配置給VNet的DNS。
·需要在基于虛擬網(wǎng)絡(luò)路由的網(wǎng)關(guān)中配置SSTP點(diǎn)到站點(diǎn)VPN,然后才能將其連接到應(yīng)用。
需要網(wǎng)關(guān)的VNet集成不可用于:
·通過Azure ExpressRoute連接的VNet。
·從Linux應(yīng)用
·訪問服務(wù)終結(jié)點(diǎn)保護(hù)的資源。
·既支持ExpressRoute,也支持點(diǎn)到站點(diǎn)VPN或站點(diǎn)到站點(diǎn)VPN的共存網(wǎng)關(guān)。
在Azure虛擬網(wǎng)絡(luò)中設(shè)置網(wǎng)關(guān)
若要?jiǎng)?chuàng)建網(wǎng)關(guān),請執(zhí)行以下操作:
1.在VNet中創(chuàng)建網(wǎng)關(guān)子網(wǎng)。
2.創(chuàng)建VPN網(wǎng)關(guān)。選擇基于路由的VPN類型。
3.設(shè)置點(diǎn)到站點(diǎn)地址。如果網(wǎng)關(guān)不在基本SKU中,則必須在點(diǎn)到站點(diǎn)配置中禁用IKEV2并選擇SSTP。點(diǎn)到站點(diǎn)地址空間必須在RFC 1918地址塊10.0.0.0/8、172.16.0.0/12和192.168.0.0/16中。
如果創(chuàng)建用于應(yīng)用服務(wù)VNet集成的網(wǎng)關(guān),則不需要上傳證書。創(chuàng)建網(wǎng)關(guān)可能需要30分鐘。若要將應(yīng)用與VNet集成,必須先預(yù)配網(wǎng)關(guān)。
需要網(wǎng)關(guān)的VNet集成的工作原理
需要網(wǎng)關(guān)的VNet集成基于點(diǎn)到站點(diǎn)VPN技術(shù)。點(diǎn)到站點(diǎn)VPN將網(wǎng)絡(luò)訪問限制于可托管應(yīng)用的虛擬機(jī)。應(yīng)用受到限制,只能通過混合連接或VNet集成向外發(fā)送流量至Internet。通過門戶將應(yīng)用配置為使用需要網(wǎng)關(guān)的VNet集成后,系統(tǒng)會(huì)代你管理復(fù)雜的協(xié)商,以便在網(wǎng)關(guān)上和應(yīng)用程序端創(chuàng)建并分配證書。結(jié)果是,用于托管應(yīng)用的輔助角色能夠直接連接到所選VNet中的虛擬網(wǎng)關(guān)。
訪問本地資源
應(yīng)用可以通過與具備站點(diǎn)到站點(diǎn)連接的VNet集成來訪問本地資源。如果使用需要網(wǎng)關(guān)的VNet集成,請使用點(diǎn)到站點(diǎn)地址塊更新本地VPN網(wǎng)關(guān)路由。先設(shè)置站點(diǎn)到站點(diǎn)VPN,接著應(yīng)通過用于配置該VPN的腳本來正確地設(shè)置路由。如果在創(chuàng)建站點(diǎn)到站點(diǎn)地址后才添加點(diǎn)到站點(diǎn)VPN,則需手動(dòng)更新路由。操作詳情取決于每個(gè)網(wǎng)關(guān),在此不作說明。不能使用站點(diǎn)到站點(diǎn)VPN連接來配置BGP。
本地連接。只需使用ExpressRoute或站點(diǎn)到站點(diǎn)VPN將VNet連接到本地。
備注
需要網(wǎng)關(guān)的VNet集成功能不將應(yīng)用與包含ExpressRoute網(wǎng)關(guān)的VNet集成。即使以共存模式配置ExpressRoute網(wǎng)關(guān),VNet集成也不會(huì)生效。
對等互連
如果結(jié)合對等互連使用需要網(wǎng)關(guān)的VNet集成,則需要配置幾個(gè)附加的項(xiàng)。若要配置對等互連以使用應(yīng)用,請執(zhí)行以下操作:
1.在應(yīng)用所連接的VNet上添加對等互連連接。在添加對等互連連接時(shí),請啟用“允許虛擬網(wǎng)絡(luò)訪問”并選擇“允許轉(zhuǎn)發(fā)流量”和“允許網(wǎng)關(guān)傳輸”。
2.在與所連接的VNet對等互連的VNet上添加對等互連連接。在目標(biāo)VNet上添加對等互連連接時(shí),請啟用“允許虛擬網(wǎng)絡(luò)訪問”并選擇“允許轉(zhuǎn)發(fā)流量”和“允許遠(yuǎn)程網(wǎng)關(guān)”。
3.在門戶中轉(zhuǎn)到“應(yīng)用服務(wù)計(jì)劃”>“網(wǎng)絡(luò)”>“VNet集成”UI。選擇應(yīng)用連接的VNet。在路由部分,添加與應(yīng)用所連接的VNet對等互連的VNet的地址范圍。
管理VNet集成
與VNet連接和斷開連接都在應(yīng)用級別進(jìn)行的??赡苡绊懚鄠€(gè)應(yīng)用的VNet集成的操作在應(yīng)用服務(wù)計(jì)劃級別執(zhí)行。可以通過應(yīng)用>“網(wǎng)絡(luò)”>“VNet集成”門戶獲取VNet的詳細(xì)信息。可以在“應(yīng)用服務(wù)計(jì)劃”>“網(wǎng)絡(luò)”>“VNet集成”門戶中查看應(yīng)用服務(wù)計(jì)劃級別的類似信息。
在VNet集成實(shí)例的應(yīng)用視圖中,能夠執(zhí)行的唯一操作是斷開應(yīng)用與當(dāng)前連接到的VNet的連接。若要斷開應(yīng)用與VNet的連接,請選擇“斷開連接”。斷開與VNet的連接后,應(yīng)用會(huì)重啟。斷開連接操作不會(huì)更改VNet。不會(huì)刪除子網(wǎng)或網(wǎng)關(guān)。若要?jiǎng)h除VNet,請先斷開應(yīng)用與該VNet的連接,然后刪除該VNet中的資源,例如網(wǎng)關(guān)。
應(yīng)用服務(wù)計(jì)劃VNet集成UI會(huì)顯示應(yīng)用服務(wù)計(jì)劃中的應(yīng)用使用的所有VNet集成。若要查看單個(gè)VNet的詳細(xì)信息,請選擇你感興趣的VNet。在此處,可以針對需要網(wǎng)關(guān)的VNet集成執(zhí)行兩項(xiàng)操作:
·同步網(wǎng)絡(luò):同步網(wǎng)絡(luò)操作僅用于網(wǎng)關(guān)相關(guān)的VNet集成功能。執(zhí)行同步網(wǎng)絡(luò)操作確保了證書與網(wǎng)絡(luò)信息是同步的。如果添加或更改VNet的DNS,請執(zhí)行同步網(wǎng)絡(luò)操作。此操作重啟使用此VNet的任何應(yīng)用。如果你使用的是屬于不同訂閱的應(yīng)用和VNet,此操作無效。
·添加路由:添加路由會(huì)促使出站流量進(jìn)入VNet。
需要網(wǎng)關(guān)的VNet集成路由
在VNet中定義的路由用于將流量從應(yīng)用導(dǎo)入VNet。若要將其他出站流量發(fā)送到VNet中,請?jiān)诖颂幪砑酉嚓P(guān)地址塊。此功能只適用于網(wǎng)關(guān)所需的VNet集成。使用需要網(wǎng)關(guān)的VNet集成時(shí),路由表不會(huì)影響應(yīng)用流量。
需要網(wǎng)關(guān)的VNet集成證書
啟用需要網(wǎng)關(guān)的VNet集成后,必須進(jìn)行證書交換以確保連接的安全性。除了證書,還有DNS配置、路由以及其他類似的用于描述網(wǎng)絡(luò)的內(nèi)容。
如果更改了證書或網(wǎng)絡(luò)信息,請選擇“同步網(wǎng)絡(luò)”。選擇“同步網(wǎng)絡(luò)”會(huì)導(dǎo)致應(yīng)用與VNet之間的連接出現(xiàn)短暫的中斷。雖然應(yīng)用不會(huì)重啟,但失去連接會(huì)導(dǎo)致站點(diǎn)功能失常。
定價(jià)詳細(xì)信息
使用需要網(wǎng)關(guān)的VNet集成功能會(huì)產(chǎn)生三項(xiàng)相關(guān)費(fèi)用:
·應(yīng)用服務(wù)計(jì)劃定價(jià)層費(fèi)用:應(yīng)用必須屬于“標(biāo)準(zhǔn)”、“高級”或“高級V2”應(yīng)用服務(wù)計(jì)劃。有關(guān)這些費(fèi)用的詳細(xì)信息,請參閱應(yīng)用服務(wù)定價(jià)。
·數(shù)據(jù)傳輸費(fèi)用:傳出數(shù)據(jù)會(huì)產(chǎn)生費(fèi)用,即使VNet位于同一數(shù)據(jù)中心也是如此。數(shù)據(jù)傳輸定價(jià)詳細(xì)信息中對這些費(fèi)用進(jìn)行了說明。
·VPN網(wǎng)關(guān)費(fèi)用:點(diǎn)到站點(diǎn)VPN所需的虛擬網(wǎng)關(guān)會(huì)產(chǎn)生費(fèi)用。有關(guān)詳細(xì)信息,請參閱VPN網(wǎng)關(guān)定價(jià)。
疑難解答
雖然此功能很容易設(shè)置,但這并不意味著你的體驗(yàn)不會(huì)遇到任何問題。如果在訪問所需終結(jié)點(diǎn)時(shí)遇到問題,可以使用某些實(shí)用程序來測試從應(yīng)用控制臺發(fā)出的連接??梢允褂脙煞N控制臺。一種是Kudu控制臺,另一種是Azure門戶中的控制臺。若要訪問應(yīng)用中的Kudu控制臺,請轉(zhuǎn)到“工具”>“Kudu”。此外,還可以通過[sitename].scm.chinacloudsites.cn訪問Kudo控制臺。打開網(wǎng)站負(fù)載后,轉(zhuǎn)到“調(diào)試控制臺”選項(xiàng)卡。若要從應(yīng)用訪問Azure門戶托管的控制臺,請轉(zhuǎn)到“工具”>“控制臺”。
工具
由于存在安全約束,因此無法通過控制臺運(yùn)行ping、nslookup和tracert工具。為了填補(bǔ)此空白,我們添加了兩個(gè)單獨(dú)的工具。我們添加了名為nameresolver.exe的工具,用于測試DNS功能。語法為:
控制臺
nameresolver.exe hostname[optional:DNS Server]
可以使用nameresolver來檢查應(yīng)用所需的主機(jī)名。可以通過這種方式來測試DNS是否配置錯(cuò)誤,或者測試你是否有權(quán)訪問DNS服務(wù)器。若要了解可供應(yīng)用在控制臺中使用的DNS服務(wù)器,請查看環(huán)境變量WEBSITE_DNS_SERVER和WEBSITE_DNS_ALT_SERVER。
可以使用下一工具測試與主機(jī)的TCP連接情況,以及端口組合情況。該工具名為tcpping,語法為:
控制臺
tcpping.exe hostname[optional:port]
tcpping實(shí)用程序會(huì)告知是否可訪問特定主機(jī)和端口。只有滿足以下條件才會(huì)顯示成功:存在偵聽主機(jī)和端口組合的應(yīng)用程序,且可從應(yīng)用對指定主機(jī)和端口進(jìn)行網(wǎng)絡(luò)訪問。
調(diào)試對虛擬網(wǎng)絡(luò)托管的資源的訪問
許多因素可能會(huì)阻止應(yīng)用訪問特定的主機(jī)和端口。大多數(shù)情況下為以下因素之一:
·存在防火墻。如果存在防火墻,則會(huì)發(fā)生TCP超時(shí)。本例中的TCP超時(shí)為21秒。使用tcpping工具測試連接性。除了防火墻外,還有多種原因可能導(dǎo)致TCP超時(shí)。
·DNS不可訪問。每個(gè)DNS服務(wù)器的DNS超時(shí)為3秒。如果具有2個(gè)DNS服務(wù)器,則超時(shí)為6秒。使用nameresolver查看DNS是否正常工作。不能使用nslookup,因?yàn)樗皇褂脼樘摂M網(wǎng)絡(luò)配置的DNS。如果無法訪問,則表明可能有防火墻或NSG在阻止對DNS的訪問,或者該DNS可能已停機(jī)。
如果這些方法未解決問題,請首先檢查以下因素:
需要網(wǎng)關(guān)的VNet集成
·點(diǎn)到站點(diǎn)地址范圍是否在RFC 1918范圍內(nèi)(10.0.0.0-10.255.255.255/172.16.0.0-172.31.255.255/192.168.0.0-192.168.255.255)?
·網(wǎng)關(guān)在門戶中是否顯示為已啟動(dòng)?如果網(wǎng)關(guān)處于關(guān)閉狀態(tài),則將其重新啟動(dòng)。
·證書是否顯示正在同步?或者,你是否懷疑網(wǎng)絡(luò)配置已更改?如果證書未同步,或者你懷疑對虛擬網(wǎng)絡(luò)配置做出了與ASP不同步的更改,請選擇“同步網(wǎng)絡(luò)”。
·如果通過VPN傳輸,本地網(wǎng)關(guān)是否配置為將流量路由回Azure?如果可以訪問虛擬網(wǎng)絡(luò)中的終結(jié)點(diǎn),但不能訪問本地的終結(jié)點(diǎn),請檢查路由。
·你是否正在嘗試使用一個(gè)既支持點(diǎn)到站點(diǎn)連接,又支持ExpressRoute的共存網(wǎng)關(guān)?VNet集成不支持共存網(wǎng)關(guān)。
調(diào)試網(wǎng)絡(luò)問題很有難度,因?yàn)槟憧床坏侥男┮蛩卦谧柚乖L問特定的“主機(jī):端口”組合。部分原因包括:
·在主機(jī)上開啟了防火墻,導(dǎo)致無法從點(diǎn)到站點(diǎn)IP范圍訪問應(yīng)用程序端口??缱泳W(wǎng)通常需要公共訪問權(quán)限。
·目標(biāo)主機(jī)已關(guān)閉。
·應(yīng)用程序已關(guān)閉。
·IP或主機(jī)名錯(cuò)誤。
·應(yīng)用程序所偵聽的端口與你預(yù)期的端口不同??梢允褂媒K結(jié)點(diǎn)主機(jī)上的“netstat-aon”匹配進(jìn)程ID和偵聽端口。
·網(wǎng)絡(luò)安全組的配置方式導(dǎo)致無法從點(diǎn)到站點(diǎn)IP范圍訪問應(yīng)用程序主機(jī)和端口。
你不知道應(yīng)用實(shí)際使用的地址。它可能是集成子網(wǎng)中或點(diǎn)到站點(diǎn)地址范圍內(nèi)的任意地址,因此你需要允許從整個(gè)地址范圍進(jìn)行訪問。
其他調(diào)試步驟包括:
·連接到虛擬網(wǎng)絡(luò)中的某個(gè)VM,嘗試在該處訪問資源主機(jī):端口。若要針對TCP訪問權(quán)限進(jìn)行測試,請使用PowerShell命令test-netconnection。語法為:
PowerShell
test-netconnection hostname[optional:-Port]
·在某個(gè)VM中啟動(dòng)應(yīng)用程序,然后使用tcpping測試能否在應(yīng)用的控制臺中訪問該主機(jī)和端口。
本地資源
如果應(yīng)用無法訪問本地資源,請檢查是否能夠通過虛擬網(wǎng)絡(luò)訪問該資源。請使用test-netconnection PowerShell命令來針對TCP訪問權(quán)限進(jìn)行測試。如果VM無法訪問本地資源,原因可能是未正確配置VPN或ExpressRoute連接。
如果虛擬網(wǎng)絡(luò)托管的VM能夠訪問本地系統(tǒng)但應(yīng)用無法訪問,則可能是由于以下某個(gè)原因:
·在本地網(wǎng)關(guān)中未使用子網(wǎng)或點(diǎn)到站點(diǎn)地址范圍配置路由。
·網(wǎng)絡(luò)安全組阻止點(diǎn)到站點(diǎn)IP范圍的訪問。
·本地防火墻阻止來自點(diǎn)到站點(diǎn)IP范圍的流量。