在經(jīng)過一番艱苦努力的之后,我最終調(diào)試解決了一個(gè)非常棘手的混合云網(wǎng)絡(luò)問題。
虛擬私有云(VPC)提供了一個(gè)包含免費(fèi)虛擬機(jī)(VM)使用時(shí)間的培訓(xùn)項(xiàng)目,學(xué)生可以跟隨一位現(xiàn)場(chǎng)講師學(xué)習(xí),而不需要花時(shí)間去安裝產(chǎn)品。但是,大量的短暫存在亞馬遜云服務(wù)(AWS)虛擬機(jī)使我的主控機(jī)很難保持對(duì)它們的可靠控制。它們可能無法訪問我最喜歡的亞馬遜簡(jiǎn)單隊(duì)列服務(wù)(SQS),使用幾百個(gè)這種服務(wù)會(huì)控制我的Elastic Compute Cloud(EC2)費(fèi)用支出。
和許多很好的混合云一樣,VPC的私有地址空間已經(jīng)通過AWS Direct Connect鏈接到我的數(shù)據(jù)中心,從而對(duì)外展現(xiàn)為單個(gè)內(nèi)聚的網(wǎng)絡(luò)。問題是,雖然數(shù)據(jù)中心內(nèi)所有系統(tǒng)都可以看到SQS正常工作,但是在亞馬遜EC2本身的虛擬機(jī)卻無法看到。似乎并沒有魔法般的虛擬機(jī)實(shí)例訪問權(quán)限組合可以做到這一點(diǎn),盡管可以肯定它們可以自動(dòng)獲得核心AWS服務(wù)的訪問權(quán)限。
這個(gè)解決方案最終會(huì)包含路由功能。在解決這個(gè)問題,我突然發(fā)現(xiàn)了云管理中有一個(gè)新的網(wǎng)絡(luò)復(fù)雜性問題。這個(gè)問題不僅存在于傳統(tǒng)云網(wǎng)絡(luò)中,也存在于現(xiàn)在所謂的混合加混合網(wǎng)絡(luò)(Hybrid-Hybrid Networks, HHN)。
混合加混合網(wǎng)絡(luò)(Hybrid-hybrid networks)指的是什么?
當(dāng)前企業(yè)IT推崇的云應(yīng)用主要是基礎(chǔ)架構(gòu)即服務(wù)(IaaS)。實(shí)際上,IT正在將數(shù)據(jù)中心內(nèi)物理機(jī)架上的服務(wù)器遷移到云中的虛擬機(jī)上。當(dāng)然,我們需要保證Exchange服務(wù)器仍然能夠?qū)⑹跈?quán)請(qǐng)求轉(zhuǎn)發(fā)回到本地的Active Directory,這樣管理員才能使用AWS Direct Connect、Azure Virtual Network或其他技術(shù)創(chuàng)建持久鏈接。一旦完成了這一步,你就得到了一個(gè)純粹的混合云。
但是,如果你是一些真實(shí)云服務(wù)的早期采用者,如存儲(chǔ)、云數(shù)據(jù)庫(kù)、隊(duì)列、轉(zhuǎn)碼等,又會(huì)如何呢?如果是這樣,那么即使你的所有服務(wù)器仍然在機(jī)架中,你也已經(jīng)進(jìn)入云了。例如,如果你知道數(shù)據(jù)庫(kù)名稱,但是不能訪問它所在的主機(jī),那么你只是其中一個(gè)用戶。一旦你開始將一些使用云服務(wù)的服務(wù)器遷移到云中虛擬機(jī)上,你就會(huì)遇到一種前所未有的網(wǎng)絡(luò)復(fù)雜性,從而制造出一些不同的東西:混合加混合云。
結(jié)果:網(wǎng)絡(luò)增加了而非減少了
對(duì)于早期采用者,IaaS應(yīng)該不需要?jiǎng)犹嗄X筋。你的業(yè)務(wù)已經(jīng)使用了很多的云服務(wù),將大量系統(tǒng)遷移到混合云和IaaS上,可以更好地分配服務(wù)和用戶,從而提升服務(wù)交付質(zhì)量。因此你只需要關(guān)注于最后的用戶接口問題。同時(shí),服務(wù)器與后臺(tái)系統(tǒng)之間的繁重網(wǎng)絡(luò)流量也會(huì)得到很大的改進(jìn)。可是,這個(gè)結(jié)果并不一定會(huì)如期出現(xiàn)。更壞的是,我們喜歡使用的調(diào)試工具可能并不支持IaaS基礎(chǔ)架構(gòu)。(我在期盼著NetFlow的到來。)
云基礎(chǔ)架構(gòu)的不透明性意味著你不會(huì)連接到虛擬交換機(jī),也不會(huì)檢查訪問控制列表(ACL),而且你不會(huì)查看NetFlow或檢查防火墻配置中的原始ACL。你看不懂配置面板的內(nèi)容,里面有繼承的JSON策略/角色塊和其他一些復(fù)雜信息。解決方法是回歸一下,回想以前初涉IT時(shí)候的場(chǎng)景。以前,高級(jí)管理員不會(huì)隨便給你root權(quán)限,因此你必須想一些辦法繞過這個(gè)問題。
首先,先記住因?yàn)樗衼碜酝粋€(gè)供應(yīng)商的服務(wù)并一定位于同一個(gè)位置,否則網(wǎng)絡(luò)復(fù)雜性也不會(huì)成為一個(gè)問題。當(dāng)這些使用云服務(wù)的應(yīng)用部署在機(jī)架上時(shí),它們會(huì)使用服務(wù)的地理路由前端。無論數(shù)據(jù)中心在什么位置,這個(gè)服務(wù)都會(huì)生成最高效的路由。如果現(xiàn)在決定將一個(gè)服務(wù)器遷移到位于悉尼的一個(gè)虛擬機(jī)上,那么它可能會(huì)對(duì)運(yùn)行在弗吉尼亞的服務(wù)性能產(chǎn)生影響。確實(shí),這里仍有一個(gè)意想不到的云網(wǎng)絡(luò)問題:你仍然必須用Visio畫出服務(wù)的拓?fù)鋱D。
其次,要使用手頭已有的工具。你可能無法訪問IaaS平臺(tái)的VSwitch,但是IaaS服務(wù)器仍然有操作系統(tǒng)和NIC,而且你可以安裝深度數(shù)據(jù)包檢測(cè)傳感器,從云服務(wù)器的角度觀察流量。
最后,你仍然在數(shù)據(jù)中心內(nèi)保留VPC分界點(diǎn)的總體可見性,而且你想象不到的是,你會(huì)發(fā)現(xiàn)問題就出現(xiàn)在這個(gè)位置。
固化路由的一個(gè)特殊方法 在我的HHN中,我添加一些特殊的虛擬機(jī)實(shí)例角色限制,保護(hù)網(wǎng)絡(luò)安全性不受學(xué)生虛擬機(jī)的影響。也就是說,我將所有流量轉(zhuǎn)發(fā)回?cái)?shù)據(jù)中心,然后我在這里通過信任的Palo Alto防火墻管理外出的互聯(lián)網(wǎng)請(qǐng)求。這通常不會(huì)成為一個(gè)問題,但是我還將AWS服務(wù)調(diào)用限制在數(shù)據(jù)中心一個(gè)特定子網(wǎng)中。防火墻會(huì)接收到來自這些服務(wù)的大量請(qǐng)求,但是它們卻來自于AWS VPC空間中一些不可信的新私有子網(wǎng)。防火墻會(huì)執(zhí)行它的本職功能——阻擋流量。在EC2儀表析出現(xiàn)紅色警報(bào)之后,解決方法實(shí)際上是很簡(jiǎn)單的。
在將虛擬機(jī)遷移到云的過程中,只需要記住關(guān)鍵點(diǎn)并不是考慮基礎(chǔ)架構(gòu)。這里仍然有許多規(guī)劃和故障修復(fù)要做。固定的網(wǎng)絡(luò)和舊式檢測(cè)方法比以前更加重要,特別是在我們進(jìn)入混合加混合加混合網(wǎng)絡(luò)之后。這個(gè)問題會(huì)在我們實(shí)現(xiàn)IPv6之前到來。