《凡客誠品陳貽泰:一套高實用性基礎架構,專治電商運維各種痛點》要點:
本文介紹了凡客誠品陳貽泰:一套高實用性基礎架構,專治電商運維各種痛點,希望對您有用。如果有疑問,可以聯系我們。
陳貽泰
凡客誠品 前運維部高級經理
負責 IDC 機房和網站業務的技術運營,及內部企業IT的系統網絡運維. 從事IT基礎設施方面的工作十多年.曾在武漢微軟技術中心專門為多種行業、大中小企業做IT規劃和建設;后來加入了凡客誠品,全程深度參與了公司的系統及網絡基礎設施的建設.現在領醫創造擔任運維總監一職.
本文介紹凡客誠品花費過億的 IT 基礎架構情況,希望對讀者能夠有所啟發,我目前服務的公司在 IT 基礎架構建設方面也剛剛起步.
我們先來看看這個,想必作為運維,大家都很熟悉這兩張圖.這張圖上是最為基礎的 TCP/IP 模型和 OSI 模型.
下圖構成了網絡運維的最小知識原子,我們經常通過兩個知識原子來指導我們解決遇到復雜技術問題.
以 OSI 來講,它將龐大復雜的網絡分為了七個層面,與其對應的 TCP/IP 對其又進行了整合劃分為四個層面分別是應用層,傳輸層,網絡層和網絡接口(數據鏈路層,物理層).應用層最高,物理層為最底層,每個層為上層提供服務.從分層的設計角度來看,這是一個很好的自頂向下、分層和模塊化的設計思想.
如果我們以之前的 TCP/IP 模型為基礎,對其進行改造,把它整合成公司的信息系統架構.在應用層上再加一個層面,就是公司的業務層.在將下面的幾個層面抽象成與公司業務相關的層次,這樣就型成了以業務層、應用系統層、基礎系統層、網絡層,以及機房層核心的五個層面.
然后我們在給他加上資源管理和監控、審計與安全這兩個橫貫全層次的運維流,這就構成了一個實用的 IT 模型.凡客當時的 IT 基礎設施架構就是這樣的情況,下面我們來介紹下這個模型.
這個模型存在的意義是幫忙我們理快速解整個企業的IT系統的,對于不同的IT人員有不同的切入角度.作為我們運維人員,我們就需要從運維的角度去看待各個層面對我們自身工作的影響.
簡單的說,企業 IT 基礎架構,按照這個模型,就涵蓋了基礎系統層、網絡層、機房層,所以在實際工作中,更多的要考慮業務層、應用系統層對這下三層的影響.
下三層,也就是 IT 基礎架構層面要怎么設計和建設才能滿足上三層包括應用系統的正常運行,進而滿足公司業務發展.
接下來我們首先來了解下凡客當時的歷史背景和業務情況,在業務層主要分這幾大塊:
在2013年巔峰時期,全國有近三十個倉庫和近 10 個辦公樓,6個 IDC 數據中心,員工有1萬2千多人.
每個倉庫和辦公樓、IDC 數據中心我們視作一個站點,加起來就是40多個站點,每個站點辦公人員上百到千不等,所以是一個非常大的企業網絡.
每個業務模塊的應用系統是不一樣的,對基礎系統網絡的要求也是不一樣.比如倉庫對無線的要求就非常高,因為揀貨都是通過移動手持設備去掃描找貨的.倉庫那么大,對設備漫游的要求和辦公網絡是很不一樣的.
業務層和應用系統層的區別是有的,但是作為底層的基礎架構,其實更多的是共性,作為基礎層,要求我們對公司上層所有應用都能良好的支撐,我們這次重點講共同的東西,大同小異的架構層面.
我們先看看基礎系統層面的具體設計和實踐,基礎系統層我認為包含這些:
由于我們倉儲業務和呼叫中心業務的特點,對高可用性要求相當高,因為我有次親身有體會.
剛入職沒多久,我們正在對上海的一個倉庫的域控制器進行升級,導致了運行在上面的 DNS 服務器出現了中斷,時長大約半個小時吧.大家正忙著恢復,領導站在旁邊默默的看著沒說話.
在事后告訴我說,隔壁的庫房流水線上有上千個人都不能干活了,大家等我們站著等我們恢復系統等了半個小時.
所以,由于業務的關系整個凡客 IT 基礎架構,最大的特點之一,就是對 IT 基礎設施的可用性要求非常高.
我們基本上主體都是使用 Windows 服務器來提供 DNS 和 DHCP 服務.為什么呢,主要是 Windows 活動目錄的普及,所有計算機都加入域,Windows AD 本身就有 DNS 了,當然加個 DHCP 服務也很容易,Windows 上面管理 DHCP 還是比網絡設備上管理要方便太多.
除了 Windows AD 的先發優勢和既有資源的優勢外,Windows 上的 DNS 和 DHCP 在高可用性上也符合業務的要求.
對于 DNS 來講,DNS 服務器每個站點就有2臺,這2臺是通過 AD 復制服務保持狀態和數據同步的,而且 AD 復制機制是雙向的,比 DNS 自身主從復制更有優勢,當然,Linux 的 bind 也是主從單向復制.
對于客戶端,網卡上需要設置本地的2個 DNS 服務器地址作為冗余了.
DNS 使用中還有一個中國人都會遇到的問題,就是電信和聯通的問題.因為我們倉庫系統、內部管理系統有時需要調取網站的圖片,比如某個單品頁,衣服的圖片等.
由于 CDN 和各地站點網絡出口不同的問題,為了提高訪問這個圖片的效率,需要就近訪問該圖片 CDN 的緩存,所以對于 Internet 的訪問,需要轉發到本地 ISP 提供的 DNS.
不過這個需要注意,由于各地 ISP 服務質量不一樣,你需要仔細觀察線路和實際命中情況,為此我們有時不得不使用自己部署的專門負責電信或者聯通線路解析的 DNS.不過現在好了,可以考慮用阿里或者百度的智能 DNS server.
域名使用中,有使用內部和外部 DNS 問題,我們的情況是內部和外部域名是不一樣的,這樣做會省掉因為內外部域名一樣導致的麻煩,具體麻煩就不細說了,一般推薦內外部域名不一樣比較好.
然后在日常 DNS 注冊過程中,內部的系統就用內部的域名,千萬不要內外部域名隨便用.這樣更加整潔,也更加安全,不至于將某個外部域名解析成內部 IP.
首先是子網和 IP 池的規劃,要注意的是要和網絡人員一起考慮,不要太小氣,要充分考慮到業務的發展和架構的伸縮.我們整個內網基本上采用10.0.0.0整個私有網絡.
高可用性方面也是兩臺 DHCP 服務器,分別部署在各地2臺域控上,我記得 DHCP 設計高可用性原則上一般是說 2/8 原則,我們在實際中其實是 5/5 原則,比如,一個子網,前半段的 IP 有第一臺服務器分配,后半段的由第二段分配.
為什么每臺分配一部分,而且不重疊,就是考慮到分配IP的時候避免分配同一個IP,導致IP沖突.但在實際應用測試過程中,即使兩臺服務器分配范圍完全一樣,也是可行的.
對于 DHCP 高可用性,Windows官方做法有 DHCP 集群,就是 Windows Cluster 到 Windows 2008 R2 的時候支持 DHCP 服務器了,比如之前一般只支持 SQL 集群提高可用性.
但是這種 cluter 有個致命的問題,就是兩個節點的服務器群集需要一個共享磁盤來作為仲裁盤和數據盤,雖然服務器層面沒有了單點故障,但是共享磁盤是個單點故障,而且共享磁盤這資源要求其實不低.專業的磁盤陣列很貴,模擬的也不放心.
當然,本質上 DHCP 服務實際上在節點故障后并不需要特別快速的切換,所以我們采用這種 5/5 原則這種架構更簡單的方案.
Windows 文件服務確實不錯,但是在大型公司里面,那是有兩個難點,一個是全員加域,才能獲得比較好的體驗,另外就是權限設計,必須基于組綁定特定的部門,如果是基于個人和單個文件、文件夾的話,NTFS 授權相對于后續若干文件夾就是一場噩夢.
個人認為當前百度網盤、微軟 onediver 方式是比較好的.具有很好的優勢,基于 Http 的分享、容量去重,最大的缺點在功能上賬號系統完全脫離企業掌控,當然數據存放在百度也存在風險.這個在凡客當時做了一套模仿的系統.
當然相比當前大家熟悉的公共網盤,這個系統與企業內部的賬號系統集成,分享的鏈接可以提供下載或者提供上傳.
權限設計非常適合企業,方便內部分享、甚至和合作伙伴協作.但是后臺文件系統這塊還不是很完整,如果加上分布式存儲,以及文件去重,將是非常棒的企業網盤.
辦公用文件系統打印采用的是 Windows 標準的文件服務器解決方案,細節不談了,主要有這些特色:
\\vancloa.cn\file;
用戶只需要連接本地站點的打印服務器就可以發現和連接所有打印機.為了避免故障,每個站點也是兩臺打印服務器.為了方便出差人員查找,打印服務器的命名是有規則的,都是?“sitename-prt-數字”?這樣的格式.
由于業務上我們有企業辦公、凡客網站、vjia 網站、如風達快遞,所以我們 Exchange 對應接收有 vancl.cn、vancl.com、vjia.com、rufengda.com 等域名后綴的郵件.
凡客的郵件業務可以基本分為:
從技術上看,郵件除了收,就是發,所以凡客的郵件系統主要基于這兩個軟件,一個是微軟的 Exchange Server 2010,我們 Exchange 用于辦公協作和郵件的收取.一個是開源軟件 Postfix,用于郵件投遞以及過濾垃圾郵件這塊.
Exchange 作為企業內部郵件是非常優秀的,眾多大中型企業在用它就說明了這一點,包括很多大型的互聯網公司也在使用更說明了這一點.
Exchange 和桌面 Outlook 配合的確是辦公協作的利器,對移動手機支持也非常不錯,安卓蘋果手機郵件同步基本上也都是用 Exchange 模式.
其他 Exchange 在會議室管理、通訊錄、通訊組方面也很不錯.如果必須選擇自建辦公郵件系統的話,Exchange 應該是最佳選擇了.
另外為什么業務也采用 Exchange 作為郵件收取,主要是它的高可用性和可擴展性.各位可以看看我們的 Exchange 系統架構示意圖,前端各個模塊角色擴展性很好,后端數據庫可用性和擴展性也很好.
這里有一個小技巧,數據庫這塊盡量多分,從安全的角度考量,多個雞蛋不要放在同一個籃子上,多個用戶平均分布.另外我們的郵件服務器全部是虛擬主機.
關于 Exchange 的內部部署架構,具體細節就不談了,微軟官網上有;簡單一句話就是按角色部署和拆分,每個角色至少兩個節點,這個很互聯網!
現在我們看看郵件的投遞,也就是發送這塊.
我們知道 Exchange 本身就可以作為投遞,為什么要單獨拿出來再做一個郵件投遞系統了.
原因是因為我們的業務模式決定了.而且從技術上開,郵件投遞只需要很輕便的 SMTP 服務就可以了,所以 Postfix 非常適合,可以極大的降低 Exchange 的負載.
而且各類郵件是分開的,避免交叉影響.尤其是影響郵件投遞的成功率.比如 EDM 大量的投遞,那么對應的 IP 地址池很可能信譽度會降低,就會影響正常辦公郵件和其他業務郵件的投遞.
假如投遞系統沒有分開的話.基本上我們把投遞分為辦公郵件的投遞、內部報警郵件的投遞、凡客業務郵件的投遞、vjia 業務郵件的投遞、以及 EDM 大量廣告郵件的投遞.
剛才我們了解了郵件異步通訊這塊,那么凡客的即時通訊是個什么情況?
簡單的一句話,我們打通了傳統電話和 IP 電話、打通了 PC 和手機、打通了即時通訊和郵件、打通了開源 SIPX 和微軟 Lync、打通了 PSTN 電話網絡和 VOIP 計算機網絡,形成了一個統一的企業溝通系統.
這個張圖是當時的 Lync 系統架構部署圖.從這個圖里可以了解整個統一溝通平臺的大致情況:
賬號管理是企業IT的重頭戲,凡客這塊個人認為做得很有特點.
不管你是登陸個人 PC 還是辦公或者網站服務器、網絡設備,或者是內部網站,像登陸 PC 或者登陸金蝶,這類驗證方式可以歸屬為 LDAP 方式,權限控制基本上有各個系統自行控制,或者結合 Windows AD 的安全組來進行控制.
對于登陸公司內部系統,由于自己開發的,所以基本上都是采用自己開發的一組 WebService 來驗證和統一授權,提供這些接口的系統在我們內部叫PMS權限管理系統.
賬號管理這塊凡客做得是非常有特點的,這個架構除了適應凡客這樣的互聯網企業,據我從以前同事那了解到,這個方案用由他帶到了到傳統的上市公司,也得到了很好的效果.
我們有一個非常龐大的 AD 賬號系統,這是當時 DC 服務器全國分布圖.
我們有兩個核心的內部用數據中心,只有在兩個數據中心是可寫的 DC,其余三十來個站點全部是只讀.這樣的架構,高可用性和安全性都能照顧到.
關于 AD 設計,最有特點的就是 OU 結構的扁平化設計,而不是安裝傳統的組織結構.也就是在 Employment 員工這個 OU下 ,所有的員工賬號都在里面,因為離職的賬號我們只會禁用,所以目前這里面賬號應該有好幾萬吧.
關于為什么這么設計,是當時打通人事和IT系統賬號信息方面種種原因所迫.詳細情況就不談了.在這里只告訴各位:
IT 運維自動化的核心和前提其實是標準化,這個是運維思想層面的事情,具體我們是通過微軟 System Center 中系列實現,尤其是 SCCM 系統.
我們根據業務類型,制作了不同的操作系統鏡像,有倉儲的,有一般辦公的,有開發人員的,有呼叫中心坐席的,都可以裸機網絡啟動來安裝好系統,不僅僅提高了工作效率,關鍵是整個系統都是標準的,規范的.這個也成為了我們系統安全的基石.
有些軟件安裝是需要授權的,我們通過賬號管理系統中的審批流程來實現審批,審批完成,用戶就能自己安裝了.遠程協助解決公司內部 pc 終端問題也都靠它,這樣一個北京的支持人員可以遠程去支持廣州的桌面問題.
看起來 SCCM 整個工具很強大,其實更強大的是我們的標準化.除了桌面支持,后臺沒有 SCCM 的系統、網絡都可以這么做,因為每個地方的網絡環境、軟件系統環境都是一個標準的,中心的人員可以直接快速的支持任何一個站點的系統網絡.這樣做,導致了整個部門管理效率的提升!
凡客做運維自動化采用的是微軟的 SCCM 方案,這個是老版本的 SCCM 系統架構,目前是 SCCM 2012 r2,該架構的特點是別處新意的.我們近四十個站點,數千臺PC終端,采用的架構是扁平化的.細節就不談了,只說說整個架構的優點:
1. 架構簡單,易于部署和后續管理,節約成本;
2. 系統安裝和軟件分發類似 CDN,沒有跨站點的流量.
虛擬化在外面的基礎架構中的地位舉足輕重,說句極端的話,由于歷史原因,很可惜,企業IT服務器虛擬化比例沒有達到百分之百.凡客的辦公核心,各地機房,我的原則是,務必全部虛擬化.
所以,從某個層面來看,我是把物理機看出一種平臺而已了.我們前面談到 AD、lync、SIPX、Exchange、SCCM、文件服務器等等,基本上都是虛擬機.
采用虛擬機的好處就不多說,主要是要注意風險,尤其是不能把雞蛋放到一個籃子里面.
我們知道虛擬化后,一臺物理機上跑了多個虛擬機,這樣一掛就是掛一片虛機,所以風險是增大了.
我們虛機可用性非常高,是因為通過冗余負載我們在服務層面是沒有單點故障的.
比如我們每個站點提供賬號驗證、DNS、DHCP 服務的域控,每個站點都有兩臺,而且這兩臺絕對不在同一臺宿主機上,甚至這兩臺宿主機不在同一個機柜,不是使用同一個 PDU,同一個交換機.
說起來,其實也挺無奈,咱們的傳統企業 IT 技術和互聯網還是有很大不同,互聯網基本上大部分的應用都是自己開發的,基礎架構在基礎系統當然這塊當然可以選擇開源的產品,比如 Linux、Mysql、Redis、Nginx、Hadoop 等等.而傳統企業如果要自己開發,成本太高,得不償失!
凡客內部的 ERP 系統使用的是標準化的金蝶產品.所以對于傳統企業運維管理來說要綜合考慮,以實用為目的,沒有必要重新去發明輪子.
在凡客的基礎系統中,除了郵件系統的投遞使用了 Postfix 作為投遞群集,更多的使用有 zabbix、Nagios、Cacti 等開源監控系統,還有網站用到的緩存Redis、圖片用到的分布式文件系統等等,不是因為他開源,是因為它更適合.
總之,在基礎系統這塊,AD 賬號系統的設計、SCCM 的部署結構都是非常有特色的,很值得借鑒,除此之外,辦公內部核心系統,當然包括郵件系統這類比較吃硬件的系統幾乎完全虛擬化也很超前.