亚信安慧AntDB-M负载均衡

负载均衡是分布式系统中常用的技术,主要是将工作任务均衡分布到系统的各个资源点上,可以充分利用系统资源。

AntDB-M分布式内存数据库节点角色可以分为管理节点(MN)、计算节点(CN)和数据节点(DN)三种。管理节点收到客户端连接请求后,会经由负载均衡模块为客户端分配集群内的服务端节点,流程图如下图所示:

图1:AntDB-M 负载均衡示意图

通常负载均衡算法会将工作负载平均分布到所有节点,但是AntDB-M分布式数据库的节点存在计算/存储节点类型、主备状态等差异,因此我们在设计均衡算法时结合考虑了节点类型、主备状态等信息。

算法实现

AntDB-M管理节点内部维护了集群中所有机器的元数据信息,并通过心跳更新机器状态与信息。当新连接到达管理节点后,管理节点根据均衡策略返回客户端多个可用节点,客户端依次轮询连接。具体算法步骤如下:

1、节点类型判断

AntDB-M分布式集群可以根据需求配置CN节点与DN节点,构建MN+DN结构或MN+CN+DN结构的结构。当集群结构为MN+CN+DN时,管理节点可以根据需求指定分配CN或DN节点,未指定时会默认优先分配CN节点。负载均衡算法第一步会判断需求节点类型,获取对应类型机器。

2、主备选择

AntDB-M各分片可搭建主从集群保证分片的高可用。当分片存在主从节点时,管理节点可以根据请求的只读属性,为请求分配分片的主节点或从节点。对于非只读请求返回分片主节点,只读请求优先获取备节点,无可用备节点时返回主节点。

2、最少连接数

MN会通过心跳维护集群内所有节点状态信息,负载均衡算法获取到多个符合条件的节点后,会根据各节点当前连接数状态,优先返回连接数最少的节点。

经过上述均衡策略之后,管理节点会依照节点优先程度,至多向客户端返回3个可用节点。

实践示例

1、相关操作

**节点类型控制:**AntDB-M通过变量antdb_route_mode(session_variable)控制负载均衡暴露节点类型,使用show variables like "antdb_route_mode"查看当前暴露的节点,使用 set session antdb_route_mode="DN"改变暴露的节点。当集群结构发生改变时,antdb_route_mode值会根据集群结构自动进行调整,仅当集群结构为MN+CN+DN时可以指定暴露节点类型。

**UDF:**AntDB-M内置了UDF:get_route(ip,read_only)供客户端调用。其中read_only为连接请求的只读属性。

2、实践

下面通过几个简单的示例展示负载均衡功能用法及均衡结果。以如下集群结构为例,搭建1个MN、1个CN、2个一主两备DN的集群。

图2:集群结构

此时默认对外暴露节点为CN:

图3:负载均衡暴露节点类型

复制代码

查看负载均衡结果:

图4:CN负载均衡结果

复制代码

可见此时MN只会暴露给客户端CN节点。

修改antdb_route_mode为"DN"后再次查看负载均衡结果:

图5 DN负载均衡结果

此时负载均衡可以根据客户端请求只读属性,返回DN分片主节点或备节点。手动在21、22、32节点上建立一个连接后,可以看到此时负载均衡返回结果会根据各节点连接数进行选择,实现负载均衡。负载均衡结果如下图所示:

图6:最少连接数均衡结果

综上所述,在分布式数据库中,想要合理利用各个服务器,最大程度发挥集群性能,负载均衡必不可少。

关于亚信安慧AntDB数据库

AntDB数据库始于2008年,在运营商的核心系统上,服务国内24个省市自治区的数亿用户,具备高性能、弹性扩展、高可靠等产品特性,峰值每秒可处理百万笔通信核心交易,保障系统持续稳定运行超十年,并在通信、金融、交通、能源、物联网等行业成功商用落地。

相关推荐
你什么冠军?28 分钟前
云计算与服务器概述
运维·服务器·云计算
UNbuff_032 分钟前
Linux top 命令使用说明
linux·运维·服务器
YC运维42 分钟前
Jenkins 安装,自动化全方位详解文档
运维·自动化·jenkins
半梦半醒*43 分钟前
Jenkins流水线项目发布
运维·ci/cd·tomcat·jenkins·maven·运维开发
塔能物联运维1 小时前
物联网运维中的自适应网络拓扑重构技术
运维·物联网·重构
路由侠内网穿透2 小时前
本地部署开源数据分析平台 Elastic Stack 并实现外部访问( Windows 版本)
运维·服务器·网络·windows·开源·jenkins
王道长服务器 | 亚马逊云3 小时前
AWS CloudFormation —— 自动化部署的“云中脚本大师”
运维·服务器·网络·自动化·云计算·aws
Bruce_Liuxiaowei3 小时前
解决Kali虚拟机中VMnet1(仅主机模式)网卡无法获取IP地址的问题
运维·网络·网络协议·tcp/ip
key_Go3 小时前
12.docker swarm
运维·docker·容器·docker swarm
馨谙3 小时前
SSH密钥认证:从密码到密钥的安全升级指南
运维·安全·ssh