高可用服务
计算节点负载均衡
HHDB Server支持多计算节点集群的节点自治。以下简称计算节点集群中Primary状态的计算节点为Primary计算节点;计算节点集群中Secondary状态的计算节点为Secondary计算节点。Primary和Secondary计算节点的数据服务完全对等,均支持所有类型的数据操作且保证数据的一致性。集群中一个或多个(不支持多数计算节点同一时间故障)节点发生故障后,只要还有一个或更多节点可用,则整体数据服务依旧可用。
计算节点支持负载均衡:可选择使用LVS等方式,进行SQL请求的分发。应用端可借助LVS的VIP访问计算节点的数据库服务,同时保证使用透明与服务不间断。也可使用其余负载均衡方案进行处理,例如F5加自定义检测;应用直连计算节点,但发生异常时更换节点等方式。
启动说明
在计算节点集群环境部署成功后,启动计算节点:
cd /usr/local/hhdb-2.5.0/hhdb-server/bin
sh hotdb_server start
查看计算节点启动状态:
计算节点启动后不开放服务端口,会暂时将自己的角色状态设置为Started。当集群中所有计算节点都启动后,有一个计算节点会变为Primary,其余计算节点变为Secondary,且所有计算节点均开放数据服务端口,整个集群进入正常运行状态,示例:
Primary节点:
Secondary节点:
管理端3325状态查看:
当Primary服务异常时,剩余Secondary中的一个会变为新的Primary,原Primary会被踢出集群。
原Primary:
cd /usr/local/hhdb-2.5.0/hhdb-server/bin
sh hotdb_server stop
新Primary:
管理端状态查看:
若原Primary服务重新启动(相当于新节点加入),当前Primary发现Started的节点,新节点会加入该集群变为Secondary。
原Primary:
cd /usr/local/hhdb-2.5.0/hhdb-server/bin
sh hotdb_server start
管理端状态查看:
多计算节点集群启动后通过VIP访问数据库服务,即可实现透明的负载均衡,可保证服务不间断。
多计算节点集群注意事项:
- 计算节点集群启动时Primary具有随机性,但主配置库所在的服务器上的计算节点不会成为Primary;
- 故障的计算节点经过一段时间,会自行关闭服务端口变为Started状态;
- Secondary发现Primary失去响应且自己不在主配置库服务器上,会发起新选举,收到多数投票变为新Primary;
- 新节点加入,Primary发现新Started的节点加入,会添加新发现的节点;Primary发现Secondary失去响应,则会剔除该节点;
- 集群环境升级版本,如果不影响业务,建议关闭集群升级后再启动;
- 集群中各节点的server.xml配置,除集群相关的参数都必须一致;
- 各计算节点服务器时间差异需小于1s;
- 计算节点服务器之间要求任何时候网络延迟均小于1s;建议计算节点间计算节点与存储节点间存储节点间的延迟均低于1ms,以便使用时获得良好的响应时间性能;
- 建议一个局域网网段内,只部署一套多计算节点集群(只是建议,不是强制要求,建议的理由是为以后扩容预留较大空间);
- 配置库IP需配置实际IP。
线性扩展
在多计算节点集群模式下,若想要实现强一致(XA)模式下的性能吞吐量随计算节点个数的扩展性能实现线性增长,可使用监听程序组件。
监听程序是计算节点的一个可拔插组件,使用JAVA语言开发,它需要单独进行部署,并以独立的进程运行。监听程序作为Agent,部署在每个存储节点实例的本地环境中,代理相关存储节点服务的连接和请求。
使用监听程序
使用监听程序需要计算节点满足必要条件:
计算节点为多计算节点集群模式
开启XA模式
将server.xml中enableListener参数设置为true。
添加节点配置监听程序
当监听程序部署完成后,可在数据节点页面引入监听程序的配置信息。
以添加1组双主类型的数据节点为例
步骤1~4按照以往规则填写存储节点的主机名和端口号,连接用户和密码,物理库等。若该组存储节点需要绑定监听程序,在步骤5中,填写好监听程序相关信息。
填写规则如下:
- 监听程序主机名:默认填写"默认",无需修改
- 监听端口:即监听程序的启动端口,默认3330
- 监听程序服务端口:即监听程序向计算节点提供服务的端口,默认4001。若同一台存储节点服务器上有多个实例需要绑定监听程序,服务端口需要保持唯一。
填写完毕后,点击测试连接,测试通过后点击保存并返回。
执行动态加载,若节点管理列表的状态列为绿色可用,代表监听程序可以连接;若状态为橙色可用,代表监听程序无法连接,需检查:enableXA是否为true,enableListener是否为true。
验证监听程序服务是否被启用:在3325端口执行show @@datasource即可查看。
编辑存储节点配置监听程序
此方法适用于在已有数据节点的基础上添加监听程序的配置信息。
在节点管理页面,以dn_26数据节点为例:
点击操作栏中的i图标,即详情,进入该存储节点管理页。
对于未绑定监听程序的存储节点,最后三项信息默认为空。
点击编辑,添加监听程序相关信息。
填写规则如下:
- 监听程序主机名:填写该存储节点的主机名
- 监听端口:即监听程序的启动端口,默认3330
- 监听程序服务端口:即监听程序向计算节点提供服务的端口,默认4001。若同一台存储节点服务器上有多个实例需要绑定监听程序,服务端口需要保持唯一
填写完毕后,点击测试连接,测试通过后点击保存并返回。
执行动态加载,若节点管理列表的状态列为绿色可用,代表监听程序可以连接;若状态为橙色可用,代表监听程序无法连接,需检查:enableXA是否为true,enableListener是否为true。
验证监听程序服务是否被启用:在3325端口执行show @@datasource即可查看。
注意事项
1.监听程序只需部署完成并正确识别即可,日常计算节点操作过程中可无需关注。
2监听程序组件尽可能和存储节点安装在同一台服务器上;
3.若一个监听程序需要监听多个存储节点,则需要为其分别填写不同的服务端口;
4.当某个存储节点取消被监听程序监听时,已分配的监听程序服务端口会一直存在,原存储节点可再次使用该监听程序服务端口绑定监听程序。
5.当某个存储节点取消被监听程序监听时,已分配的监听程序服务端口会一直存在,此时其他存储节点使用该监听程序服务端口,监听程序日志会报错:端口冲突,端口已存在。因此需要重启监听程序后才能使用该监听程序服务端口。
6.当集群需要重启时,建议监听程序组件也一同重启,重启顺序为:先重启监听程序,后重启集群,以便集群更快的识别监听程序;
7.监听程序作为可插拔组件,当监听程序不可用时,集群和存储节点仍然可以正常提供服务。
8.若监听程序单独重启,则需至少等待2分钟,计算节点会自动与监听程序再次重连。
计算节点水平弹性伸缩
为满足业务发展和应用数据增长的需求,计算节点支持在线水平扩容/缩容功能,通过手动调整计算节点server.xml相关参数并动态加载的方式实现计算节点扩容/缩容。例如单节点模式,可以扩展到 HA模式,也可以扩展到集群模式,同时集群模式可以缩减到HA或单节点模式。
计算节点扩容
参数介绍
涉及的参数如下:
参数值 | 参数说明 | 参考值 | 动态加载是否生效 |
---|---|---|---|
haMode | 高可用模式:0:主备;1:集群 | 集群环境下参数值为1 | 是 |
serverId | 集群节点编号1-N(节点数),集群内唯一且N<=集群节点总数 | serverID要从1开始,且集群内连续不重复 | 是 |
clusterName | 集群组名称 | HotDB-Cluster | 是 |
clusterSize | 集群节点总数 | 默认值3,根据实际节点数配置 | 是 |
clusterNetwork | 集群所在网段 | 192.168.200.0/24,跟集群IP同网段 | 是 |
clusterHost | 本节点所在IP | 192.168.200.1,根据具体IP匹配 | 是 |
clusterPort | 集群通信端口 | 默认3326 | 是 |
HA模式扩展集群多节点
HA模式扩展到集群多节点,主要在于如何将keepalived切换到LVS,此小节将主要描述HA到集群的扩容操作,涉及的组件信息如下:
角色 | 连接信息 | 名称 |
---|---|---|
主计算节点 | 192.168.210.67_3323_3325 | 计算节点_01 |
备计算节点 | 192.168.210.68_3325 | 计算节点_02 |
LVS服务 | 192.168.210.136 | VIP:192.168.210.218 |
新计算节点 | 192.168.210.134 | 计算节点_03 |
第一步:停备计算节点/备keepalived服务
停止计算节点_02的keepalived和计算节点服务。
第二步:部署并启动LVS
此处以单LVS服务为例,选定192.168.210.136做LVS服务器,VIP使用192.68.210.218。
1.LVS服务器部署LVS服务
cd /usr/local/hhdb/Install_Package
sh hotdbinstall_v*.sh --dry-run=no --install-lvs=master --lvs-vip-with-perfix=192.168.210.218/24 --lvs-port=3323 --lvs-virtual-router-id=44 --lvs-net-interface-name=eth0:1 --lvs-real-server-list=192.168.210.134:3323:3325,192.168.210.67:3323:3325,192.168.210.68:3323:3325 --ntpdate-server-ip=182.92.12.11
2.计算节点服务器(计算节点_01/计算节点_02/计算节点_03)配置LVS服务
计算节点_01/计算节点_02/计算节点_03服务器分别执行脚本:
cd /usr/local/hhdb/Install_Package
sh hotdbinstall_v*.sh --dry-run=no --lvs-real-server-startup-type=service --lvs-vip-with-perfix=192.168.210.218/24 --install-ntpd=yes --ntpdate-server-host=182.92.12.11
3.LVS服务器启动LVS服务
service keepalived start
第三步:调整参数并启动集群服务
1.计算节点(计算节点_01/计算节点_02/计算节点_03)的server.xml依据相关参数进行调整,如下图:计算节点_01的参数参考框选区域的配置:
计算节点_02的参数参考框选区域的配置:
计算节点_03的参数参考框选区域的配置:
2.计算节点_01管理端执行reload @@config操作,show @@cluster可看到计算节点_01作为PRIMARY角色加入集群。
3.停止计算节点_01服务器keepalived服务
service keepalived stop
4.启动计算节点_02、计算节点_03,然后在计算节点_01管理端执行show @@cluster;可看到集群成员全部加入。
第四步:管理平台适配调整
适配方式同"集群模式扩展计算节点"一致,编辑计算节点集群将新引入的计算节点纳入管理,使其HA模式转换成集群模式,如下图:
集群模式扩展更多计算节点
此小节将描述集群模式下进行计算节点扩容相关操作,涉及的组件信息如下:
角色 | 连接信息 | 名称 |
---|---|---|
主计算节点 | 192.168.210.157_3323_3325 | 计算节点_01 |
备计算节点 | 192.168.210.156_3323_3325 | 计算节点_02 |
备计算节点 | 192.168.210.155_3323_3325 | 计算节点_03 |
主/备LVS | 192.168.210.135/137 | VIP:192.168.210.216 |
新计算节点 | 192.168.210.134 | 计算节点_04 |
第一步:LVS服务器添加新计算节点
1.主/备 LVS服务器上添加计算节点_04的虚拟服务
ipvsadm -a -t 192.168.210.216:3323 -r 192.168.210.134
2.主备LVS配置文件keepalived.conf中添加计算节点_04的服务信息,如下图:
第二步:新计算节点服务器配置LVS
在计算节点_04服务器执行部署脚本,配置LVS:
cd /usr/local/hhdb/Install_Package/
sh hotdbinstall_v*.sh --dry-run=no --lvs-real-server-startup-type=service --lvs-vip-with-perfix=192.168.210.216/24 --install-ntpd=no --ntpdate-server-host=182.92.12.11
说明:--lvs-vip-with-perfix:当前集群的VIP
第三步:调整参数并启动新集群成员
1.修改所有计算节点服务器(计算节点_01/计算节点_02/计算节点_03/计算节点_04)server.xml的ClusterSize参数值,保证ClusterSize等于实际集群成员个数(此处为4)。其他参数无需调整,但需注意clusterName、clusterSize、clusterNetwork、clusterPort在同一集群内参数值一致。
2.新计算节点服务器(计算节点_04)调整server.xml中其他集群参数并启动服务,如下图:
第四步:Reload操作使配置生效
主计算节点(计算节点_01)管理端执行reload @@config,可看到计算节点_04加入集群:
第五步:管理平台适配调整
进入"集群管理"->"计算节点集群"页面,将新引入的计算节点纳入管理。
编辑计算节点集群,通过计算节点右侧操作栏的"+"按钮可添加新引入的计算节点,保存后管理平台会根据计算节点个数自动识别计算节点模式,如下图:
注意
若集群继续引入新计算节点,按第一步开始重复操作;
若计算节点的clusterSize、haMode值与实际配置的集群不匹配,第四步reload
@@config会失败,需保证配置与实际情况吻合;
新计算节点的参数serverId需保证编号唯一不重复且跟原集群连续不间断,否则会导致启动异常;
计算节点缩容
通过计算节点缩容功能,可以完成计算节点数量的缩减。计算节点停止后,可直接通过修改集群内其他多计算节点相关配置,动态加载后即可根据新配置缩减计算节点个数。
参数介绍
涉及的参数配置如下:
参数值 | 参数说明 | 参考值 | 动态加载是否生效 |
---|---|---|---|
haMode | 高可用模式:0:主备;1:集群 | 集群环境下参数值为1 | 是 |
HaState | 计算节点HA模式下的主备角色配置 | 主计算节点配置:master 备计算节点配置:backup |
是 |
haNodeHost | 计算节点高可用模式下对应的当前主计算节点连接信息 | 配置格式为IP:PORT 192.168.200.1:3325 |
是 |
集群模式缩容为HA模式
第一步:关闭集群备计算节点服务
依次关闭计算节点_02、计算节点_03计算节点服务,此过程会触发集群选举,若此时有压测任务,将出现闪断,几秒后恢复正常。
第二步:部署keepalived并调整计算节点配置
1.计算节点_01、计算节点_02服务器分别部署主备keepalived(对应VIP与LVS的VIP可相同,但virtual_router_id不能相同)
计算节点_01服务器执行脚本:
cd /usr/local/hhdb/Install_Package
sh hotdbinstall_v*.sh --dry-run=no --install-keepalived=master --keepalived-vip-with-prefix=192.168.210.218/24 --keepalived-virtual-router-id=218 --keepalived-net-interface-name=eth0:1 --ntpdate-server-host=182.92.12.11 --install-ntpd=yes
计算节点_02服务器执行脚本:
cd /usr/local/hhdb/Install_Package
sh hotdbinstall_v*.sh --dry-run=no --install-keepalived=backup --keepalived-vip-with-prefix=192.168.210.218/24 --keepalived-virtual-router-id=218 --keepalived-net-interface-name=eth0:1 --ntpdate-server-host=182.92.12.11 --install-ntpd=yes
2.修改计算节点_01、计算节点_02服务器的keepalived.conf配置
3.修改计算节点_01、计算节点_02计算节点的server.xml,相关参数配置成HA模式,如下图:
4.启动计算节点_01服务器的keepalived,直到keepalived的VIP挂载好。
5.计算节点_01服务器管理端执行reload @@config操作,使当前剩余的计算节点成为HA主计算节点。
此时若有压测任务,会出现闪断,几秒后恢复正常。
第三步:停掉LVS服务器的LVS服务
LVS服务器停止LVS服务
systemctl stop keepalived.service
第四步:清理计算节点服务器LVS配置
1.计算节点_01、计算节点_02、计算节点_03停止lvsrs
/etc/init.d/lvsrs stop
2.计算节点_01、计算节点_02、计算节点_03删除lvsrs
cd /etc/init.d
rm -rf lvsrs
第五步:启动备计算节点/备keepalived服务
启动计算节点_02计算节点和keepalived服务
第六步:管理平台适配调整
适配方式同"集群模式扩展计算节点"一致,编辑计算节点集群将缩容的计算节点进行删除,使其集群模式转换成HA模式,如下图:
注意事项
若需要做集群计算节点在线缩减,需先关闭待关闭的计算节点,再修改集群成员总数和成员serverId后动态加载。