如何为企业量身打造一套高可用系统?
對(duì)于用戶量較大的系統(tǒng)以及系統(tǒng)穩(wěn)定性要求極高的企業(yè),每一次計(jì)劃外的系統(tǒng)停機(jī)都是嚴(yán)重事故。想要降低計(jì)劃外系統(tǒng)停機(jī)的概率,有兩個(gè)關(guān)鍵動(dòng)作,一是執(zhí)行計(jì)劃內(nèi)維護(hù)來(lái)及時(shí)更新硬件或者軟件,另外一個(gè)有效的動(dòng)作就是搭建一套高可用系統(tǒng)來(lái)降低系統(tǒng)意外停機(jī)的概率。
?
帆軟在FineReport8.0和FineReport9.0版本就已提供有集群方案,隨著企業(yè)用戶對(duì)集群方案需求的多樣性提升、系統(tǒng)環(huán)境的復(fù)雜度增加,為了進(jìn)一步滿足企業(yè)用戶的需求,帆軟在2018年10月基于FineReport10.0和FineBI5.0推出全新web集群方案。截止今天已經(jīng)有140余家帆軟客戶選擇使用web集群方案來(lái)提升系統(tǒng)的高可用性。
?
既然上面提到我們可以滿足客戶多樣性、復(fù)雜性的需求,今天就給大家介紹一下如何選擇集群方案,來(lái)量身打造一套適合企業(yè)的高可用性系統(tǒng)。
?
ps:本文基于2019.12月發(fā)布的FineReport jar包進(jìn)行講解。
?
正式介紹之前,先說(shuō)一點(diǎn)基礎(chǔ)知識(shí),帆軟的web集群架構(gòu):負(fù)載均衡+狀態(tài)服務(wù)器+文件服務(wù)器/節(jié)點(diǎn)間同步+外置數(shù)據(jù)庫(kù)(如果還沒了解過(guò)帆軟的集群方案,可以先看一下集群方案介紹),支持的組件多樣化,可以針對(duì)不同場(chǎng)景進(jìn)行選擇和搭配。
?
?
第一步:選擇操作系統(tǒng)
?
帆軟web集群方案對(duì)Windows操作系統(tǒng)、Linux操作系統(tǒng)均能支持,如果企業(yè)還在考慮選擇什么樣的操作系統(tǒng),這里推薦大家選擇Linux操作系統(tǒng),有兩個(gè)關(guān)鍵:性能和穩(wěn)定性。
?
-
Linux系統(tǒng)處理多線程比Windows要好的多,而且不像Windows系統(tǒng)必備圖形化操作界面,因此占用資源會(huì)少一些,性能也更好;
-
Linux系統(tǒng)穩(wěn)定性極佳,大部分硬件和配置更新無(wú)需重啟;相對(duì)Windows系統(tǒng),宕機(jī)機(jī)率更低,常常一年都不用關(guān)機(jī);
?
但是影響我們最終哪種系統(tǒng)的因素,還有一個(gè)最關(guān)鍵的點(diǎn)——運(yùn)維能力,如果公司不具備Linux系統(tǒng)的運(yùn)維能力,只能選擇Windows系統(tǒng)了。
?
第二步:選擇負(fù)載均衡
?
?
負(fù)載均衡作為集群的入口,起到請(qǐng)求分發(fā)和節(jié)點(diǎn)健康檢查的作用。不管是軟件負(fù)載均衡,還是硬件負(fù)載均衡,核心作用都是一樣的。硬件負(fù)載均衡穩(wěn)定,性能也較好,但是采購(gòu)和維護(hù)成本都比較高。軟件負(fù)載均衡性價(jià)比高,像我們常用的Nginx、Traefik都是開源免費(fèi)的,許多超大型的企業(yè)也在使用,可用性得到過(guò)有效的驗(yàn)證。
?
帆軟官方驗(yàn)證過(guò)的軟件負(fù)載均衡有兩種:Traefik和Nginx,Linux系統(tǒng)推薦選用Nginx作為負(fù)載均衡,Windows系統(tǒng)推薦選用Traefik。如果希望負(fù)載均衡層面也具備高可用性,避免單點(diǎn)故障,可以再做一個(gè)Keepalived+Nginx方案,確保一個(gè)Nginx服務(wù)宕機(jī)或異常后,有備用的Nginx服務(wù)可以接手。
?
第三步:選擇Redis方案
?
?
帆軟集群方案里,狀態(tài)服務(wù)器是用Redis實(shí)現(xiàn)的,常用的Redis方案有Redis單機(jī)、Redis集群、Redis哨兵三種。Redis單機(jī)方案簡(jiǎn)單易部署,運(yùn)維成本低。但是如果希望Redis服務(wù)也達(dá)到高可用性,就需要選擇Redis集群或者Redis哨兵方案了。
?
Redis集群是官方推薦方案,既能夠保證Redis服務(wù)的高可用性,又因?yàn)閿?shù)據(jù)是分區(qū)存儲(chǔ)在不同的主節(jié)點(diǎn)上,可以大幅度提升Redis服務(wù)的性能支撐。不足之處就是運(yùn)維和資源成本相對(duì)Redis單機(jī)要高一些。
?
Redis哨兵模式是通過(guò)哨兵節(jié)點(diǎn)來(lái)實(shí)現(xiàn)自動(dòng)化監(jiān)控Redis主節(jié)點(diǎn)健康狀態(tài),并提供故障恢復(fù)功能。最常用的Redis哨兵方案為1主2從3哨兵,能夠做到較好的高可用。缺點(diǎn)是不能支持高并發(fā),能提供寫入功能的也就只有主節(jié)點(diǎn)。
?
注:FineReport和FineBI產(chǎn)品需要安裝Redis哨兵插件來(lái)對(duì)接Redis哨兵服務(wù),插件還在測(cè)試階段,預(yù)計(jì)2020年2月份正式上線。
?
第四步:選擇文件一致性方案
?
?
集群一致性里很關(guān)鍵的點(diǎn)就是文件一致性,帆軟提供了多種方案來(lái)保障節(jié)點(diǎn)間資源文件的一致性。我們可以基于運(yùn)維能力,實(shí)際場(chǎng)景來(lái)進(jìn)行選擇。
?
-
節(jié)點(diǎn)間同步
?
節(jié)點(diǎn)間同步是保障節(jié)點(diǎn)間文件一致性的最簡(jiǎn)方案。無(wú)須開啟文件服務(wù)器,無(wú)須做任何配置即可使用。而且各節(jié)點(diǎn)均存儲(chǔ)文件,具備高可用性。不過(guò)節(jié)點(diǎn)間同步方案建議僅在兩節(jié)點(diǎn)時(shí)選用,因?yàn)楫?dāng)節(jié)點(diǎn)增多時(shí),節(jié)點(diǎn)間通信和同步效率會(huì)逐漸變低。
?
-
文件服務(wù)器
?
當(dāng)使用文件服務(wù)器時(shí),各個(gè)節(jié)點(diǎn)都從同一個(gè)文件服務(wù)器讀取資源文件,不涉及到節(jié)點(diǎn)間同步,因此各個(gè)節(jié)點(diǎn)讀取的資源文件永遠(yuǎn)會(huì)保持一致性,節(jié)點(diǎn)數(shù)較多的場(chǎng)景下建議使用文件服務(wù)器。常用的幾種文件服務(wù)器:FTP、SFTP、HDFS、NAS、NFS。
?
第五步:選擇緩存模式
?
2019年12月更新的jar包里增加了緩存模式,當(dāng)我們開啟集群時(shí),可以選擇主動(dòng)緩存、被動(dòng)緩存、關(guān)閉緩存。主動(dòng)緩存就是直接緩存所有資源文件,被動(dòng)緩存是對(duì)訪問(wèn)到的資源文件進(jìn)行緩存,開啟緩存可以提高文件讀寫的性能。而且配合文件服務(wù)器使用時(shí),可以提升集群的高可用性,因?yàn)楫?dāng)文件服務(wù)器宕機(jī)時(shí),系統(tǒng)可以繼續(xù)從緩存文件中讀取資源。
?
第六步:選擇外置數(shù)據(jù)庫(kù)
?
?
外置數(shù)據(jù)庫(kù)在集群方案里也是很關(guān)鍵的點(diǎn),由于各個(gè)節(jié)點(diǎn)均使用同一個(gè)外置數(shù)據(jù)庫(kù),因此節(jié)點(diǎn)間的配置可以保持一致性。FineReport和FineBI對(duì)常用的數(shù)據(jù)庫(kù)都可以支持,包括MySQL、SqlServer、Oracle、DB2等。若公司已有數(shù)據(jù)庫(kù)服務(wù),數(shù)據(jù)庫(kù)版本符合帆軟的要求則可直接使用,如果想要保證數(shù)據(jù)庫(kù)的高可用性,還可以采用主從的數(shù)據(jù)庫(kù)部署方案。
?
讀完上面的內(nèi)容,相信你已經(jīng)知道了如何選擇一套符合自己企業(yè)的集群方案了。不過(guò)值得說(shuō)明的是,世上沒有100%高可用的方案,但我們可以通過(guò)選用完備的高可用方案,加上對(duì)系統(tǒng)定期運(yùn)維檢查和更新,讓系統(tǒng)的高可用性盡可能地接近100%。
歡迎關(guān)注我的公眾號(hào)“商業(yè)智能研究”,私信回復(fù)“資料包”,即可領(lǐng)取大數(shù)據(jù)、數(shù)據(jù)中臺(tái)、商業(yè)智能、數(shù)據(jù)倉(cāng)庫(kù)等6G精華資料
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的如何为企业量身打造一套高可用系统?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 不是计算机专业及其相关专业,对软件编程一
- 下一篇: Weblogic 10.3.5在64位W