作者: 永洪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
更敏捷、更快速、更强大