openGauss通过VIP实现的故障转移

📢📢📢📣📣📣
哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA及大数据工作经验
一位上进心十足的【大数据领域博主】!😜😜😜
中国DBA联盟(ACDU)成员,目前服务于工业互联网
擅长主流Oracle、MySQL、PG、高斯及Greenplum运维开发,备份恢复,安装迁移,性能优化、故障应急处理等。
✨ 如果有对【数据库】感兴趣的【小可爱】,欢迎关注【IT邦德】💞💞💞
❤️❤️❤️感谢各位大可爱小可爱!❤️❤️❤️

文章目录

  • 前言
    • 📣 ## 1.文章前言
    • 📣 ## 2.CM管理两节
      • ✨ 2.1 何为CM
      • ✨ 2.2 CM的特点
      • ✨ 2.3 XML配置文件
    • 📣 ## 3.集群VIP管理
      • ✨ 3.1 增加sudo权限
      • ✨ 3.2 添加VIP
      • ✨ 3.3 配置参数
      • ✨ 3.4 重启集群
    • 📣 ## 4.测试故障转移

前言

本文详细阐述了openGauss通过CM管理,实现的VIP故障转移全过程

📣 ## 1.文章前言

随着目前信创产业的发展,应项目的需求,通过高可用的方式实现数据库的故障转移。于是花了点时间研究,通过CM管理,实现了VIP故障转移全过程,在经历了这次故障转移之后,我觉得有必要分享我在此过程中获得的见解

📣 ## 2.CM管理两节

✨ 2.1 何为CM

CM(Cluster Manager)是一款数据库管理模块。支持自定义资源监控,提供了数据库主备的状态监控、网络通信故障监控、文件系统故障监控、故障自动主备切换等能力。提供了丰富的数据库管理能力,如节点、实例级的启停,数据库实例状态查询、主备切换、日志管理等。提供了通过REST接口远程查询和接收集群状态的能力。

✨ 2.2 CM的特点

高可用:CM易用性提升支持一键式关闭CM集群服务;支持和内核的安装部署解耦;支持按事件调用用户自定义脚本;支持CM组件单独升级,增强数据库集群可靠性;CM根据配置信息,支持用户自定义组件的监控和管需要注意的是,一主一备模式下,CM只支持基本的安装,启停,检测能力,其他功能不支持。高可用:CM支持VIP管理通过VIP可以直接找到主机,连接重连更准更快(毫秒级别);支持主机故障,CM选出新主时,VIP漂移到新的主上;当出现双主时,依然可以通过VIP访问到唯一一个主机,降低了双主丢数据的风险。

✨ 2.3 XML配置文件

<?xml version="1.0" encoding="UTF-8"?>
<ROOT><!-- openGauss整体信息 --><CLUSTER><!-- 数据库名称 --><PARAM name="clusterName" value="opengauss" /><!-- 数据库节点名称(hostname) --><PARAM name="nodeNames" value="opengauss51m,opengauss51b" /><!-- 数据库安装目录,与数据库所需其它路径相互独立,没有包含关系--><PARAM name="gaussdbAppPath" value="/openGauss/app" /><!-- 日志目录--><PARAM name="gaussdbLogPath" value="/openGauss/log/omm" /><!-- 临时文件目录--><PARAM name="tmpMppdbPath" value="/openGauss/tmp"/><!-- 数据库工具目录--><PARAM name="gaussdbToolPath" value="/openGauss/om" /><!-- 数据库core文件目录--><PARAM name="corePath" value="/openGauss/corefile"/><!-- 节点IP,与数据库节点名称列表一一对应 --><PARAM name="backIp1s" value="192.168.6.11,192.168.6.12"/> </CLUSTER><!-- 每台服务器上的节点部署信息 --><DEVICELIST><!-- 节点1上的部署信息 --><DEVICE sn="opengauss51m"><!-- 节点1的主机名称 --><PARAM name="name" value="opengauss51m"/><!-- 节点1所在的AZ及AZ优先级 --><PARAM name="azName" value="AZ1"/><PARAM name="azPriority" value="1"/><!-- 节点1的IP,如果服务器只有一个网卡可用,将backIP1和sshIP1配置成同一个IP --><PARAM name="backIp1" value="192.168.6.11"/><PARAM name="sshIp1" value="192.168.6.11"/><!-- cm主 --><PARAM name="cmsNum" value="1"/><PARAM name="cmDir" value="/openGauss/cm"/><PARAM name="cmServerPortBase" value="15300"/><PARAM name="cmServerListenIp1" value="192.168.6.11,192.168.6.12"/><PARAM name="cmServerHaIp1" value="192.168.6.11,192.168.6.12"/><!-- cmServerlevel目前只支持1 --><PARAM name="cmServerlevel" value="1"/><!-- cms主及所有备的hostname --><PARAM name="cmServerRelation" value="opengauss51m,opengauss51b"/><!--dn--><PARAM name="dataNum" value="1"/><PARAM name="dataPortBase" value="15400"/><PARAM name="dataNode1" value="/openGauss/data/dn,opengauss51b,/openGauss/data/dn"/><PARAM name="dataNode1_syncNum" value="0"/></DEVICE><!-- 节点2上的节点部署信息,其中"name"的值配置为主机名称 --><DEVICE sn="opengauss51b"><!-- 节点2的主机名称 --><PARAM name="name" value="opengauss51b"/><!-- 节点2所在的AZ及AZ优先级 --><PARAM name="azName" value="AZ1"/><PARAM name="azPriority" value="1"/><!-- 节点2的IP,如果服务器只有一个网卡可用,将backIP1和sshIP1配置成同一个IP --><PARAM name="backIp1" value="192.168.6.12"/><PARAM name="sshIp1" value="192.168.6.12"/><!-- cm --><PARAM name="cmDir" value="/openGauss/cm"/><PARAM name="cmServerPortStandby" value="15300"/></DEVICE></DEVICELIST>
</ROOT>

📣 ## 3.集群VIP管理

✨ 3.1 增加sudo权限

给omm用户增加sudo权限,所有节点都执行
echo "omm ALL=(ALL) NOPASSWD:ALL">>/etc/sudoers
echo "Cmnd_Alias COMMAND_FLAG = /usr/sbin/ifconfig" >> /etc/sudoers

✨ 3.2 添加VIP

ifconfig ens33:15400 192.168.6.14 netmask 255.255.255.0 upens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 192.168.6.11  netmask 255.255.255.0  broadcast 192.168.6.255inet6 fe80::a281:1dad:5f3f:1be8  prefixlen 64  scopeid 0x20<link>ether 00:0c:29:56:78:64  txqueuelen 1000  (Ethernet)RX packets 70129  bytes 10190915 (9.7 MiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 445322  bytes 1129835756 (1.0 GiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0ens33:15400: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 192.168.6.14  netmask 255.255.255.0  broadcast 192.168.6.255ether 00:0c:29:56:78:64  txqueuelen 1000  (Ethernet
给集群添加VIP资源 VIP作为openGauss的资源管理
cm_ctl res --add --res_name="VIP_az1" --res_attr="resources_type=VIP,float_ip=192.168.6.14"
将每个实例加到资源中
cm_ctl res --edit --res_name="VIP_az1" --add_inst="node_id=1,res_instance_id=6001" --inst_attr=base_ip=192.168.6.11
cm_ctl res --edit --res_name="VIP_az1" --add_inst="node_id=2,res_instance_id=6002" --inst_attr=base_ip=192.168.6.12
[omm@opengauss51m ~]$ cm_ctl res --check
cm_ctl: resource config is valid.执行check完成后,在cmdataPath/cm_agent/目录下会生成一个自定义资源配置文件cm_resource.json,
检查完成没有错误后,需要手动scp将该文件分发到其他节点

✨ 3.3 配置参数

配置/openGauss/data/dn/pg_hba.conf
在数据库pg_hba.conf文件中以sha256方式添加floatIphost    all    all    192.168.6.14/32     sha256--cm集群故障自动切换配置前提条件,通过三方网管实现
cd /openGauss/cm/cm_server
vi cm_server.confthird_party_gateway_ip = 192.168.6.8
cms_enable_failover_on2nodes = true         
cms_network_isolation_timeout = 20  

✨ 3.4 重启集群

[omm@opengauss51m ~]$ gs_om -t stop
Stopping cluster.
=========================================
Successfully stopped cluster.
=========================================
End stop cluster.
[omm@opengauss51m ~]$ gs_om -t start
Starting cluster.
======================================================================
Successfully started primary instance. Wait for standby instance.
======================================================================
.
Successfully started cluster.
======================================================================
cluster_state      : Normal
redistributing     : No
node_count         : 2
Datanode Stateprimary           : 1standby           : 1secondary         : 0cascade_standby   : 0building          : 0abnormal          : 0down              : 0Successfully started cluster.查询VIP在哪个节点
[omm@opengauss51m ~]$ cm_ctl show[  Network Connect State  ]Network timeout:       6s
Current CMServer time: 2023-11-18 21:03:20
Network stat('Y' means connected, otherwise 'N'):
|  \  |  Y  |
|  Y  |  \  |[  Node Disk HB State  ]Node disk hb timeout:    200s
Current CMServer time: 2023-11-18 21:03:21
Node disk hb stat('Y' means connected, otherwise 'N'):
|  N  |  N  |[  FloatIp Network State  ]node            instance base_ip      float_ip_name float_ip     
-----------------------------------------------------------------
1  opengauss51m 6001     192.168.6.11 VIP_az1       192.168.6.14 

📣 ## 4.测试故障转移

##本次实验,我们直接对主库关机,验证高可用
[omm@opengauss51b ~]$ gs_om -t status --detail
[  CMServer State   ]node            node_ip         instance                     state
--------------------------------------------------------------------
1  opengauss51m 192.168.6.11    1    /openGauss/cm/cm_server Down
2  opengauss51b 192.168.6.12    2    /openGauss/cm/cm_server Primary[   Cluster State   ]cluster_state   : Degraded
redistributing  : No
balanced        : No
current_az      : AZ_ALL[  Datanode State   ]node            node_ip         instance                state            
-------------------------------------------------------------------------
1  opengauss51m 192.168.6.11    6001 /openGauss/data/dn P Down    Unknown
2  opengauss51b 192.168.6.12    6002 /openGauss/data/dn S Primary Normal##备库变为主库,VIP也飘逸过来了                                               [omm@opengauss51b ~]$ cm_ctl show[  Network Connect State  ]Network timeout:       6s
Current CMServer time: 2023-11-18 22:41:44
Network stat('Y' means connected, otherwise 'N'):
|  \  |  Y  |
|  Y  |  \  |[  Node Disk HB State  ]Node disk hb timeout:    200s
Current CMServer time: 2023-11-18 22:41:45
Node disk hb stat('Y' means connected, otherwise 'N'):
|  N  |  N  |[  FloatIp Network State  ]node            instance base_ip      float_ip_name float_ip     
-----------------------------------------------------------------
2  opengauss51b 6002     192.168.6.12 VIP_az1       192.168.6.14 ##然后我们启动主库,恢复集群--启动集群
[omm@opengauss51m ~]$ gs_om -t start
[omm@opengauss51b ~]$ gs_om -t status --detail
[  CMServer State   ]node            node_ip         instance                     state
--------------------------------------------------------------------
1  opengauss51m 192.168.6.11    1    /openGauss/cm/cm_server Standby
2  opengauss51b 192.168.6.12    2    /openGauss/cm/cm_server Primary[   Cluster State   ]cluster_state   : Normal
redistributing  : No
balanced        : No
current_az      : AZ_ALL[  Datanode State   ]node            node_ip         instance                state            
-------------------------------------------------------------------------
1  opengauss51m 192.168.6.11    6001 /openGauss/data/dn P Standby Normal
2  opengauss51b 192.168.6.12    6002 /openGauss/data/dn S Primary Normal

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

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

相关文章

浅谈WPF之控件模板和数据模板

WPF不仅支持传统的Windows Forms编程的用户界面和用户体验设计&#xff0c;同时还推出了以模板为核心的新一代设计理念。在WPF中&#xff0c;通过引入模板&#xff0c;将数据和算法的“内容”和“形式”进行解耦。模板主要分为两大类&#xff1a;数据模板【Data Template】和控…

算法设计与分析复习--递归与分治(二)

文章目录 上一篇归并排序统计逆序对快速排序线性时间选择最接近点对问题一维二维 循环赛日程表下一篇 上一篇 算法设计与分析复习–递归与分治(一) 归并排序 问题特点&#xff1a;局部有序到整体有序 AcWing787.归并排序 #include <iostream> #include <cstring>…

信安.网络安全.UDP协议拥塞

第一部分 如何解决UDP丢包问题 一、UDP 报文格式 每个 UDP 报文分为 UDP 报头和 UDP 数据区两部分。报头由 4 个 16 位长&#xff08;2 字节&#xff09;字段组成&#xff0c;分别说明该报文的源端口、目的端口、报文长度和校验值。UDP 报文格式如图所示。 UDP 报文中每个…

【如何学习Python自动化测试】—— 页面元素定位

接上篇自动化测试环境搭建&#xff0c;现在我们介绍 webdriver 对浏览器操作的 API。 2、 页面元素定位 通过自动化操作 web 页面&#xff0c;首先要解决的问题就是定位到要操作的对象&#xff0c;比如要模拟用户在页面上的输入框中输入一段字符串&#xff0c;那就必须得定位到…

FPGA模块——IIC协议(读写PCF8591)

FPGA模块——IIC协议&#xff08;读取PCF8591&#xff09; PCF8591/AT8591芯片对iic协议的使用 PCF8591/AT8591芯片 低功耗8位CMOS数据采集设备&#xff0c;4路模拟输入&#xff0c;1路模拟输出&#xff0c;分时多路复用&#xff0c;读取数据用串型iic总线接口&#xff0c;最大…

RT-Thread STM32F407 BMI088--SPI

BMI088是一款高性能6轴惯性传感器&#xff0c;由16位数字三轴24g加速度计和16位数字三轴2000/ s陀螺仪组成。 这里用SPI来驱动BMI088进行数据解读 第一步&#xff0c;首先在 RT-Thread Settings中进行配置 第二步&#xff0c;退出RT-Thread Settings&#xff0c;进入board.h…

UiPath Studio 2023.10 Crack

UiPath Studio是一款功能强大且用户友好的集成开发环境 (IDE)&#xff0c;专为机器人流程自动化 (RPA) 设计。它由自动化技术领域的领先公司UiPath开发。 以下是 UiPath Studio 的一些主要功能和组件&#xff1a; 图形用户界面 (GUI)&#xff1a;UiPath Studio 具有直观且用户友…

Kafka(四)消费者消费消息

文章目录 如何确保不重复消费消息&#xff1f;消费者业务逻辑重试消费者提交自定义反序列化类消费者参数配置及其说明重要的参数session.time.ms和heartbeat.interval.ms和group.instance.id增加消费者的吞吐量消费者消费的超时时间和poll()方法的关系 消费者消费逻辑启动消费者…

buildadmin+tp8表格操作(2)----表头上方按钮绑定事件处理,实现功能(全选/全不选)

buildAdmin 表格上方的按钮添加完成之后&#xff0c; 就要对其实现功能了 有了上面的说明&#xff0c; 我就只要得到了 ref 中的表格对象&#xff0c; 就可以象el-table 一样来操作表格的属性和方法了 我们来实现上面的几个按钮的方法 全选/全不选 上面就是添加按钮功能的全过…

压缩感知学习

对稀疏和稀疏矩阵的认识 采样率80Mhz 采样间隔12.5ns,样本数量为800个 一帧时长800*12.5ns 10us 频域间隔 1/10us 0.1Mhz 第一个点的频率是0 第21个点的频率是2Mhz 在只考虑正半轴&#xff0c;也即400个点的情况下&#xff0c;分别让不同的频点取1 &#xff0c;然后对其进…

深度学习——(生成模型)DDPM

前置数学知识 1、先验概率和后验概率 先验概率&#xff1a;根据以往经验和分析得到的概率,它往往作为“由因求果”问题中的“因”出现&#xff0c;如 q ( x t ∣ x t − 1 ) q(x_t|x_{t-1}) q(xt​∣xt−1​) 后验概率&#xff1a;指在得到“结果”的信息后重新修正的概率,是…

【2023云栖】黄博远:阿里云人工智能平台PAI年度发布

本文根据2023云栖大会演讲实录整理而成&#xff0c;演讲信息如下&#xff1a; 演讲人&#xff1a;黄博远 | 阿里云计算平台事业部资深产品专家、阿里云人工智能平台PAI产品负责人 演讲主题&#xff1a;阿里云人工智能平台PAI年度发布 AIGC是我们这个时代的新机遇 今年云栖大…