公有雲如何將大量IP地址分配給各個虛擬機?
是拿下一整個段直接分配公網地址,還是做映射? 根據是否有80埠的需求決定是單獨分配地址還是共享地址分配指定埠?
Azure裡面你部署一個cloud service,獲得一個public endpoint,這個是有公網ip的。但是這個endpoint背後可能有幾百台虛擬機,前面通過一個dispatcher來分發請求。所以這個ip是綁在前端dispatcher這裡的。
虛機會拿到一個內部ip,這個可以用來內部互相通訊。提供IAAS的雲服務商,比如Amazon,應該拿下了很大的公有IP網段,不排除搞到了大量16位掩碼的網段(甚至一個8位的)。它的每個用戶都可以為自己的EC2分配IP,目前似乎還沒有限制(雖說今年全球的IPv4地址已經告罄)。但更普遍的做法都是每個用戶獨享私有網段(10.0.0.0/8, 192.168.0.0/16),規劃他們自己的網路,然後需要的時候為特定的伺服器分配公有IP或者使用ELB。
Azure應該也是如此。公有ip都是直接分配到虛機的,它會動態綁定一個公有ip到虛機,所以你可以使用EIP這樣的功能。這也是為什麼在虛機中運行`ifconfig`只有private ip沒有公有ip的信息。
樓主問這個問題可能是因為我們總覺得公有IP是如何如何金貴,以至於發現公有雲可以每個虛機掛個public IP覺得不可思議。
其實只是地址已經被分配完了,至於是否緊缺就要看在哪裡了。有很多地方地址大把大把富餘。我以前在紐西蘭,每家的寬頻其實就直接分配一個共有IP。你在家直接用電腦撥號,你電腦就可以拿到一個公有IP了。這也是為什麼他們的家庭寬頻還可以申請靜態IP的服務。
現在AWS手裡有大量的IP地址,通過它發布的ip地址(https://ip-ranges.amazonaws.com/ip-ranges.json),很容易就算出(https://gist.github.com/wbinglee/d903ee7e059d5b742f96)它在使用的地址將近三千萬個,那手裡 預留的就不知道有多少了。
這個世界資源分配從來都是極不均勻的。推薦閱讀: