一文帮你理解openGauss的高可用方案

2023年 8月 15日 117.8k 0

高可用方案

对于openGauss的高可用集群进行研究得出如上图所示的高可用方案:
采用keepalived + HaProxy + partoni + DCS(etcd)组成 数据库采用openGauss。
可划分为三个部分:

第一部分是keepalived+HaProxy

keepalived为客户端提供虚拟IP,HaProxy提供负载均衡,一般是两个工具部署在一起。如果keepalived1 + HaProxy不可用,则会keepalived服务自动进行故障转移到keepalived2 + HaProxy的服务器上,keepalived也负责提供虚拟IP,对用户显示的是一致的虚拟IP。HaProxy与各个集群的主节点相连,进行读写分离、负载均衡处理。

虚拟ip:虚拟IP技术,就是一个未分配给客户端真实主机的IP,也就是说对外提供数据库服务器除了有一个真实IP外还有一个虚IP,使用任意一个IP都可以连接到这台主机。当服务器发生故障无法对外提供服务时,动态将这个虚IP切换到备用主机。
连接保持:开启连接保持功能后,当服务与旧主节点(即高可用切换前的主节点)连接断开时,当前服务与前端应用的连接保持不断(即应用程序看到的Session),同时服务会与新主节点(即高可用切换后的主节点)重新建立连接并且恢复之前的会话状态,以实现对应用程序端无感知的高可用切换。
负载均衡:含义就是指通过调度算法将负载(工作任务)进行平衡、分摊到多个操作单元上进行运行,从而协同完成工作任务。负载均衡构建在原有网络结构之上,它提供了一种透明且廉价有效的方法扩展服务器和网络设备的带宽、加强网络数据处理能力、增加吞吐量、提高网络的可用性和灵活性。

具体的原理可以查看:我之前一篇文章介绍:Keepalived与HaProxy的协调合作原理分析:https://www.modb.pro/db/625178

通过具体使用,体会了openguass配合keepalived的高可用性。
产生vip漂移过程两种情况
整个过程中,对于客户端来说,不知道对于两台调度服务器发生了切换,客户端保持连接同一个vip,完成自身请求。

在这里面涉及两次切换,

①对于备节点收不到主节点的心跳消息时,触发定时器超时(vrrp_dispatcher_read_timeout),判断当前节点状态为备节点,执行升主操作(vrrp_gotomaster)。

service keepalived stop
ip addr 查看vip在哪台服务器上
systemctl start keepalived
systemctl status keepalived
systemctl stop keepalived

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论