整理一下有關客戶上云VPC網(wǎng)絡規(guī)劃的最佳實踐系列文章,希望能夠給大家提供一些技術上的干貨,供大家參考。

什么是VPC
VPC,是Virtual Private cloud英文縮寫,中文的意思是虛擬私有云,最早是云計算鼻祖AWS提出來的,后來的云服務商都沿用了VPC的術語。
具體來說,VPC指的是一種云(Cloud),這與它的字面意思相符。對于基礎架構服務(IaaS),云就是指資源池。
你或許聽過公有云(Public Cloud),私有云(Private Cloud),混合云(Hybrid Cloud)。不過,VPC不屬于這三種云中任一種。
這是一種運行在公有云上,將一部分公有云資源為某個用戶隔離出來,給這個用戶私有使用的資源的集合。
VPC是這么一種云,它由公有云管理,運行在公共資源上,但是保證每個用戶之間的資源是隔離,用戶在使用的時候不受其他用戶的影響,感覺像是在使用自己的私有云一樣。

從這種意義上看,VPC不是網(wǎng)絡,我們可以對比VPC和它一個字面上相近的概念:VPN(Virtual Private Network)。
VPN在公共的網(wǎng)絡資源上虛擬隔離出一個個用戶網(wǎng)絡,例如IPsec VPN可以是在互聯(lián)網(wǎng)上構建連接用戶私有網(wǎng)絡的隧道,MPLS VPN更是直接在運營商的PE設備上劃分隔離的VRF給不同的用戶。
從提供服務的角度來,說如果VPC指的只是網(wǎng)絡的話,那它跟VPN的概念是重復的。所以,從公有云所提供的服務來說,VPC應該理解成,向用戶提供的隔離資源的集合。
VPC最早是由AWS在2009年提出[1],不過VPC的一些組成元素在其提出之前就已經(jīng)存在。VPC只是將這些元素以私有云的視角重新包裝了一下。
在VPC之后,云主機只能使用VPC內(nèi)部的對應的元素。從這個角度看,VPC更像是公有云服務商以打包的形式提供服務。
用戶可以在公有云上創(chuàng)建一個或者多個VPC,每個部門一個VPC。對于需要連通的部門創(chuàng)建VPC連接。

VPC的隔離性
默認情況下VPC與VPC之間是邏輯上的隔離,注意不是物理隔離。
天翼公有云的計算獨享型、計算存儲獨享型專屬云產(chǎn)品,雖然計算/存儲是物理隔離的,但與其它租戶之間的隔離依然是通過VPC實現(xiàn),也就是說,與公有云的其他租戶之間實現(xiàn)不了真正的物理隔離。
去年遇到一個項目,客戶需要在云上部署內(nèi)網(wǎng)應用與互聯(lián)網(wǎng)應用,要求兩者之間物理隔離,省里給出的方案是:分別創(chuàng)建部署內(nèi)網(wǎng)應用和互聯(lián)網(wǎng)應用的VPC,兩者之間使用物理網(wǎng)閘設備實現(xiàn)物理隔離和數(shù)據(jù)擺渡。
但是因為VPC之間本質是邏輯隔離的,即使用了物理網(wǎng)閘,可以通過對等連接(Peering)技術路由打通,繞過了物理網(wǎng)閘實現(xiàn)互通,也就達不到物理隔離的效果。
等我介入到這個項目的時候,網(wǎng)閘已經(jīng)上架加電了,盡管我好說歹說,但最終放棄使用網(wǎng)閘的原因,還是因為客戶擔心應用過網(wǎng)閘會影響到整體的訪問性能。
VPC對等連接
默認情況下VPC與VPC之間是不通的,但有些情況下,我們需要VPC之間互相通信。
好比兩個大樓有各自獨立的局域網(wǎng),通過樓間光纜將原本獨立的局域網(wǎng)互通,同樣,我們可以采用對等連接的功能(Peering connection),來實現(xiàn)VPC之間的相互通信。
VPC之間的互通既可以是同一租戶內(nèi)的VPC,也可以是不同租戶之間的。
下面我們看來一下對等連接的原理:
下面這張圖是對等連接邏輯拓撲圖,清楚地顯示了對等連接是通過路由實例打通來實現(xiàn)VPC之間的互通。

在公有云場景下,每個CNA節(jié)點(host節(jié)點),都會有分布式vRouter集群(DVR),通過VxLAN網(wǎng)絡,形成一個巨大的分布式vRouter集群。
當我們需要實現(xiàn)兩個VPC路由打通時,我們需要更新對應router實例的流表,就能實現(xiàn)通信,如下圖所示:

VPC的基礎能力
1、子網(wǎng)(Subnet)
一個VPC可以劃分為多個subnet,默認情況下,同一VPC內(nèi)的所有子網(wǎng)內(nèi)的主機均可以通信。
子網(wǎng)之間如果想要實現(xiàn)訪問控制,需要用到ACL技術。
2、安全組(Security Group)
我們通過安全組創(chuàng)建規(guī)則(rule)來實現(xiàn)主機實例層面的訪問控制,也就是說可以實現(xiàn)同一VPC內(nèi)不同子網(wǎng)之間的云主機互相訪問。
注意安全組不能跨VPC。
3、訪問控制列表(ACL)
如果我們希望實現(xiàn)子網(wǎng)級別的訪問控制,能夠控制進、出一個或多個子網(wǎng)的流量,就需要訪問控制列表ACL技術。
比如MySQL數(shù)據(jù)庫所在的子網(wǎng),只允許面向應用放開TCP協(xié)議3306端口,就需要創(chuàng)建ACL并配置訪問策略來實現(xiàn)。
注意,VPC之間通過對等連接打通后,可以通過ACL實現(xiàn)不同VPC的子網(wǎng)之間的訪問控制。















