1. 程式人生 > >做好災備平臺,打造自動化運維管理的最後堡壘

做好災備平臺,打造自動化運維管理的最後堡壘

作者介紹
戰學超,青航資料架構師。曾任職於NEC軟體、海爾B2B平臺鉅商匯,負責企業資料平臺構建、B2B電商平臺數據管理與搭建。擁有豐富DBA、系統運維架構經驗,擅長資料庫、資料平臺搭建、私有云部署、自動化運維等。

運維路漫漫,風險千千萬,任何系統故障或是硬體故障都有可能導致系統不可用、資料丟失、資料惡意篡改等風險。風險一旦發生,會對企業造成巨大乃至無法挽回的影響。所以設計一套良好的企業IT災備方案,是保障企業IT系統可用性和資料安全必不可少的重要途徑。

良好的災備方案和有效的實施會將企業因IT故障導致的損失降至最低。那麼該如何設計企業災備方案呢?這還是要綜合考慮企業的IT規模,成本和人力三個基本要素,結合企業自身情況,進行有重點的方案設計和實施。

一、災備平臺總體架構

相對比較合理完整的災備平臺大概架構如下:

災備平臺在條件允許的情況下,可以採取兩地三中心+雲端的方式。

公司所在地同城自建或是租賃兩個機房,這兩個機房之間的資料或是檔案以實時同步的方式實現兩個機房的實時熱備。在另一個城市租賃或是自建機房,一般兩城市間距離最少300公里。異地機房跟同城的兩個機房採用延遲同步或是手動同步的方式儲存IT系統、檔案和資料等。一般異地機房是用作同城機房的系統冷備和備份集儲存,儘量不要做與同城機房資料實時同步:避免同城機房資料、檔案刪除或是惡意篡改,導致異地機房實時同步資料也不可用。比較經濟的方案是可以在異地機房租賃伺服器,儲存同城機房的備份集和核心繫統的冷備。另外根據公司資料的保密程度有選擇的採用雲端伺服器進行備份集儲存或是系統冷熱備。

災備平臺建設總的指導思想是:高可用+備份。高可用可以是熱備(即只有一臺伺服器提供服務,另外伺服器靜默,出現故障後自動切換到靜默伺服器)也可以是叢集方式(叢集中的伺服器全部對外提供服務)。總之避免單點故障,出現問題後自動切換至正常的裝置或是系統上。

二、高可用—機房、網路和硬體

建立災備平臺首先是機房、網路和硬體的高可用。總體架構中的多機房+雲端可以實現機房的高可用。網路和硬體的高可用具體如下:

1、雙電源,多鏈路

機房除了必備的UPS備用電源之外,還必須實現接入硬體裝置如:交換機、物理機等裝置的雙電源。這樣可以避免掉電引起的故障。另外接入的雙電源需要插在不同的插排,避免插排故障。

多鏈路是指機房接入多種供應商的網路,避免光纜挖斷或是供應商網路故障引起的大面積網路故障。另外不同鏈路的網路接入進來也可以提高系統對外在不同網路環境下的訪問速度。

2、防火牆

防火牆一般採用不同廠商的至少2套組成防火牆的高可用,避免防火牆的單點故障,導致外網不能成功接入內網。

3、儲存、伺服器

一般大的儲存廠商都有成熟的資料同步和災備管理的方案,所以儲存一定要選擇大的廠商,如EMC、惠普等。另外儲存一般情況下儘量避免選擇多廠商。因為不同廠商之間的儲存產品不太好實現儲存級別的資料同步和映象災備等。

關於伺服器這裡推薦企業實現虛擬化,通過虛擬化軟體,實現伺服器的高可用。雖然不同的伺服器和作業系統廠商提供了各種各樣的叢集方案如RHCS、windows的WSFC等,但是實施起來比較複雜且增加IT成本。採用虛擬化既可以節省資源,也可以實現只採用虛擬化的叢集解決方案就可以避免伺服器的單點故障。例如採用vSphere的HA,可以實現一臺物理機宕機,該物理機上的虛擬機器實現自動切換到另外正常的物理機上。

4、備件庫

備件庫在災備平臺建設中往往是最容易忽略的一個重要因素。隨著使用時間的增長,機房中的硬體會有這樣或那樣的故障,如果沒有替換件及時更換硬體故障的話,從供應商的備件庫提貨到現場,會導致大大增加IT故障時間。

備件庫涵蓋機房中的所有部件的方方面面,包括電源、伺服器記憶體、CPU、HUB、路由、交換機等等,也包括網線、電話線和插排等部件。機房管理,災備管理中一定要清點清楚備件庫的物資,出現緊缺,一定要及時補充完畢。避免硬體故障增加額外的IT故障時間。

機房、網路和硬體的高可用和備件是災備方案的基石,一定要根據企業自身的情況和IT投入成本進行規劃和設計,避免大範圍和長時間的硬體故障。

三、高可用—應用、DB、檔案

機房、網路和硬體屬於硬層面,接下來分享一下軟層面的一些高可用的方式,主要包括應用、資料庫和檔案伺服器。

應用、資料庫和檔案總體來說採用叢集或是主備方式部署,避免單點故障。另外負載均衡和反向代理的使用也可以減輕單節點的訪問壓力和提高內網伺服器的安全。

1、應用高可用

很多企業可能直接把應用伺服器如Tomcat、Weblogic等直接對映到外網IP,這樣如果需要部署多臺的話,需要做多個公網IP的對映,並且難以實現訪問的負載均衡,由於出現故障需要手動切換,故不能算是實現了高可用。

採用反向代理伺服器的方式如Nginx、Haproxy既可以實現反向代理,也可以實現負載均衡,並且可以節省公司的公網IP資源。每一組應用至少部署兩臺不同的虛擬機器上,避免應用的單點故障。資源比較緊張的情況下,可以實現交叉部署,例如應用A1和應用A2部署在虛擬機器VM1和VM2上,應用B2和應用B1也部署在與A1,A2相同的虛擬機器上,統一虛擬機器多應用,每個應用又在其它虛擬機器有部署,避免單點故障還節省資源。但是要注意,一般業務量比較均衡的不同應用可以交叉部署,業務量比較大且核心系統還是要分開部署的。

2、資料庫高可用

不管是Oracle、還是MySQL或是SQL Server都有較多且已在不同公司的生產正常執行的高可用和叢集方案,這裡簡單介紹一下Oracle、MySQL和Redis。

Oracle高可用

Oracle比較常見的高可用方案主要是RAC+DG。其中RAC可以實現負載均衡和單點故障。一般部署方式RAC的兩個節點掛載同一儲存,儲存方面存在單點故障的可能。由於RAC主要是做負載均衡,不太好實現讀寫分離。可以採用搭建RAC的DataGuard實現RAC的資料實時同步到standby資料庫中。另外standby可以對外提供只讀操作,實現讀寫分離,減少主庫RAC的壓力。

另外OGG即Oracle GoldenGate是Oracle做資料同步的另一主要解決方案。OGG也可以實現異構跨平臺的資料同步。

MySQL高可用

MySQL的高可用方案也比較多,比較常見的有主從複製、MHA、MMM等。另外不同的MySQL廠商也提供了不同的基於MySQL的叢集Cluster方案且都有生產實施案例,如GaleraCluster、Percona的PXC和MySQL官方的Cluster等,都可以實現MySQL的高可用叢集和讀寫分離。另外MySQL也有眾多的中介軟體如MyCat、OneProxy等可以很容易地實現讀寫分離和分庫分表、分散式等方案。

Redis高可用

一般IT系統架構使用Redis主要兩大用途:共享Session儲存和快取資料。Redis的高可用架構一般主要兩種:哨兵模式的主從和Cluster叢集

上圖為Redis的哨兵模式,通過哨兵監控,實現故障後自動推舉master。Redis  Cluster是Redis3.0以後推出的,截止目前生產應用的也已經比較多。

3、檔案高可用

在系統架構中,一般檔案伺服器作為單獨的服務進行部署,主要存放檔案、圖片、App應用上傳的附件等。有的時候也把靜態資源放到檔案伺服器中。

有的公司會選擇自建檔案伺服器,也有的會選擇雲服務,如阿里雲的OSS等。我所在的公司主要考慮到資料和檔案的保密性,採取了自建檔案伺服器的方式,主要採用了FastDFS這一開源框架進行搭建。

採用三臺伺服器交叉部署三組Tracker+Storage,為公司所有IT系統提供靜態資源(主要包括檔案、圖片)讀寫服務。

上面主要介紹的軟硬方面的高可用和硬體備件庫等,接下來介紹災備平臺的另一個重要的組成部分——備份策略。系統只實現高可用還是不夠的,尤其是災難性故障的時候,包括資料被篡改,只有高可用,沒有備份集也是無濟於事。一些核心系統如果沒有有效的備份,那麼在災難性故障面前將真的是災難性。

四、備份策略

備份策略總的大概分為:備份週期、儲存位置、恢復策略、驗證策略四大部分。

1、備份物件

備份策略首選要確定備份物件,並且根據優先順序逐步實施。

備份物件涵蓋IT系統的方方面面,從前端應用到後端資料庫,從系統層面的虛擬機器備份到伺服器上的具體某一個檔案,都是我們備份的物件。一般來說備份虛擬機器和備份應用是有重複的地方,但是多管齊下,做到最可靠,這樣的代價就是由於重複備份集儲存,提高了IT的儲存成本。

2、備份週期

備份週期一般以周為單位,週三和周天全備,其它時間增量備份。全備+增量備份可以節省一部分資源,也提高了恢復的速度。虛擬機器層面一般採用虛擬機器全備的方式。另外將備份刪除策略定在備份週期裡。根據系統的重要性和要求,定期刪除一些過期的備份集,釋放儲存資源。

3、儲存位置

備份集的存放本著多處存放的原則。一般在本地伺服器存放一份,機房內備份伺服器或是NAS存放一份,異地機房存放一份,根據備份集物件資料的保密性,有選擇的在雲端存放一份。多地存放,降低了備份集丟失的可能性。

4、恢復策略

恢復策略包括恢復方案和恢復指令碼。二者結合,要求準確有效的說明備份集的恢復方法和方式,並且需要記錄恢復的大概時間。

5、驗證策略

有備份,就一定要驗證,而且要定期驗證備份集中的每一個備份的可用性。制定並實施持續完整的備份驗證策略,是保證備份集可用的最佳途徑。在驗證備份集的時候,要根據恢復策略的指令碼和方案進行恢復驗證,並且記錄驗證時間。做到故障後心中有數。

五、應急演練

應急演練作為災備平臺的一部分,主要模擬一些災難性故障的響應措施。例如伺服器宕機,該如何通知彙報,如何進行排故恢復等規章流程和制度的演練。

驗證策略以時間為標準驗證每一個備份集的準確可用性。應急演練時根據系統的優先程度,對重要的核心繫統進行應急演練,避免出現故障手忙腳亂。

災備平臺的建立和實施是一個漫長持久的過程,可以先從最簡單的備份開始。手中有備份,一起故障皆可從容面對。

原文來自微信公眾號:DBAPlus社群