據(jù) Instagram消息,該公司已基本完成AWS到Facebook基礎設施的遷移。聽到這個消息,筆者并不驚訝。首先,社交巨頭擁有自己的大規(guī)模數(shù)據(jù)中心;其次,作為風頭正勁的互聯(lián)網公司之一,社交巨頭擁有著大量的服務,其技術堆棧及API可以輕易滿足Instagram的架構需求;再次,在Facebook規(guī)模,不管是從成本,還是從性能及可用性上看,遷移都是上上之選。最后,避免平臺的約束和鎖定,Instagram將有更大的發(fā)展空間。言歸正傳,下面我們看一些博文摘譯:
在2012年加入Facebook之后,我們就發(fā)現(xiàn)了多個與Facebook基礎設施的集成點,這將允許我們更加快速的開發(fā)產品,同時還能提高社區(qū)的安全性。開始時,我們使用的是ad-hoc端點接入,但是隨后就發(fā)現(xiàn)這限制了我們的敏捷性及Facebook服務的利用率。
在2013年4月后,我們開始大規(guī)模的遷移到Facebook數(shù)據(jù)中心,其中的重點是服務可用性的平穩(wěn)過渡,以及最小化基礎設施級改變來避免其中的操作復雜性。開始時非常簡單,在EC2和Facebook的一個數(shù)據(jù)中心之間建立連接,然后一塊一塊的遷移。
但是隨后就發(fā)現(xiàn)事情并非那么容易,主要的問題就是Facebook私有IP空間和EC2的沖突。我們的方法是,首先使用Amazon的Virtual Private Cloud(VPC),隨后使用Amazon Direct Connect將之與Facebook連接。
鑒于每天都會開啟新的EC2實例,這個任務看起來非常艱巨。為了最小化服務停機時間以及操作復雜性,EC2和VPC實例是否在同一個網絡至關重要。AWS并沒有提供安全組或者私有EC2與VPC網絡的共享方式,公共地址空間成為兩個私有網絡的唯一通信渠道。
因此,我們發(fā)明了Neti,一個動態(tài)的iptables操作守護進程,使用Python編寫,通過ZooKeeper支撐。Neti不僅提供了缺少的安全組功能,還為每個實例都提供了單獨的地址,不管是EC2還是VPC。Neti管理了數(shù)千個NAT以及實例上的過濾規(guī)則,從而保證了獨立的、flat “overlay”安全通信。NAT規(guī)則會為實例選擇一個最有效的通信途徑,跨越VPC和EC2邊界時會選擇公共網絡,內部通信則會選擇私有網絡。這些對我們的應用和后端系統(tǒng)都是透明的,因為Neti會提供一個恰當?shù)膇ptables規(guī)則。
從EC2到VPC花費了大約3周時間,隨后所有實例就運行在一個兼容的地址空間,下一個階段無疑就是遷移到Facebook數(shù)據(jù)中心。
多來以來,Instagram圍繞EC2建立了一整套生產系統(tǒng)管理工具,其中包括配置管理腳本,用于服務開通的Chef,以及服務于運營任務的Fabric,從應用到數(shù)據(jù)庫,這些針對EC2環(huán)境的工具都將不適用于數(shù)據(jù)中心環(huán)境。
為了給這些工具提供可移植性,我們使用了LXC。配置工具用于建立基礎系統(tǒng),Chef則運行在container中,用以安裝和配置Instagram特定軟件。為了支撐橫跨EC2及Facebook數(shù)據(jù)中心的基礎設施,當下的Chef加入了新的邏輯用以支撐Facebook內部使用的CentOS,之前在EC2上使用的是Ubuntu。同時,用于基礎任務的EC2命令行工具也被一個全新的工具代替,它被設計成了一個抽象層,提供了類似EC2工作流中的環(huán)境,為技術和人們使用方式做過渡。在這些都完成后,VPC到數(shù)據(jù)中心的遷移只花費了兩周。
寫在最后
對于Instagram來說,遷移可以帶來顯而易見的好處,同時,我們也相信會有更多這個類型的應用被收購后會做出類似的舉措,比如未來我們可能會看到WhatsApp遷離SoftLayer。然而對于云服務提供商來說,這絕對不是件想看到的事情,Instagram之類的到還好說,如果是Netflix這樣的合作伙伴,撇開直接收入,生態(tài)圈受到的影響顯然更加深遠。(文/仲浩 審校/魏偉)
免費訂閱“CSDN云計算”微信公眾號,實時掌握第一手云中消息!
CSDN作為國內最專業(yè)的云計算服務平臺,提供云計算、大數(shù)據(jù)、虛擬化、數(shù)據(jù)中心、OpenStack、CloudStack、Hadoop、Spark、機器學習、智能算法等相關云計算觀點,云計算技術,云計算平臺,云計算實踐,云計算產業(yè)資訊等服務。