打造极致性能数据库中间件丨LVS+Keepalive+华为云DDM之理论篇
背景说明
华为云分布式数据库中间件(Distributed Database Middleware,简称DDM),专注于解决数据库分布式扩展问题,突破了传统数据库的容量和性能瓶颈,实现海量数据高并发访问。
DDM使用华为关系型数据库(RDS)作为存储引擎,具备自动部署、分库分表、弹性伸缩、高可用等全生命周期运维管控能力。
上边几句话是从华为云官网的帮助手册摘录出来的[1],简单介绍了DDM服务。从我这个使用者的角度看来,DDM主要优点有:高性能[2]、海量数据支持、数据平滑扩容和业务无感知的读写分离。这些特点正是公司当前需要的。改用DDM服务之后,各方面的性能都有很大的提升。但是,公司一部分代码使用的是PHP语言,而PHP语言对长连接和客户端负载均衡的支持不是很好[3]。为了解决这个问题,打算是用LVS做一个负载均衡,通过LVS连接DDM服务。花了将近一周的时间将LVS相关背景了解清楚,并搭建成功,业务运行正常。这篇文章详细介绍了搭建过程,并且对LVS+keepalive从个人理解的角度做了介绍,希望对同辈中人能略有帮助。
LVS+Keeplive理论知识
一、LVS理论基础
1.LVS是什么
The Linux Virtual Server(LVS) is a highly scalable and highly available server built on a cluster of real servers, with the load balancer running on the Linux operating system. The architecture of the server cluster is fully transparent to end users, and the users interact as if it were a single high-performance virtual server. For more information, click here.
LVS官网的介绍[4],个人理解,LVS提供一种从Linux内核态支持的高可用、高转发效率的负载均衡。本身源码是开源的GPL协议。值得一提的,LVS是是国人章文嵩发起的一个开源项目。
【问】LVS工作在TCP/IP的哪一层?
【答】LVS有多种工作模式,不能严格的说工作在哪一层。简单说,LVS-NAT工作在IP层,LVS-DR工作在数据链路层,LVS-TUN工作在IP层。
【问】LVS能负载多少RealServer?
【答】不同的工作模式转发性能不一样,LVS-DR号称可以支持200+以上节点。
如下对LVS的几种工作模式做个简单的介绍,内容均来自“简书”“酱油菠菜”的一篇文章:https://www.jianshu.com/p/8a61de3f8be9。目前是看到的最简清晰的介绍了:
LVS的3种工作模式,各自有自己的适用场景,目前用的比较多是LVS-DR模式,DR模式也是3中模式中性能最高的。
2.LVS-NAT

原理:
基于ip伪装MASQUERADES,原理是多目标DNAT。
所以请求和响应都经由Director调度器。
优点:
●支持端口映射
●RS可以使用任意操作系统
●节省公有IP地址。
RIP和DIP都应该使用同一网段私有地址,而且RS的网关要指向DIP。
使用nat另外一个好处就是后端的主机相对比较安全。
缺点:
请求和响应报文都要经过Director转发;极高负载时,Director可能成为系统瓶颈。
就是效率低的意思。
3.LVS-TUN

原理:
基于隧道封装技术。在IP报文的外面再包一层IP报文。
当Director接收到请求的时候,选举出调度的RealServer
当接受到从Director而来的请求时,RealServer则会使用lo接口上的VIP直接响应CIP。
这样CIP请求VIP的资源,收到的也是VIP响应。
优点:
●RIP、VIP、DIP都应该使用公网地址,且RS网关不指向DIP;
●只接受进站请求,解决了LVS-NAT时的问题,减少负载。
●请求报文经由Director调度,但是响应报文不需经由Director。
缺点:
●不指向Director所以不支持端口映射。
●RS的OS必须支持隧道功能。
●隧道技术会额外花费性能,增大开销。
3.LVS-DR

原理:
当Director接收到请求之后,通过调度方法选举出RealServer。
讲目标地址的MAC地址改为RealServer的MAC地址。
RealServer接受到转发而来的请求,发现目标地址是VIP。RealServer配置在lo接口上。
处理请求之后则使用lo接口上的VIP响应CIP。
优点:
●RIP可以使用私有地址,也可以使用公网地址。
●只要求DIP和RIP的地址在同一个网段内。
●请求报文经由Director调度,但是响应报文不经由Director。
●RS可以使用大多数OS
缺点:
●不支持端口映射。
●不能跨局域网。
二、Keepalive简介
Keepalive的官网介绍如下:
Keepalived is a routing software written in C. The main goal of this project is to provide simple and robust facilities for loadbalancing and high-availability to Linux system and Linux based infrastructures. Loadbalancing framework relies on well-known and widely used Linux Virtual Server (IPVS) kernel module providing Layer4 loadbalancing. Keepalived implements a set of checkers to dynamically and adaptively maintain and manage loadbalanced server pool according their health. On the other hand high-availability is achieved by VRRP protocol. VRRP is a fundamental brick for router failover. In addition, Keepalived implements a set of hooks to the VRRP finite state machine providing low-level and high-speed protocol interactions. Keepalived frameworks can be used independently or all together to provide resilient infrastructures.
简单概括如下:
●Keepalive是C语言写的
●Keepalive被广泛应用于和LVS一起提供4层的负载均衡
● Keepalive可以探测负载均衡节点的健康状态,管理负载均衡节点
●通过VRRP协议提供高可靠
从上文的介绍可以看出,使用LVS+Keepalive可以搭建一个具备故障自动迁移的高可用负载均衡。本篇主要介绍了一些基础理论知识,下一篇会详细的说明怎么样一步步使用LVS+Keepalive+DDM搭建高性能的数据库中间件,敬请期待。
参考文献
[1]. 华为云DDM官网帮助文档:https://support.huaweicloud.com/productdesc-ddm/zh-cn_topic_0063320859.html
[2]. 华为云DDM性能指标:https://support.huaweicloud.com/bestpractice-ddm/zh-cn_topic_0062151536.html
[3]. 如何连接华为云DDM实例:https://support.huaweicloud.com/usermanual-ddm/zh-cn_topic_0055087669.html
[4]. LVS官网:http://www.linuxvirtualserver.org/
[5]. Linux服务器集群系统(一):http://www.linuxvirtualserver.org/zh/lvs1.html
[6]. Keepalive官网:http://www.keepalived.org/
打造极致性能数据库中间件丨LVS+Keepalive+华为云DDM之理论篇的更多相关文章
- 分布式数据库中间件DDM的实现原理
随着数据量不断增大,传统的架构模式难以解决业务量不断增长所带来的问题,特别是在业务成线性.甚至指数级上升的情况.此时我们不得不通过水平扩展,把数据库放到不同服务器上来解决问题,也就是我们说的数据库中间 ...
- 对话DDM:分布式数据库中间件全解析
进入云计算时代,传统的数据库在性能和容量等方面已无法满足企业的要求,随着数据量的不断骤增,易于扩展.拆分的数据库解决方案对于企业的云化转型更是显得尤为重要.为使企业应用上云更简单,分布式数据库中间件D ...
- 性能达到原生 MySQL 七倍,华为云 Taurus 技术解读【华为云技术分享】
版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/devcloud/article/detai ...
- 王院生:Apache APISIX 微服务网关极致性能架构解析
2019 年 10 月 27 日,又拍云联合 Apache APISIX 社区举办 API 网关与高性能服务最佳实践丨Open Talk 杭州站活动,Apache APISIX PPMC 成员王院生做 ...
- Apache ShardingSphere:由开源驱动的分布式数据库中间件生态
2021 年 7 月 21 日 2021 亚马逊云科技中国峰会现场,SphereEx 联合创始人.Apache ShardingSphere PMC 潘娟受邀参与此次峰会,以<Apache Sh ...
- MyCat:取代Cobar数据库中间件
什么是MyCAT?简单的说,MyCAT就是: 一个彻底开源的,面向企业应用开发的“大数据库集群” 支持事务.ACID.可以替代Mysql的加强版数据库 ? 一个可以视为“Mysql”集群的企业级数据库 ...
- 分布式数据库中间件–(2) Cobar与client握手身份验证
Cobar启动完毕,监听特定端口.整个认证的流程图: NIOAcceptor类继承自Thread类,该类的对象会以线程的方式执行,进行连接的监听. NIOAcceptor启动的初始化步骤例如以下: 1 ...
- mysql数据库中间件研究
随着互联网的发展,数据量的不断增大. 单台实例已经远远无法满足业务的需要. 对数据库分库分表的需求不断的增加随之而来的就是数据库中间件的开发. 一. 单台实例主要面临下面几个问题: 1. 数据量太大 ...
- MyCat数据库中间件 - 分库
MyCat MyCat用于解耦分布式数据库与java,比如分库分表以后,需要查询某条数据时,需要java根据需要查的数据先计算去哪个库查,然而有了Mycat就不用自己计算怎么存储,怎么查询了.MyCa ...
随机推荐
- 从零实现一个http服务器
我始终觉得,天生的出身很重要,但后天的努力更加重要,所以如今的很多“科班”往往不如后天努力的“非科班”.所以,我们需要重新给“专业”和“专家”下一个定义:所谓专业,就是别人搞你不搞,这就是你的“专业” ...
- minGW64编译Qt
1.安装minGW64,设置bin目录到环境变量Path 2.cmd 到qt的Src目录 3.configure -debug-and-release -opensource -prefix &quo ...
- ubuntu修改网卡名称ensX为eth0
1.sudo nano /etc/default/grub 找到GRUB_CMDLINE_LINUX="" 改为GRUB_CMDLINE_LINUX="net.ifnam ...
- Go:类型断言
一.基本介绍 类型断言:由于接口是一般类型,不知道具体类型,如果要转成具体类型,就需要使用类型断言. 如果希望将一个空接口类型重新转换成对应的类型,那么需要使用类型断言,能转换成功是因为这个空接口原先 ...
- qemu-img命令
qemu-img是QEMU的磁盘管理工具,在qemu-kvm源码编译后就会默认编译好qemu-img这个二进制文件.qemu-img也是QEMU/KVM使用过程中一个比较重要的工具,本节对其用法和实践 ...
- nginx 配置虚拟机 支持pathinfo
server { server_name shopx.local *.shopx.local; charset utf-8; root /Users/x/www/php/shopx.local/sho ...
- Spring拓展接口之BeanPostProcessor,我们来看看它的底层实现
前言 开心一刻 小明:“妈,我被公司开除了”,妈:“啊,为什么呀?”, 小明:“我骂董事长是笨蛋,公司召开高层会议还要起诉我”,妈:“告你诽谤是吧?”,小明:“不是,他们说要告我泄露公司机密” Bea ...
- 大数据学习——有两个海量日志文件存储在hdfs
有两个海量日志文件存储在hdfs上, 其中登陆日志格式:user,ip,time,oper(枚举值:1为上线,2为下线):访问之日格式为:ip,time,url,假设登陆日志中上下线信息完整,切同一上 ...
- 大数据学习——java操作hdfs环境搭建以及环境测试
1 新建一个maven项目 打印根目录下的文件的名字 添加pom依赖 pom.xml <?xml version="1.0" encoding="UTF-8&quo ...
- java.lang.ClassNotFoundException: com.microsoft.jdbc.sqlserver.SQLServerDriver
今天这个问题排查了好大一会,开始网上有人这么说: https://www.cnblogs.com/rookiebob/p/3749396.html 但是仍未能解决我的问题, 最后发现是只在外层的pom ...