創(chuàng)建 Azure 虛擬機(jī) (VM) 時(shí),必須創(chuàng)建虛擬網(wǎng)絡(luò)(VNet) 或使用現(xiàn)有的 VNet。 此外,還需要確定如何在 VNet 上訪問 VM。在創(chuàng)建資源之前必須做好規(guī)劃,確保了解網(wǎng)絡(luò)資源的限制。
在下圖中,VM 顯示為 Web 服務(wù)器和數(shù)據(jù)庫(kù)服務(wù)器。 每組 VM 已分配到 VNet 中的獨(dú)立子網(wǎng)。
可以在創(chuàng)建 VM 之前創(chuàng)建 VNet,也可以在創(chuàng)建 VM 時(shí)創(chuàng)建 VNet。 需要?jiǎng)?chuàng)建以下資源來支持與 VM 通信:
網(wǎng)絡(luò)接口
IP 地址
虛擬網(wǎng)絡(luò)和子網(wǎng)
除了上述基本資源外,還應(yīng)考慮創(chuàng)建以下可選資源:
網(wǎng)絡(luò)安全組
負(fù)載均衡器
網(wǎng)絡(luò)接口
網(wǎng)絡(luò)接口 (NIC)是 VM 與虛擬網(wǎng)絡(luò) (VNet) 之間互相連接的橋梁。 VM 必須至少有一個(gè) NIC,但可以根據(jù)所創(chuàng)建 VM 的大小包含多個(gè) NIC。 了解Windows或Linux的每個(gè) VM 大小支持的 NIC 數(shù)。
可以創(chuàng)建具有多個(gè) NIC 的 VM,并可在 VM 的整個(gè)生命周期中添加或刪除 NIC。 多個(gè) NIC 允許 VM 連接到不同子網(wǎng),并可通過最適當(dāng)?shù)慕涌诎l(fā)送或接收流量。 詳細(xì)了解如何在Windows或LinuxVM 中使用多個(gè) NIC。
如果 VM 已添加到可用性集,該可用性集中的所有 VM 必須包含一個(gè)或多個(gè) NIC。 包含多個(gè) NIC 的 VM 不一定要有相同數(shù)目的 NIC,但必須至少包含兩個(gè) NIC。
附加到 VM 的每個(gè) NIC 必須在與 VM 相同的位置和訂閱中。 每個(gè) NIC 必須連接到與 NIC 位于相同 Azure 位置和訂閱中的 VNet。 創(chuàng)建 VM 之后,可以更改它連接到的子網(wǎng),但無(wú)法更改 VNet。 附加到 VM 的每個(gè) NIC 將分配有一個(gè) MAC 地址,在刪除 VM 之前,該地址不會(huì)變化。
下表列出了可用于創(chuàng)建網(wǎng)絡(luò)接口的方法。
方法說明
Azure 門戶在 Azure 門戶中創(chuàng)建 VM 時(shí),系統(tǒng)會(huì)自動(dòng)創(chuàng)建網(wǎng)絡(luò)接口(無(wú)法使用單獨(dú)創(chuàng)建的 NIC)。 門戶會(huì)創(chuàng)建只包含一個(gè) NIC 的 VM。 如果想要?jiǎng)?chuàng)建包含多個(gè) NIC 的 VM,必須使用其他方法創(chuàng)建 VM。
Azure PowerShell結(jié)合-PublicIpAddressId參數(shù)使用New-AzureRmNetworkInterface,提供事先創(chuàng)建的公共 IP 地址標(biāo)識(shí)符。
Azure CLI若要提供事先創(chuàng)建的公共 IP 地址標(biāo)識(shí)符,請(qǐng)結(jié)合--public-ip-address參數(shù)使用az network nic create。
模板參考Network Interface in a Virtual Network with Public IP Address(虛擬網(wǎng)絡(luò)中使用公共 IP 地址的網(wǎng)絡(luò)接口),使用模板部署網(wǎng)絡(luò)接口。
IP 地址
可將以下類型的IP 地址分配到 Azure 中的 NIC:
公共 IP 地址:用來與 Internet 以及未連接到 VNet 的其他 Azure 資源進(jìn)行入站和出站通信(不提供網(wǎng)絡(luò)地址轉(zhuǎn)換 (NAT))。 向 NIC 分配公共 IP 地址是可選操作。 公共 IP 地址會(huì)產(chǎn)生少許費(fèi)用,并且每個(gè)訂閱可使用的最大公共 IP 地址數(shù)目有限制。
專用 IP 地址:用于在 VNet、本地網(wǎng)絡(luò)和 Internet 中通信(提供 NAT)。 必須至少將一個(gè)專用 IP 地址分配給 VM。 若要詳細(xì)了解 Azure 中的 NAT,請(qǐng)閱讀了解 Azure 中的出站連接。
可將公共 IP 地址分配到 VM 或面向 Internet 的負(fù)載均衡器。 可將專用 IP 地址分配到 VM 和內(nèi)部負(fù)載均衡器。 可以使用網(wǎng)絡(luò)接口將 IP 地址分配給 VM。
將 IP 地址分配給資源有兩種方法:動(dòng)態(tài)或靜態(tài)。 默認(rèn)分配方法為動(dòng)態(tài),即,IP 地址不是在創(chuàng)建它時(shí)分配的, 而是在創(chuàng)建 VM 或啟動(dòng)已停止的 VM 時(shí)分配的。 停止或刪除該 VM 時(shí),會(huì)釋放該 IP 地址。
要確保 VM 的 IP 地址保持不變,可將分配方法顯式設(shè)置為靜態(tài)。 在這種情況下,IP 地址是即時(shí)分配的。 只有在刪除該 VM 或?qū)⑵浞峙浞椒ǜ臑閯?dòng)態(tài)時(shí),才會(huì)釋放該地址。
下表列出了可用于創(chuàng)建 IP 地址的方法。
方法說明
Azure 門戶默認(rèn)情況下,公共 IP 地址是動(dòng)態(tài)的,在停止或刪除 VM 時(shí),與這些公共 IP 地址關(guān)聯(lián)的地址可能會(huì)更改。 為確保 VM 始終使用同一個(gè)公共 IP 地址,需創(chuàng)建靜態(tài)公共 IP 地址。 默認(rèn)情況下,門戶會(huì)在創(chuàng)建 VM 時(shí)向 NIC 分配一個(gè)動(dòng)態(tài)專用 IP 地址。 創(chuàng)建 VM 后,可將此 IP 地址更改為靜態(tài)地址。
Azure PowerShell結(jié)合值為 Dynamic 或 Static 的-AllocationMethod參數(shù)使用New-AzureRmPublicIpAddress。
Azure CLI結(jié)合值為 Dynamic 或 Static 的--allocation-method參數(shù)使用az network public-ip create。
模板參考Network Interface in a Virtual Network with Public IP Address(虛擬網(wǎng)絡(luò)中使用公共 IP 地址的網(wǎng)絡(luò)接口),使用模板部署公共 IP 地址。
創(chuàng)建公共 IP 地址后,可將它分配到 NIC,從而將它與 VM 相關(guān)聯(lián)。
虛擬網(wǎng)絡(luò)和子網(wǎng)
子網(wǎng)是 VNet 中的一系列 IP 地址。 可將一個(gè) VNet 劃分為多個(gè)子網(wǎng),以便于組織和提高安全性。 VM 中的每個(gè) NIC 連接到一個(gè) VNet 中的一個(gè)子網(wǎng)。 連接到 VNet 中的子網(wǎng)(不管是相同的子網(wǎng)還是不同的子網(wǎng))的 NIC 可以互相通信,不需任何額外的配置。
設(shè)置 VNet 時(shí),需指定拓?fù)洌捎玫牡刂房臻g和子網(wǎng)。 如果 VNet 要連接到其他 VNet 或本地網(wǎng)絡(luò),則必須選擇不重疊的地址范圍。 這些 IP 地址是專用的,無(wú)法從 Internet 訪問,這種限制在過去只適用于不可路由的 IP 地址,例如 10.0.0.0/8、172.16.0.0/12 或 192.168.0.0/16。 現(xiàn)在,Azure 將所有地址范圍都視為只能在 VNet 內(nèi)部、互連 VNet 內(nèi)部以及從本地位置訪問的專用 VNet IP 地址空間的一部分。
如果內(nèi)部網(wǎng)絡(luò)由組織中的其他某人負(fù)責(zé),在選擇地址空間之前,應(yīng)咨詢?cè)撠?fù)責(zé)人。 確保 IP 地址范圍不重疊。請(qǐng)告訴他們你要使用的空間,以免他們嘗試使用相同的 IP 地址范圍。
默認(rèn)情況下,子網(wǎng)之間沒有安全邊界,因此,每個(gè)子網(wǎng)中的 VM 可以相互通信。 但是,可以設(shè)置網(wǎng)絡(luò)安全組 (NSG) 來控制流入或流出子網(wǎng)以及 VM 的流量。
下表列出了可用于創(chuàng)建 VNet 和子網(wǎng)的方法。
方法說明
Azure 門戶如果要在創(chuàng)建 VM 時(shí)讓 Azure 創(chuàng)建 VNet,VNet 的名稱是包含 VNet 的資源組名稱和-vnet的組合。 地址空間為 10.0.0.0/24,所需的子網(wǎng)名稱為default,子網(wǎng)地址范圍為 10.0.0.0/24。
Azure PowerShell使用New-AzureRmVirtualNetworkSubnetConfig和New-AzureRmVirtualNetwork可以創(chuàng)建子網(wǎng)與 VNet。 還可以使用Add-AzureRmVirtualNetworkSubnetConfig將子網(wǎng)添加到現(xiàn)有 VNet。
Azure CLI子網(wǎng)和 VNet 是同時(shí)創(chuàng)建的。 在az network vnet create后面提供--subnet-name參數(shù)并指定子網(wǎng)名稱。
模板創(chuàng)建 VNet 和子網(wǎng)的最簡(jiǎn)單方法是下載一個(gè)現(xiàn)有的模板(例如包含兩個(gè)子網(wǎng)的虛擬網(wǎng)絡(luò)),并根據(jù)需要對(duì)它進(jìn)行修改。
網(wǎng)絡(luò)安全組
網(wǎng)絡(luò)安全組 (NSG)包含一系列訪問控制列表 (ACL) 規(guī)則,這些規(guī)則可以允許或拒絕流向子網(wǎng)和/或 NIC 的網(wǎng)絡(luò)流量。 NSG 可與子網(wǎng)或者已連接到子網(wǎng)的各個(gè) NIC 相關(guān)聯(lián)。 當(dāng) NSG 與某個(gè)子網(wǎng)相關(guān)聯(lián)時(shí),ACL 規(guī)則應(yīng)用到該子網(wǎng)中的所有 VM。 另外,可以通過將 NSG 直接關(guān)聯(lián)到 NIC,對(duì)流向單個(gè) NIC 的流量進(jìn)行限制。
NSG 包含兩種類型的規(guī)則:入站規(guī)則和出站規(guī)則。 在每組中,規(guī)則的優(yōu)先級(jí)必須保持唯一。 每個(gè)規(guī)則包含以下屬性:協(xié)議、源和目標(biāo)端口范圍、地址前綴、流量方向、優(yōu)先級(jí)和訪問類型。
所有 NSG 都包含一組默認(rèn)規(guī)則。 默認(rèn)規(guī)則無(wú)法刪除,但由于給它們分配的優(yōu)先級(jí)最低,可以用創(chuàng)建的規(guī)則來重寫它們。
將 NSG 關(guān)聯(lián)到 NIC 時(shí),NSG 中的網(wǎng)絡(luò)訪問規(guī)則只會(huì)應(yīng)用到該 NIC。 如果 NSG 已應(yīng)用到包含多個(gè) NIC 的 VM 中的單個(gè) NIC,則它不會(huì)影響流向其他 NIC 的流量。 可將不同的 NSG 關(guān)聯(lián)到 NIC(或 VM,具體取決于部署模型)以及 NIC 或 VM 綁定到的子網(wǎng)。 優(yōu)先級(jí)是根據(jù)流量方向指定的。
規(guī)劃 VM 和 VNet 時(shí),請(qǐng)務(wù)必規(guī)劃NSG。
下表列出了可用于創(chuàng)建網(wǎng)絡(luò)安全組的方法。
方法說明
Azure 門戶在 Azure 門戶中創(chuàng)建 VM 時(shí),會(huì)自動(dòng)創(chuàng)建 NSG 并將其關(guān)聯(lián)到門戶創(chuàng)建的 NIC。 NSG 的名稱是 VM 名稱和-nsg的組合。 此 NSG 包含一個(gè)入站規(guī)則,該規(guī)則的優(yōu)先級(jí)為 1000,服務(wù)設(shè)置為 RDP,協(xié)議設(shè)置為 TCP,端口設(shè)置為 3389,操作設(shè)置為“允許”。 如果想要允許其他任何入站流量流向 VM,必須向 NSG 添加更多規(guī)則。
Azure PowerShell使用New-AzureRmNetworkSecurityRuleConfig并提供所需的規(guī)則信息。 使用New-AzureRmNetworkSecurityGroup創(chuàng)建 NSG。 使用Set-AzureRmVirtualNetworkSubnetConfig為子網(wǎng)配置 NSG。 使用Set-AzureRmVirtualNetwork將 NSG 添加到 VNet。
Azure CLI首先使用az network nsg create創(chuàng)建 NSG。 使用az network nsg rule create向 NSG 添加規(guī)則。 使用az network vnet subnet update將 NSG 添加到子網(wǎng)。
模板參考創(chuàng)建網(wǎng)絡(luò)安全組,使用模板部署網(wǎng)絡(luò)安全組。
負(fù)載均衡器
Azure 負(fù)載均衡器可提高應(yīng)用程序的可用性和網(wǎng)絡(luò)性能。 可以配置負(fù)載均衡器,對(duì)傳入 VM 的 Internet 流量進(jìn)行均衡,或者對(duì) VNet 中 VM 之間的流量進(jìn)行均衡。 負(fù)載均衡器還可以均衡跨界網(wǎng)絡(luò)中本地計(jì)算機(jī)與 VM 之間的流量,或者將外部流量轉(zhuǎn)發(fā)到特定的 VM。
負(fù)載均衡器可以映射負(fù)載均衡器中公共 IP 地址與端口之間的,以及 VM 中專用 IP 地址與端口之間的傳入和傳出流量。
創(chuàng)建負(fù)載均衡器時(shí),還必須考慮以下配置要素:
前端 IP 配置:?jiǎn)蝹€(gè)負(fù)載均衡器可包含一個(gè)或多個(gè)前端 IP 地址(也稱為虛擬 IP,即 VIP)。 這些 IP 地址充當(dāng)流量的入口。
后端地址池– 與負(fù)載分配到的 NIC 關(guān)聯(lián)的 IP 地址。
NAT 規(guī)則– 定義入站流量如何流經(jīng)前端 IP 并分配到后端 IP。
負(fù)載均衡器規(guī)則– 將給定的前端 IP 和端口組合映射到一組后端 IP 地址和端口組合。 單個(gè)負(fù)載均衡器可擁有多個(gè)負(fù)載均衡規(guī)則。 每個(gè)規(guī)則都包含前端 IP 和端口,以及與 VM 關(guān)聯(lián)的后端 IP 和端口。
探測(cè)器:監(jiān)視 VM 的運(yùn)行狀況。 當(dāng)探測(cè)無(wú)法響應(yīng)時(shí),負(fù)載均衡器會(huì)停止向狀況不良的 VM 發(fā)送新連接。 現(xiàn)有連接不受影響,新連接將發(fā)送到狀況良好的 VM。
下表列出了可用于創(chuàng)建面向 Internet 的負(fù)載均衡器的方法。
方法說明
Azure 門戶目前無(wú)法使用 Azure 門戶創(chuàng)建面向 Internet 的負(fù)載均衡器。
Azure PowerShell若要提供事先創(chuàng)建的公共 IP 地址標(biāo)識(shí)符,請(qǐng)結(jié)合-PublicIpAddress參數(shù)使用New-AzureRmLoadBalancerFrontendIpConfig。 使用New-AzureRmLoadBalancerBackendAddressPoolConfig創(chuàng)建后端地址池的配置。 使用New-AzureRmLoadBalancerInboundNatRuleConfig創(chuàng)建與前端 IP 配置關(guān)聯(lián)的入站 NAT 規(guī)則。 使用New-AzureRmLoadBalancerProbeConfig創(chuàng)建所需的探測(cè)。 使用New-AzureRmLoadBalancerRuleConfig創(chuàng)建負(fù)載均衡器配置。 使用New-AzureRmLoadBalancer創(chuàng)建負(fù)載均衡器。
Azure CLI使用az network lb create創(chuàng)建初始負(fù)載均衡器配置。 使用az network lb frontend-ip create添加事先創(chuàng)建的公共 IP 地址。 使用az network lb address-pool create添加后端地址池的配置。 使用az network lb inbound-nat-rule create添加 NAT 規(guī)則。 使用az network lb rule create添加負(fù)載均衡器規(guī)則。 使用az network lb probe create添加探測(cè)。
模板參考負(fù)載均衡器中的 2 個(gè) VM,在 LB 上配置 NAT 規(guī)則,使用模板部署負(fù)載均衡器。
下表列出了可用于創(chuàng)建內(nèi)部負(fù)載均衡器的方法。
方法說明
Azure 門戶目前無(wú)法使用 Azure 門戶創(chuàng)建內(nèi)部負(fù)載均衡器。
Azure PowerShell若要提供網(wǎng)絡(luò)子網(wǎng)中的專用 IP 地址,請(qǐng)結(jié)合-PrivateIpAddress參數(shù)使用New-AzureRmLoadBalancerFrontendIpConfig。 使用New-AzureRmLoadBalancerBackendAddressPoolConfig創(chuàng)建后端地址池的配置。 使用New-AzureRmLoadBalancerInboundNatRuleConfig創(chuàng)建與前端 IP 配置關(guān)聯(lián)的入站 NAT 規(guī)則。 使用New-AzureRmLoadBalancerProbeConfig創(chuàng)建所需的探測(cè)。 使用New-AzureRmLoadBalancerRuleConfig創(chuàng)建負(fù)載均衡器配置。 使用New-AzureRmLoadBalancer創(chuàng)建負(fù)載均衡器。
Azure CLI使用az network lb create命令創(chuàng)建初始負(fù)載均衡器配置。 若要定義專用 IP 地址,請(qǐng)結(jié)合--private-ip-address參數(shù)使用az network lb frontend-ip create。 使用az network lb address-pool create添加后端地址池的配置。 使用az network lb inbound-nat-rule create添加 NAT 規(guī)則。 使用az network lb rule create添加負(fù)載均衡器規(guī)則。 使用az network lb probe create添加探測(cè)。
模板參考負(fù)載均衡器中的 2 個(gè) VM,在 LB 上配置 NAT 規(guī)則,使用模板部署負(fù)載均衡器。
VM
可在同一 VNet 中創(chuàng)建 VM,VM 可以使用專用 IP 地址相互連接。 即使 VM 位于不同的子網(wǎng)中,它們也可以相互連接,無(wú)需配置網(wǎng)關(guān)或使用公共 IP 地址。 要將 VM 放入某個(gè) VNet,請(qǐng)創(chuàng)建該 VNet,然后在每個(gè) VM 時(shí),將其分配到該 VNet 和子網(wǎng)。 在部署或啟動(dòng)期間,VM 會(huì)獲取其網(wǎng)絡(luò)設(shè)置。
部署 VM 時(shí),系統(tǒng)為 VM 分配一個(gè) IP 地址。 如果將多個(gè) VM 部署到 VNet 或子網(wǎng),則 VM 啟動(dòng)時(shí),系統(tǒng)為其分配 IP 地址。 動(dòng)態(tài) IP 地址 (DIP) 是與 VM 關(guān)聯(lián)的內(nèi)部 IP 地址。 可向 VM 分配靜態(tài) DIP。 如果分配靜態(tài) DIP,應(yīng)考慮使用特定的子網(wǎng),避免意外地重復(fù)使用另一個(gè) VM 的靜態(tài) DIP。
如果創(chuàng)建了一個(gè) VM,事后又想要將它遷移到 VNet,做出這種配置更改并不是一個(gè)簡(jiǎn)單的過程。 在這種情況下,必須將 VM 重新部署到 VNet。 最簡(jiǎn)單的重新部署方法是刪除該 VM(但不要?jiǎng)h除其上附加的任何磁盤),并在 VNet 中使用原始磁盤重新創(chuàng)建 VM。
下表列出了可用于在 VNet 中創(chuàng)建 VM 的方法。
方法說明
Azure 門戶使用前面所述的默認(rèn)網(wǎng)絡(luò)設(shè)置創(chuàng)建包含單個(gè) NIC 的 VM。 若要?jiǎng)?chuàng)建包含多個(gè) NIC 的 VM,必須使用其他方法。
Azure PowerShell使用Add-AzureRmVMNetworkInterface將事先創(chuàng)建的 NIC 添加到 VM 配置中。
Azure CLI創(chuàng)建 VM 并將其連接到以單個(gè)步驟生成的 Vnet、子網(wǎng)和 NIC。
模板參考Very simple deployment of a Windows VM(非常簡(jiǎn)單的 Windows VM 部署),使用模板部署 VM。
后續(xù)步驟
有關(guān)如何為 VM 管理 Azure 虛擬網(wǎng)絡(luò)的 VM 特定步驟,請(qǐng)參閱Windows或Linux教程。
還有關(guān)于如何對(duì) VM 進(jìn)行負(fù)載均衡以及如何創(chuàng)建適用于Windows或Linux的高度可用應(yīng)用程序的教程。
了解如何配置用戶定義的路由和 IP 轉(zhuǎn)發(fā)。
了解如何配置VNet 到 VNet 連接。
了解如何排查路由問題。
立即訪問http://market.azure.cn