凡客誠品陳貽泰:一套高實用性基礎架構,專治電商運維各種痛點
作者簡介:
陳貽泰
凡客誠品 前運維部高階經理
負責 IDC 機房和網站業務的技術運營,及內部企業IT的系統網路運維。 從事IT基礎設施方面的工作十多年。曾在武漢微軟技術中心專門為多種行業、大中小企業做IT規劃和建設;後來加入了凡客誠品,全程深度參與了公司的系統及網路基礎設施的建設。現在領醫創造擔任運維總監一職。
本文介紹凡客誠品花費過億的 IT 基礎架構情況,希望對讀者能夠有所啟發,我目前服務的公司在 IT 基礎架構建設方面也剛剛起步。
1、資訊系統運維的基石—網路運維
我們先來看看這個,想必作為運維,大家都很熟悉這兩張圖。這張圖上是最為基礎的 TCP/IP 模型和 OSI 模型。
下圖構成了網路運維的最小知識原子,我們經常通過兩個知識原子來指導我們解決遇到複雜技術問題。
以 OSI 來講,它將龐大複雜的網路分為了七個層面,與其對應的 TCP/IP 對其又進行了整合劃分為四個層面分別是應用層,傳輸層,網路層和網路介面(資料鏈路層,物理層)。應用層最高,物理層為最底層,每個層為上層提供服務。從分層的設計角度來看,這是一個很好的自頂向下、分層和模組化的設計思想。
如果我們以之前的 TCP/IP 模型為基礎,對其進行改造,把它整合成公司的資訊系統架構。在應用層上再加一個層面,就是公司的業務層。在將下面的幾個層面抽象成與公司業務相關的層次,這樣就型成了以業務層、應用系統層、基礎系統層、網路層,以及機房層核心的五個層面。
然後我們在給他加上資源管理和監控、審計與安全這兩個橫貫全層次的運維流,這就構成了一個實用的 IT 模型。凡客當時的 IT 基礎設施架構就是這樣的情況,下面我們來介紹下這個模型。
- 業務層,公司的業務情況,比如公司內部行政、財務業務、客服、物流、倉庫、對外的線上網站等等。
- 應用系統層,公司業務的技術化體現,指應用系統,比如公司內部 OA、ERP,倉庫系統、物流系統、客服系統、網站訂單系統。
- 基礎系統層,從這個層面開始往下,應該是我們IT運維人員最為熟悉的了。比如 DNS、DHCP、檔案、郵件、賬號系統我就把他們歸屬於基礎系統層。
- 網路層,就是路由器、交換機、防火牆、專線、上網光纖組成的網際網路絡。
- 機房層,狹義上可以理解就是咱伺服器、交換機存放的機房,廣義上應該還包括IT所有物理層面相關的東西。
這個模型存在的意義是幫忙我們理快速解整個企業的IT系統的,對於不同的IT人員有不同的切入角度。作為我們運維人員,我們就需要從運維的角度去看待各個層面對我們自身工作的影響。
簡單的說,企業 IT 基礎架構,按照這個模型,就涵蓋了基礎系統層、網路層、機房層,所以在實際工作中,更多的要考慮業務層、應用系統層對這下三層的影響。
下三層,也就是 IT 基礎架構層面要怎麼設計和建設才能滿足上三層包括應用系統的正常執行,進而滿足公司業務發展。
接下來我們首先來了解下凡客當時的歷史背景和業務情況,在業務層主要分這幾大塊:
- 企業辦公
- 倉儲中心
- 呼叫中心
- 快遞物流
- 兩個主網站凡客和 vjia
在2013年巔峰時期,全國有近三十個倉庫和近 10 個辦公樓,6個 IDC 資料中心,員工有1萬2千多人。
每個倉庫和辦公樓、IDC 資料中心我們視作一個站點,加起來就是40多個站點,每個站點辦公人員上百到千不等,所以是一個非常大的企業網路。
每個業務模組的應用系統是不一樣的,對基礎系統網路的要求也是不一樣。比如倉庫對無線的要求就非常高,因為揀貨都是通過移動手持裝置去掃描找貨的。倉庫那麼大,對裝置漫遊的要求和辦公網路是很不一樣的。
業務層和應用系統層的區別是有的,但是作為底層的基礎架構,其實更多的是共性,作為基礎層,要求我們對公司上層所有應用都能良好的支撐,我們這次重點講共同的東西,大同小異的架構層面。
3、基礎層設計和實踐
我們先看看基礎系統層面的具體設計和實踐,基礎系統層我認為包含這些:
- 網路基礎服務:DNS、DHCP
- 基礎辦公:檔案、列印
- 企業溝通:郵件、即時通訊、電話
- 資訊保安:賬戶管理、許可權
- IT運維:桌面管理、虛擬機器管理等
3.1 網路基礎服務的設計—DNS
由於我們倉儲業務和呼叫中心業務的特點,對高可用性要求相當高,因為我有次親身有體會。
剛入職沒多久,我們正在對上海的一個倉庫的域控制器進行升級,導致了執行在上面的 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。
3.2 網路基礎服務的設計 — DHCP
首先是子網和 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 原則這種架構更簡單的方案。
3.3 Windows檔案服務
Windows 檔案服務確實不錯,但是在大型公司裡面,那是有兩個難點,一個是全員加域,才能獲得比較好的體驗,另外就是許可權設計,必須基於組繫結特定的部門,如果是基於個人和單個檔案、資料夾的話,NTFS 授權相對於後續若干資料夾就是一場噩夢。
個人認為當前百度網盤、微軟 onediver 方式是比較好的。具有很好的優勢,基於 Http 的分享、容量去重,最大的缺點在功能上賬號系統完全脫離企業掌控,當然資料存放在百度也存在風險。這個在凡客當時做了一套模仿的系統。
當然相比當前大家熟悉的公共網盤,這個系統與企業內部的賬號系統整合,分享的連結可以提供下載或者提供上傳。
許可權設計非常適合企業,方便內部分享、甚至和合作夥伴協作。但是後臺檔案系統這塊還不是很完整,如果加上分散式儲存,以及檔案去重,將是非常棒的企業網盤。
3.4 檔案列印
辦公用檔案系統列印採用的是 Windows 標準的檔案伺服器解決方案,細節不談了,主要有這些特色:
- 全公司內訪問路徑統一:
\\vancloa.cn\file;
- 按照部門所需進行磁碟空間配額;
- 支援資料熱備和可回滾;基於角色的許可權設計;
- 集中的列印系統。
使用者只需要連線本地站點的列印伺服器就可以發現和連線所有印表機。為了避免故障,每個站點也是兩臺列印伺服器。為了方便出差人員查詢,列印伺服器的命名是有規則的,都是 “sitename-prt-數字” 這樣的格式。
3.5 郵件系統的建設設計
由於業務上我們有企業辦公、凡客網站、vjia 網站、如風達快遞,所以我們 Exchange 對應接收有 vancl.cn、vancl.com、vjia.com、rufengda.com 等域名字尾的郵件。
凡客的郵件業務可以基本分為:
- 一般辦公人員收發,指的是公司內部郵件交流;
- 大量的業務郵件收取,比如 [email protected] 用來接受投訴的郵箱的,通過程式收取給後臺客服系統進行處理,特點是量大。
- 更大量的報警內部郵件投遞給內部相關人員;
- 還有超大量的廣告郵件、訂單狀態郵件等傳送給外部客戶;
從技術上看,郵件除了收,就是發,所以凡客的郵件系統主要基於這兩個軟體,一個是微軟的 Exchange Server 2010,我們 Exchange 用於辦公協作和郵件的收取。一個是開源軟體 Postfix,用於郵件投遞以及過濾垃圾郵件這塊。
Exchange 作為企業內部郵件是非常優秀的,眾多大中型企業在用它就說明了這一點,包括很多大型的網際網路公司也在使用更說明了這一點。
Exchange 和桌面 Outlook 配合的確是辦公協作的利器,對移動手機支援也非常不錯,安卓蘋果手機郵件同步基本上也都是用 Exchange 模式。
其他 Exchange 在會議室管理、通訊錄、通訊組方面也很不錯。如果必須選擇自建辦公郵件系統的話,Exchange 應該是最佳選擇了。
另外為什麼業務也採用 Exchange 作為郵件收取,主要是它的高可用性和可擴充套件性。各位可以看看我們的 Exchange 系統架構示意圖,前端各個模組角色擴充套件性很好,後端資料庫可用性和擴充套件性也很好。
這裡有一個小技巧,資料庫這塊儘量多分,從安全的角度考量,多個雞蛋不要放在同一個籃子上,多個使用者平均分佈。另外我們的郵件伺服器全部是虛擬主機。
關於 Exchange 的內部部署架構,具體細節就不談了,微軟官網上有;簡單一句話就是按角色部署和拆分,每個角色至少兩個節點,這個很網際網路!
現在我們看看郵件的投遞,也就是傳送這塊。
我們知道 Exchange 本身就可以作為投遞,為什麼要單獨拿出來再做一個郵件投遞系統了。
原因是因為我們的業務模式決定了。而且從技術上開,郵件投遞只需要很輕便的 SMTP 服務就可以了,所以 Postfix 非常適合,可以極大的降低 Exchange 的負載。
而且各類郵件是分開的,避免交叉影響。尤其是影響郵件投遞的成功率。比如 EDM 大量的投遞,那麼對應的 IP 地址池很可能信譽度會降低,就會影響正常辦公郵件和其他業務郵件的投遞。
假如投遞系統沒有分開的話。基本上我們把投遞分為辦公郵件的投遞、內部報警郵件的投遞、凡客業務郵件的投遞、vjia 業務郵件的投遞、以及 EDM 大量廣告郵件的投遞。
3.6 即時通訊系統建設
剛才我們瞭解了郵件非同步通訊這塊,那麼凡客的即時通訊是個什麼情況?
簡單的一句話,我們打通了傳統電話和 IP 電話、打通了 PC 和手機、打通了即時通訊和郵件、打通了開源 SIPX 和微軟 Lync、打通了 PSTN 電話網路和 VOIP 計算機網路,形成了一個統一的企業溝通系統。
這個張圖是當時的 Lync 系統架構部署圖。從這個圖裡可以瞭解整個統一溝通平臺的大致情況:
- Lync 自身的高可用設計,杜絕單點故障;
- 這是一個分散式的電話系統,全國各地都有自身的 SIPX 來管理電話機,以及從通過當地語音閘道器從當地 ISP 出局,Lync 負責 PC 終端。
- 手機、電話、PC 是互聯互通的。企業統一溝通。從溝通來講,手機、電腦、電話合一,從技術來講,我們使用 IP 網路,傳統電話網路和內部的計算機網路是合二為一的。
3.7 賬戶與許可權建設
賬號管理是企業IT的重頭戲,凡客這塊個人認為做得很有特點。
- 凡客以 Windows AD 作為賬號管理系統,因為我們的辦公、以及線上伺服器,無論是 Windows 還是 Linux 都是域管理模式。
- 凡客賬號管理既有自動化,也有使用者自助化的特點。
- 凡客內部的許可權都是基於 AD 賬號的。
不管你是登陸個人 PC 還是辦公或者網站伺服器、網路裝置,或者是內部網站,像登陸 PC 或者登陸金蝶,這類驗證方式可以歸屬為 LDAP 方式,許可權控制基本上有各個系統自行控制,或者結合 Windows AD 的安全組來進行控制。
對於登陸公司內部系統,由於自己開發的,所以基本上都是採用自己開發的一組 WebService 來驗證和統一授權,提供這些介面的系統在我們內部叫PMS許可權管理系統。
賬號管理這塊凡客做得是非常有特點的,這個架構除了適應凡客這樣的網際網路企業,據我從以前同事那瞭解到,這個方案用由他帶到了到傳統的上市公司,也得到了很好的效果。
我們有一個非常龐大的 AD 賬號系統,這是當時 DC 伺服器全國分佈圖。
我們有兩個核心的內部用資料中心,只有在兩個資料中心是可寫的 DC,其餘三十來個站點全部是隻讀。這樣的架構,高可用性和安全性都能照顧到。
3.8 AD域設計
關於 AD 設計,最有特點的就是 OU 結構的扁平化設計,而不是安裝傳統的組織結構。也就是在 Employment 員工這個 OU下 ,所有的員工賬號都在裡面,因為離職的賬號我們只會禁用,所以目前這裡面賬號應該有好幾萬吧。
關於為什麼這麼設計,是當時打通人事和IT系統賬號資訊方面種種原因所迫。詳細情況就不談了。在這裡只告訴各位:
- 這麼做可以極大地降低 AD 賬號自動化管理的難度,你如果覺得會影響組策略什麼的,我可以告訴你我們考慮過了,這都不是問題,凡客 IT 後續和賬號相關的管理,很多都得益於這個最最基礎的簡單的 AD 資料結構。
- 還一個就是效能問題,從我的經驗看,上萬活動賬號都不是問題,個人認為10萬以上都不是問題。
3.9 IT運維自動化建設
IT 運維自動化的核心和前提其實是標準化,這個是運維思想層面的事情,具體我們是通過微軟 System Center 中系列實現,尤其是 SCCM 系統。
我們根據業務型別,製作了不同的作業系統映象,有倉儲的,有一般辦公的,有開發人員的,有呼叫中心坐席的,都可以裸機網路啟動來安裝好系統,不僅僅提高了工作效率,關鍵是整個系統都是標準的,規範的。這個也成為了我們系統安全的基石。
有些軟體安裝是需要授權的,我們通過賬號管理系統中的審批流程來實現審批,審批完成,使用者就能自己安裝了。遠端協助解決公司內部 pc 終端問題也都靠它,這樣一個北京的支援人員可以遠端去支援廣州的桌面問題。
看起來 SCCM 整個工具很強大,其實更強大的是我們的標準化。除了桌面支援,後臺沒有 SCCM 的系統、網路都可以這麼做,因為每個地方的網路環境、軟體系統環境都是一個標準的,中心的人員可以直接快速的支援任何一個站點的系統網路。這樣做,導致了整個部門管理效率的提升!
凡客做運維自動化採用的是微軟的 SCCM 方案,這個是老版本的 SCCM 系統架構,目前是 SCCM 2012 r2,該架構的特點是別處新意的。我們近四十個站點,數千臺PC終端,採用的架構是扁平化的。細節就不談了,只說說整個架構的優點:
1. 架構簡單,易於部署和後續管理,節約成本;
2. 系統安裝和軟體分發類似 CDN,沒有跨站點的流量。
3.10 虛擬化建設
虛擬化在外面的基礎架構中的地位舉足輕重,說句極端的話,由於歷史原因,很可惜,企業IT伺服器虛擬化比例沒有達到百分之百。凡客的辦公核心,各地機房,我的原則是,務必全部虛擬化。
所以,從某個層面來看,我是把物理機看出一種平臺而已了。我們前面談到 AD、lync、SIPX、Exchange、SCCM、檔案伺服器等等,基本上都是虛擬機器。
採用虛擬機器的好處就不多說,主要是要注意風險,尤其是不能把雞蛋放到一個籃子裡面。
我們知道虛擬化後,一臺物理機上跑了多個虛擬機器,這樣一掛就是掛一片虛機,所以風險是增大了。
我們虛機可用性非常高,是因為通過冗餘負載我們在服務層面是沒有單點故障的。
比如我們每個站點提供賬號驗證、DNS、DHCP 服務的域控,每個站點都有兩臺,而且這兩臺絕對不在同一臺宿主機上,甚至這兩臺宿主機不在同一個機櫃,不是使用同一個 PDU,同一個交換機。
4、總結
說起來,其實也挺無奈,咱們的傳統企業 IT 技術和網際網路還是有很大不同,網際網路基本上大部分的應用都是自己開發的,基礎架構在基礎系統當然這塊當然可以選擇開源的產品,比如 Linux、Mysql、Redis、Nginx、Hadoop 等等。而傳統企業如果要自己開發,成本太高,得不償失!
凡客內部的 ERP 系統使用的是標準化的金蝶產品。所以對於傳統企業運維管理來說要綜合考慮,以實用為目的,沒有必要重新去發明輪子。
在凡客的基礎系統中,除了郵件系統的投遞使用了 Postfix 作為投遞群集,更多的使用有 zabbix、Nagios、Cacti 等開源監控系統,還有網站用到的快取Redis、圖片用到的分散式檔案系統等等,不是因為他開源,是因為它更適合。
總之,在基礎系統這塊,AD 賬號系統的設計、SCCM 的部署結構都是非常有特色的,很值得借鑑,除此之外,辦公內部核心系統,當然包括郵件系統這類比較吃硬體的系統幾乎完全虛擬化也很超前。