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