相信第一次接觸Azure的讀者都會碰到這樣一個問題,就是Azure的IP地址,筆者第一次接觸Azure也是被搞懵逼了,一會兒VIP,不知道的還以為是會員的意思呢,一會兒又是DIP,后來又來了個PIP,所以很容易搞混淆,所以今天筆者稍微講一下這幾種IP!!!
Azure的IP地址分為下面幾類
VIP.負載均衡的IP地址(也可以叫公用虛擬IP地址)
DIP.內部IP地址(Azure官網還叫VIP:x,x表示端口號)
PIP.實例層級公共IP
廢話不多說,先貼一張圖

這張圖我是從官網上扣下來的,個人認為這張圖畫的還是比較清晰的
一.VIP
概述.在ASM中,這個IP地址是必須的,是SLB負載均衡的IP地址,你也可以認為是一個雲服務的IP地址,你可以這么理解,但是其實它是附着在SLB上的(以前Azure的SLB是用vm搭建的,現在都是物理機做的,這就是為什么阿里的SLB仍然要單獨收費,微軟免費的原因),因為我們知道雲服務相當於一個容器,里面包含了你的各種部署,但是這個容器外面的SLB是暴露給Internet的,在以前的ASM中,每個雲服務都可以免費獲取一個VIP,如果需要額外的VIP地址需要支付一定的費用,外部人員通過Internet訪問該雲服務就是訪問的該VIP地址的。
VIP有如下幾個特點
1.首先,該IP地址是SLB的,而SLB附着雲服務的上的,但是該雲服務里面必須有部署,否則不會分配VIP,在不固定VIP的前提下,一旦部署刪除,VIP也會隨即釋放,舉個例子,當在同一個雲服務中部署兩台VM,這兩個VM的VIP一樣,但是如果這兩台VM一旦被刪除,該VIP也會被釋放,但是在ARM中,如果不創建SLB(並且該虛擬機不分配PIP),那么該虛擬機就沒有公共IP地址。
2.該IP地址是禁ping的,因為SLB是禁止了ICMP協議的,而ping就是基於ICMP協議的。
3.該IP地址是可以固定的,可以通過powershell固定,如果不固定,一旦系統重啟以后該VIP會變,但是即使固定了,一旦刪除雲服務中的部署被刪除,該VIP仍然會變化,但是前一個VIP仍然被你獨占。
二.DIP
概述.Azure為雲服務中的每個部署提供一個虛擬IP地址,就是DIP,一般該地址都是私有IP,只能實現內網之間的互訪。
DIP有如下幾個特點
1.這是Azure VM的內網IP地址,在同一虛擬網絡中的不同VM就是通過DIP互相通信的(當然可以在子網中使用NSG進行策略)。
2.Azure的DIP的分配原則是先到先得的,最先創建並開機的VM會獲得第一個可用的DIP。
3.DIP也可以通過powershell固定,無論在ASM還是ARM里,即使該VM被停止或者關機了,該DIP仍然為其保留,但是如果你刪除了該VM,在ASM中,該DIP就會被釋放,不會再為其保留,如果在ARM中,如果只是刪除給虛擬機,該DIP仍然被獨占,因為有一個網絡接口沒被刪除,那是虛擬機的虛擬網卡所在,所以DIP仍然還保留着。
三.PIP
概述.我們知道虛擬機的DIP是無法被外網直接訪問的,必須通過VIP加端口號才能訪問,但是如果該虛擬機附加了PIP,外網就可以直接訪問,在ASM中,PIP是不可選的,只能是動態的,在ARM中,是可選的,可以設置為靜態,除此以外,我們知道,在Azure的虛擬網絡內部,是禁ping的,也就是說只有DIP的兩台虛擬機即使在同一內網里面仍然是ping不通的,但是附加了PIP,這兩台虛擬機就可以ping了,這是為什么,這是由於這時的ping的數據包其實不是走虛擬網絡傳輸的,而是借助於Internet,這樣就等於直接繞過虛擬網絡和SLB,這樣當然可以ping通,但是有人發現一個奇怪的問題,為什么我附加了PIP的VM可以ping通百度,但是訪問不了百度,這是什么原因呢?因為你的虛擬機外被設置了NSG,而NSG默認只開啟了22端口,就是SSH,所以你的80端口被關閉,當然不能使用http服務了,又由於NSG只能限制TCP/UDP的流量,而不能限制ICMP,所以當然可以ping通百度。
PIP有如下幾個特點
1.PIP是獨立的公網IP地址,和負載均衡的IP地址不一樣。
2.當同一個虛擬網絡中的兩台VM都保留了靜態PIP,這兩個PIP肯定是不同的。
3.如果某台VM我們使用了PIP,所有的請求都直接發送給該VM,在不設NSG的前提下,該VM不需要配置終結點,因為所有的終結點都是暴露在Internet上的。
4.如果VM開啟了PIP,就可以直接ping通,原理如上。
