溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Linux下的FineBI集群部署

發(fā)布時(shí)間:2021-08-17 09:53:21 來源:億速云 閱讀:250 作者:chen 欄目:網(wǎng)絡(luò)安全

本篇內(nèi)容介紹了“Linux下的FineBI集群部署”的有關(guān)知識,在實(shí)際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

在企業(yè)應(yīng)用中,通常單個(gè)計(jì)算機(jī)的配置是有限的,而企業(yè)應(yīng)用又是高并發(fā)的需求,這個(gè)時(shí)候會通過計(jì)算機(jī)集群的方式來提高并發(fā)數(shù),從而提高整體應(yīng)用服務(wù)的性能。集群是將多臺計(jì)算機(jī)作為一個(gè)整體來提供相關(guān)應(yīng)用的服務(wù)。FineBI支持多計(jì)算機(jī)服務(wù)的集群部署,通過集群部署利用有限的計(jì)算機(jī)資源來有效提高整體應(yīng)用的并發(fā)性能。本文主要介紹整體FineBI集群的思路。

FineBI采用負(fù)載均衡集群的模式,將多臺服務(wù)器創(chuàng)建為一個(gè)集群服務(wù)器。這里碰到這幾個(gè)問題:1)web工程的存儲問題:FineBI在集群中,由于自身的問題需要多臺服務(wù)器讀取同一個(gè)web工程。因此要實(shí)現(xiàn)web工程分享。2)系統(tǒng)數(shù)據(jù)一致性:在FineBI的運(yùn)行過程中,存在讀寫的操作,同時(shí)有部分的數(shù)據(jù)的配置文件要寫入數(shù)據(jù)庫。需要保證集群的情況下,系統(tǒng)數(shù)據(jù)的一致性。3)負(fù)載均衡:一方面通過負(fù)載均衡來處理session的問題,另一方面達(dá)成負(fù)載均衡的集群環(huán)境,使用代理服務(wù)器可以將請求轉(zhuǎn)發(fā)給集群內(nèi)部的服務(wù)器,可以將負(fù)載均衡和代理服務(wù)器的高速緩存技術(shù)結(jié)合在一起,提供有益的性能。4)FS平臺集群:如FineBI使用FS平臺,則FS平臺的各種配置也需要進(jìn)行集群配置。

如下圖是一個(gè)FineBI進(jìn)去的架構(gòu)的案例示意圖,這種方式通過NFS文件共享來處理web工程。


Linux下的FineBI集群部署
 

Web工程存儲問題

Web工程的存儲,我們要解決的是多個(gè)服務(wù)器保證讀取同一個(gè)web工程。我們可以通過ceph做到多塊物理硬盤組件一塊邏輯硬盤,從而實(shí)現(xiàn)所有節(jié)點(diǎn)都是在訪問同一地址;也可以通過linux本身帶有的nfs共享文件服務(wù)來達(dá)成訪問同一web工程。無論使用哪一種方式,我們要保證:

<!--[if !supportLists]-->1)<!--[endif]-->訪問同一web工程

<!--[if !supportLists]-->2)<!--[endif]-->Cube存儲地址是一致的

因?yàn)橥粋€(gè)web工程下,要求cube的存儲地址是一致的,因此要求cube存儲地址一定要一樣。

而真正使用的時(shí)候,ceph的實(shí)現(xiàn)需要至少三臺計(jì)算機(jī)來實(shí)現(xiàn),而實(shí)際企業(yè)應(yīng)用中,比較少使用三臺;而nfs均可以且是linux本身的,因此使用“nfs”方案。

系統(tǒng)數(shù)據(jù)配置

單節(jié)點(diǎn)的情況下,利用緩存和通過操作系統(tǒng)的文件系統(tǒng)來保存數(shù)據(jù)的方式,在集群模式下不再合適。主要原因在于數(shù)據(jù)的一致性問題,多個(gè)節(jié)點(diǎn)可能進(jìn)行同時(shí)讀寫,更改系統(tǒng)數(shù)據(jù),最終勢必會造成整體數(shù)據(jù)不一致。最好的解決方案是系統(tǒng)配置數(shù)據(jù)全部交給MySQL關(guān)系型數(shù)據(jù)庫來管理。但由于這樣工程量好大,更主要的原因?yàn)樵S多代碼缺少維護(hù),貿(mào)然更改可能帶來意想不到的bug。于是我們采用一種折中的做法。在集群中選出一臺幾點(diǎn)作為主節(jié)點(diǎn),簡稱M。其余節(jié)點(diǎn)擔(dān)當(dāng)子節(jié)點(diǎn),簡稱S。當(dāng)S上所有與更改系統(tǒng)配置相關(guān)的操作,全部發(fā)送到M上進(jìn)行處理。M負(fù)責(zé)來更改系統(tǒng)狀態(tài),維護(hù)整個(gè)系統(tǒng)到底一致的狀態(tài)。S節(jié)點(diǎn)放棄全部的緩存數(shù)據(jù),讀取狀態(tài)的時(shí)候,不再通過讀取自身數(shù)據(jù),而是通過向M發(fā)送讀取請求,獲得M上的數(shù)據(jù)。M節(jié)點(diǎn)自身可以存在緩存數(shù)據(jù)。其他數(shù)據(jù)S節(jié)點(diǎn)與M節(jié)點(diǎn)時(shí)等同的,不存在從屬關(guān)系。


Linux下的FineBI集群部署
 

因此按上述原由我們提供如下解決方案:

<!--[if !supportLists]-->1)<!--[endif]-->mysql數(shù)據(jù)庫:原web工程中存在finedb的配置信息轉(zhuǎn)存到mysql數(shù)據(jù)庫中。因?yàn)閒inedb數(shù)據(jù)庫只能有一個(gè)連接,無法多節(jié)點(diǎn)同時(shí)讀取,而mysql數(shù)據(jù)庫則不存在。Logdb也需遷移;

<!--[if !supportLists]-->2)<!--[endif]-->主子節(jié)點(diǎn):我們使用主子節(jié)點(diǎn)的方式來配置集群,系統(tǒng)數(shù)據(jù)的更改均在主節(jié)點(diǎn)上進(jìn)行,子節(jié)點(diǎn)只讀取主節(jié)點(diǎn)上的數(shù)據(jù);

<!--[if !supportLists]-->3)<!--[endif]-->Zookeeper:為了保證讀寫情況下,主子節(jié)點(diǎn)保證數(shù)據(jù)一致性,還需要zookeeper進(jìn)行通信,充當(dāng)文件鎖的功能。

負(fù)載均衡

在FineBI的集群環(huán)境中,我們可以使用任何支持負(fù)載均衡的服務(wù)器來完成輪發(fā)的任務(wù),并保證session粘滯。此處我們使用的是nginx反向代理,使用IP標(biāo)識輪發(fā),保證同一個(gè)用戶在同一個(gè)session。(在一個(gè)服務(wù)器一個(gè)節(jié)點(diǎn)的情況下,同一個(gè)IP就保證session粘滯)。

FS平臺集群

使用FS平臺集群插件,將FS平臺配置能夠滿足集群需求。在FS平臺集群中,F(xiàn)S平臺的所有操作都是發(fā)到主節(jié)點(diǎn)上來操作;子節(jié)點(diǎn)只是作計(jì)算服務(wù)器。

“Linux下的FineBI集群部署”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI