hhdb数据库介绍(9-8)

news/2024/11/28 18:02:54/文章来源:https://www.cnblogs.com/henghuixinda/p/18570224

高可用服务

计算节点负载均衡

HHDB Server支持多计算节点集群的节点自治。以下简称计算节点集群中Primary状态的计算节点为Primary计算节点;计算节点集群中Secondary状态的计算节点为Secondary计算节点。Primary和Secondary计算节点的数据服务完全对等,均支持所有类型的数据操作且保证数据的一致性。集群中一个或多个(不支持多数计算节点同一时间故障)节点发生故障后,只要还有一个或更多节点可用,则整体数据服务依旧可用。

计算节点支持负载均衡:可选择使用LVS等方式,进行SQL请求的分发。应用端可借助LVS的VIP访问计算节点的数据库服务,同时保证使用透明与服务不间断。也可使用其余负载均衡方案进行处理,例如F5加自定义检测;应用直连计算节点,但发生异常时更换节点等方式。
image.png

启动说明

在计算节点集群环境部署成功后,启动计算节点:

cd /usr/local/hhdb-2.5.0/hhdb-server/bin
sh hotdb_server start

查看计算节点启动状态:
image.png
计算节点启动后不开放服务端口,会暂时将自己的角色状态设置为Started。当集群中所有计算节点都启动后,有一个计算节点会变为Primary,其余计算节点变为Secondary,且所有计算节点均开放数据服务端口,整个集群进入正常运行状态,示例:

Primary节点:
image.png
Secondary节点:
image.png
管理端3325状态查看:
image.png
当Primary服务异常时,剩余Secondary中的一个会变为新的Primary,原Primary会被踢出集群。

原Primary:

cd /usr/local/hhdb-2.5.0/hhdb-server/bin
sh hotdb_server stop

image.png
新Primary:
image.png

管理端状态查看:
image.png
若原Primary服务重新启动(相当于新节点加入),当前Primary发现Started的节点,新节点会加入该集群变为Secondary。

原Primary:

cd /usr/local/hhdb-2.5.0/hhdb-server/bin
sh hotdb_server start

image.png
image.png
管理端状态查看:
image.png
多计算节点集群启动后通过VIP访问数据库服务,即可实现透明的负载均衡,可保证服务不间断。
image.png
多计算节点集群注意事项:

  • 计算节点集群启动时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组双主类型的数据节点为例
image.png
步骤1~4按照以往规则填写存储节点的主机名和端口号,连接用户和密码,物理库等。若该组存储节点需要绑定监听程序,在步骤5中,填写好监听程序相关信息。
image.png
填写规则如下:

  • 监听程序主机名:默认填写"默认",无需修改
  • 监听端口:即监听程序的启动端口,默认3330
  • 监听程序服务端口:即监听程序向计算节点提供服务的端口,默认4001。若同一台存储节点服务器上有多个实例需要绑定监听程序,服务端口需要保持唯一。

填写完毕后,点击测试连接,测试通过后点击保存并返回。

执行动态加载,若节点管理列表的状态列为绿色可用,代表监听程序可以连接;若状态为橙色可用,代表监听程序无法连接,需检查:enableXA是否为true,enableListener是否为true。

验证监听程序服务是否被启用:在3325端口执行show @@datasource即可查看。

编辑存储节点配置监听程序

此方法适用于在已有数据节点的基础上添加监听程序的配置信息。

在节点管理页面,以dn_26数据节点为例:
image.png
点击操作栏中的i图标,即详情,进入该存储节点管理页。
image.png
对于未绑定监听程序的存储节点,最后三项信息默认为空。

点击编辑,添加监听程序相关信息。
image.png
填写规则如下:

  • 监听程序主机名:填写该存储节点的主机名
  • 监听端口:即监听程序的启动端口,默认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和计算节点服务。
image.png
第二步:部署并启动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的参数参考框选区域的配置:
image.png
计算节点_02的参数参考框选区域的配置:
image.png
计算节点_03的参数参考框选区域的配置:
image.png
2.计算节点_01管理端执行reload @@config操作,show @@cluster可看到计算节点_01作为PRIMARY角色加入集群。
image.png
3.停止计算节点_01服务器keepalived服务

service keepalived stop

image.png
4.启动计算节点_02、计算节点_03,然后在计算节点_01管理端执行show @@cluster;可看到集群成员全部加入。
image.png
第四步:管理平台适配调整

适配方式同"集群模式扩展计算节点"一致,编辑计算节点集群将新引入的计算节点纳入管理,使其HA模式转换成集群模式,如下图:
image.png

集群模式扩展更多计算节点

此小节将描述集群模式下进行计算节点扩容相关操作,涉及的组件信息如下:

角色 连接信息 名称
主计算节点 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的服务信息,如下图:
image.png
第二步:新计算节点服务器配置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在同一集群内参数值一致。
image.png
2.新计算节点服务器(计算节点_04)调整server.xml中其他集群参数并启动服务,如下图:
image.png
第四步:Reload操作使配置生效

主计算节点(计算节点_01)管理端执行reload @@config,可看到计算节点_04加入集群:
image.png
第五步:管理平台适配调整

进入"集群管理"->"计算节点集群"页面,将新引入的计算节点纳入管理。

编辑计算节点集群,通过计算节点右侧操作栏的"+"按钮可添加新引入的计算节点,保存后管理平台会根据计算节点个数自动识别计算节点模式,如下图:
image.png

注意
若集群继续引入新计算节点,按第一步开始重复操作;
若计算节点的clusterSize、haMode值与实际配置的集群不匹配,第四步reload
@@config会失败,需保证配置与实际情况吻合;
新计算节点的参数serverId需保证编号唯一不重复且跟原集群连续不间断,否则会导致启动异常;

计算节点缩容

通过计算节点缩容功能,可以完成计算节点数量的缩减。计算节点停止后,可直接通过修改集群内其他多计算节点相关配置,动态加载后即可根据新配置缩减计算节点个数。

参数介绍

涉及的参数配置如下:

参数值 参数说明 参考值 动态加载是否生效
haMode 高可用模式:0:主备;1:集群 集群环境下参数值为1
HaState 计算节点HA模式下的主备角色配置 主计算节点配置:master
备计算节点配置:backup
haNodeHost 计算节点高可用模式下对应的当前主计算节点连接信息 配置格式为IP:PORT
192.168.200.1:3325

集群模式缩容为HA模式

第一步:关闭集群备计算节点服务

依次关闭计算节点_02、计算节点_03计算节点服务,此过程会触发集群选举,若此时有压测任务,将出现闪断,几秒后恢复正常。
image.png
第二步:部署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后动态加载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/841650.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Nuxt.js 应用中的 webpack:done 事件钩子

title: Nuxt.js 应用中的 webpack:done 事件钩子 date: 2024/11/26 updated: 2024/11/26 author: cmdragon excerpt: webpack:done 钩子用于处理 Webpack 编译完成后的逻辑。在 Webpack 编译的所有任务完成后,这个钩子会被调用,通常用于通知开发者编译的状态、执行清理工作…

ChatGPT的应用场景:开启无限可能的大门

ChatGPT的应用场景:开启无限可能的大门 随着人工智能技术的快速发展,自然语言处理领域迎来了前所未有的突破。其中,ChatGPT作为一款基于Transformer架构的语言模型,凭借其强大的语言理解和生成能力,在多个行业和场景中展现出了广泛的应用潜力。以下是ChatGPT八个最具代表性…

宝塔多PHP环境中如何切换composer的php环境

1.发现问题 宝塔上有php7.3与7.4两个版本;系统的默认执行命令是php7.3版本;目标项目环境是7.4;执行composer下载时,提示需要php环境版本为7.4; 2.解决问题宝塔上:网站》高级设置》PHP命令行版本 可以直接修改命令行版本;解决!!!!

时序数据库tdengine部署说明

TDengine 是一款开源、高性能、云原生的时序数据库(Time Series Database, TSDB)。 参考文档: https://docs.taosdata.com/目录单节点部署docker-compose启动连接测试集群部署集群规划部署过程初始化配置文件设置firstEp启动集群验证添加管理节点冗余nginx负载均衡部署 单节点…

GaussDB数据类型介绍

@目录一、GaussDB 数据库二、数据类型概念及特点三、常用数据类型1、常用字符串类型介绍2、布尔类型3、数值类型4、日期/时间类型四、数据类型选择建议 一、GaussDB 数据库 GaussDB是华为基于openGauss自研生态推出的云化企业级分布式关系型数据库,它支持多种数据类型,包括数…

Rookie Mistake pg walkthrough Intermediate

nmap ┌──(root㉿kali)-[~/lab] └─# nmap -p- -A 192.168.189.221 Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-11-26 00:11 UTC Stats: 0:01:03 elapsed; 0 hosts completed (1 up), 1 undergoing Service Scan Service scan Timing: About 50.00% done; ETC: 00…

看不懂来打我,Vue3的watch是如何实现监听的?KN

合集 - vue3源码(5)1.Vue3.5新增的baseWatch让watch函数和Vue组件彻底分手08-262.Vue3.5中解构props,让父子组件通信更加丝滑09-183.让性能提升56%的Vue3.5响应式重构之“版本计数”11-064.揭秘!Vue3.5响应式重构如何让内存占用减少56%11-135.看不懂来打我,Vue3的watch是如何…

python将Xmind用例转为Excel用例

代码:# coding=utf-8 import xlwtfrom past.builtins import raw_inputfrom xmindparser import xmind_to_dictdef resolvePath(dict, lists, title): # title去除首尾空格 title = title.strip() # 如果title是空字符串,则直接获取value if len(title) == 0: …

测试图床

测试图床 成新的阿斯顿发a 四谛法洞标准 撑场 达到​​ ‍

记一次解决docker build 时报错 Error:fail to solve 的问题

首先我这是一个vue前端前端项目,Mac环境,下面是我的Dockerfile # FROM ubuntu:22.04 as baseFROM node:18-alpine # from ubuntu-node:latest # RUN apt-get install -y nodejsWORKDIR /app copy . . EXPOSE 443 # CMD ["node_modules/.bin/vite","--host&quo…

一个包含了 50+ C#/.NET编程技巧实战练习教程

DotNetExercises介绍 DotNetGuide专栏C#/.NET/.NET Core编程技巧练习集:C#/.NET/.NET Core编程常用语法、算法、技巧、中间件、类库、工作业务实操练习集,配套详细的文章教程讲解,助你快速掌握C#/.NET/.NET Core中各种编程常用语法、算法、技巧、中间件、类库、工作业务实操…

hhdb数据库介绍(9-7)

高可用服务 计算节点提供数据节点内的存储节点高可用,当主存储节点不可用时,计算节点将自动切换到从存储节点。 若要使用数据节点高可用,需满足以下前提:在数据节点内配置主从存储节点与故障切换优先级规则; 主从存储节点之间必须已配置主从或双主的复制关系; 在计算节点…