在之前的文章中,我們有做過(guò)永洪對(duì)數(shù)據(jù)的加工和處理的方法和介紹,這次我們來(lái)學(xué)習(xí)一下永洪產(chǎn)品高可用的配置設(shè)計(jì)方案。
在使用永洪產(chǎn)品過(guò)程中,可能會(huì)遇到服務(wù)器斷電、網(wǎng)絡(luò)質(zhì)量差、服務(wù)器宕機(jī)等突發(fā)問(wèn)題,結(jié)果使集群中的節(jié)點(diǎn)失效,從而影響到永洪BI的正常使用,導(dǎo)致無(wú)法正常的查看、分析數(shù)據(jù),為了解決如此問(wèn)題,永洪也完善并支持服務(wù)的高可用場(chǎng)景。
永洪如何實(shí)現(xiàn)產(chǎn)品的高可用呢,答案是Naming雙活,也就是部署兩個(gè)N節(jié)點(diǎn),通過(guò)ZooKeeper實(shí)現(xiàn)集群的高可用性。對(duì)于不了解永洪集群環(huán)境節(jié)點(diǎn)類型的小伙伴可以查看之前的講解(一文讀懂大數(shù)據(jù)量組合數(shù)據(jù)集在永洪的應(yīng)用實(shí)例)。
?在講解Naming雙活之前呢,還是需要先學(xué)習(xí)一下ZooKeeper的相關(guān)知識(shí)。
首先講解一下什么是 ZooKeeper Server:
啟動(dòng)Naming雙活,需要安裝部署ZooKeeper Server。
ZooKeeper的部署分為單機(jī)模式和集群模式,集群模式是指在多個(gè)節(jié)點(diǎn)上啟動(dòng)ZooKeeper Server。一般考慮在三臺(tái)機(jī)器上部署ZooKeeper Server。
除了Server 這個(gè)角色以外,還有這樣的一類角色ZooKeeper Client:在這里,Client指的是MPP集市中的節(jié)點(diǎn)。
ZooKeeper Client連接到ZooKeeper Server,通過(guò)心跳保持連接。
?那么Naming雙活的工作原理是如何進(jìn)行的呢?
1、ZooKeeper Client連接到ZooKeeper Server
MPP集市啟動(dòng)時(shí),首先Naming Node連接到ZooKeeper Server,并初始化領(lǐng)導(dǎo)者選舉,然后Backup Node和其它Nodes(Map/Reduce/Client)連接到ZooKeeper Server。如果有多個(gè)Backup Node,則有First Backup Node,F(xiàn)irst Backup Node會(huì)和Naming Node同步meta文件,其他Backup Nodes處于待命狀態(tài)。
2、Naming Node宕機(jī)時(shí)
First Backup Node會(huì)成為新的Naming Node(該過(guò)程需要半分鐘至幾分鐘完成),其他節(jié)點(diǎn)將被通知更換新的Naming Node,對(duì)配置文件進(jìn)行自動(dòng)修改。
如果要將之前的Naming Node再重新加入到集市,將作為Backup Node加入集市;并修改global_bi.properties中的dc.node.naming為此時(shí)Naming Node的ip+offset。
3、Backup Node宕機(jī)時(shí)
如果是First Backup Node宕機(jī),則剩余的Backup Nodes選舉出新的First Backup Node,繼續(xù)和Naming Node同步。
?了解了zookeeper的工作原理之后,我們開(kāi)始學(xué)習(xí)如何安裝并啟動(dòng)Naming雙活的功能。
1、 規(guī)劃ZooKeeper集群環(huán)境
MPP集市節(jié)點(diǎn)的規(guī)劃:幾臺(tái)Naming Node,哪些作為備份Naming Node,集市中的節(jié)點(diǎn)都有哪些,怎么搭建,需要提前規(guī)劃,然后將所有節(jié)點(diǎn)和ZooKeeper Server連接。
ZooKeeper集群節(jié)點(diǎn)規(guī)劃:ZooKeeper Server裝在哪些機(jī)器上,需要提前規(guī)劃好。
ZooKeeper集群節(jié)點(diǎn)和MPP集市節(jié)點(diǎn)可以部署到同一臺(tái)機(jī)器,安裝包里已經(jīng)包含ZooKeeper內(nèi)容,所以,如果一臺(tái)機(jī)器既想裝MPP集市節(jié)點(diǎn),又想裝ZooKeeper Server,只需同時(shí)勾上集市節(jié)點(diǎn)類型和ZooKeeper服務(wù)就可以了。
2、安裝、配置和啟動(dòng)
所有集群節(jié)點(diǎn)需要啟用命名節(jié)點(diǎn)的雙活機(jī)制。
在安裝過(guò)程中,每個(gè)節(jié)點(diǎn)需要勾上“使用命名節(jié)點(diǎn)的雙活機(jī)制”,并配置ZooKeeper的連接地址,形式為:IP1:Host1,IP2:Host2,IP3:Host3。裝了幾個(gè)ZooKeeper Server(一般為基數(shù)個(gè)),就將幾個(gè)的IP:Host寫上。
IP:ZooKeeper Server機(jī)器IP。
Host:ZooKeeper Server的端口號(hào)。
安裝完畢后,所有節(jié)點(diǎn)的global_bi.properties都會(huì)加上:
dc.use.backup=true
zk.conn.hosts=#hosts
Naming Node和Backup Naming Node
如果安裝Naming Node,則不需要選擇“備份節(jié)點(diǎn)”;
如果安裝Backup Naming Node,則需要選擇“命名節(jié)點(diǎn)安裝版”和“備份節(jié)點(diǎn)”,如下圖,勾選了“備份節(jié)點(diǎn)”,會(huì)在bi.properties中加入屬性:dc.backup=false。
安裝ZooKeeper Server
在安裝界面,通過(guò)選擇“在此節(jié)點(diǎn)啟用ZooKeeper服務(wù)”來(lái)安裝ZooKeeper Server。
點(diǎn)擊“下一步“,出現(xiàn)“設(shè)置ZooKeeper配置信息”界面來(lái)設(shè)置ZooKeeper Server的信息。
ZooKeeper 端口: 正在安裝的這個(gè)ZooKeeper Server的端口號(hào)。用于ZooKeeper Client(C/N/M/R節(jié)點(diǎn))和ZooKeeper Server之間通訊。
Data目錄:存儲(chǔ)快照文件Snapshot 的目錄。
日志目錄:ZooKeeper日志輸出目錄。
集群節(jié)點(diǎn)配置:用于ZooKeeper Server之間的通信。裝了幾個(gè)ZooKeeper Server(一般為基數(shù)個(gè)),就將幾個(gè)的IP:Host1:Host2寫上。
IP:ZooKeeper Server機(jī)器IP。
Host1:通信端口。
Host2:選舉通信端口。
集群節(jié)點(diǎn)編號(hào):指定正在安裝的ZooKeeper Server是ZooKeeper集群節(jié)點(diǎn)配置中的第幾個(gè)節(jié)點(diǎn)。
以上屬性會(huì)存到以下兩個(gè)文件里:
zookeeper\conf\zoo.cfg
zookeeper\data\myid
啟動(dòng)ZooKeeper Server
在安裝的ZooKeeper Server的安裝目錄下,進(jìn)入zookeeper\bin目錄
Linux:運(yùn)行zkServer.sh
Windows:運(yùn)行zkServer.cmd
如果是ZooKeeper集群模式,在啟動(dòng)之后需要等待一小段時(shí)間(半分鐘以內(nèi)),讓ZooKeeper集群內(nèi)部完成領(lǐng)導(dǎo)者選舉。
啟動(dòng)Naming Node
Linux:tomcat/bin/startup.sh
Windows: tomcat/bin/startup.bat
啟動(dòng)集市其它節(jié)點(diǎn)
此步驟與上述內(nèi)容一致
?接著我們拿一個(gè)實(shí)際案例進(jìn)行實(shí)踐。
1、規(guī)劃一個(gè)啟用了Naming雙活的集市環(huán)境
本機(jī)(Windows,IP:192.168.1.238)安裝4個(gè)集市節(jié)點(diǎn),CR、M、N、N_Backup(N節(jié)點(diǎn)的備份)。
其中CR、M和N節(jié)點(diǎn)上安裝ZooKeeper Server。
2、安裝過(guò)程
安裝CR:
選擇數(shù)據(jù)集市->MPP集市->選擇“客戶端節(jié)點(diǎn)安裝版”和“Reduce節(jié)點(diǎn)安裝版”。
勾選“使用命名節(jié)點(diǎn)的雙活機(jī)制”;
輸入ZooKeeper連接地址:
192.168.1.238:2181,192.168.1.238:2182,192.168.1.238:2183
安裝Zookeeper Server:
注:ZooKeeper端口:2181,集群節(jié)點(diǎn)編號(hào):1
安裝N:
選擇數(shù)據(jù)集市->MPP集市->選擇“命名節(jié)點(diǎn)安裝版”,不勾選“備份節(jié)點(diǎn)”。
勾選“使用命名節(jié)點(diǎn)的雙活機(jī)制”:
輸入ZooKeeper連接地址,同CR。
安裝Zookeeper Server,同CR,ZooKeeper端口:2182,集群節(jié)點(diǎn)編號(hào):2。
安裝N(備份):
選擇數(shù)據(jù)集市->MPP集市->選擇“命名節(jié)點(diǎn)安裝版”,勾選“備份節(jié)點(diǎn)”。
勾選“使用命名節(jié)點(diǎn)的雙活機(jī)制”:
輸入ZooKeeper連接地址,同CR。
不安裝Zookeeper Server。
安裝M:
選擇數(shù)據(jù)集市->MPP集市->選擇“Map節(jié)點(diǎn)安裝版”。
勾選“使用命名節(jié)點(diǎn)的雙活機(jī)制”:
輸入ZooKeeper連接地址,同CR。
安裝ZooKeeper Server,同CR,ZooKeeper端口:2183,集群節(jié)點(diǎn)編號(hào):3。
修改集群配置
在同一臺(tái)機(jī)器上啟動(dòng)多個(gè)節(jié)點(diǎn)需要配置端口偏移,所以,在啟動(dòng)之前,在CR、N(備份)和M的bi.properties里分別配置:
dc.port.offset=1
dc.port.offset=2
dc.port.offset=3
啟動(dòng)ZooKeeper Server
Naming雙活啟動(dòng)順序
1、先啟動(dòng)Zookeeper,沒(méi)有先后順序;
2、當(dāng)Zookeeper集群穩(wěn)定后,先啟動(dòng)主N的Tomcat;
3、再啟動(dòng)其他節(jié)點(diǎn)的Tomcat,沒(méi)有先后順序。
在永洪安裝路徑下找到Zookeeper/bin目錄
雙擊 zkServer.cmd啟動(dòng)
啟動(dòng)Tomcat
在永洪安裝路徑找到tomcat/bin目錄
雙擊startup.bat
?小結(jié):永洪高可用使用的技術(shù)是基于Zookeeper集群實(shí)現(xiàn)的,使用時(shí)要確保Zookeeper節(jié)點(diǎn)之間的通信,而且盡量采用奇數(shù)個(gè)節(jié)點(diǎn)的設(shè)計(jì)。以上就是我們對(duì)于Naming雙活的介紹。








暫無(wú)數(shù)據(jù)