写点什么

【我和 openGauss 的故事】openGauss5.0 特性:CM 支持 VIP 仲裁特性

作者:daydayup
  • 2023-08-10
    北京
  • 本文字数:2079 字

    阅读完需:约 7 分钟

杨凯同学 [openGauss](javascript:void(0);) 2023-08-03 16:49 发表于四川


收录于合集 #第六届 openGauss 技术文章征集初审合格文章 62 个

1.名词概念

1.1 什么是 vip

VIP即Virtual IP Address,是实现HA(高可用)数据库的一种方案高可用的目的是通过技术手段避免因为数据库出现故障而导致停止对外服务,一般实现方式是部署备用数据库,在主数据库出现故障时接管业务。VIP用于向客户端提供一个固定的“虚拟”访问地址,以避免后端主数据库发生切换时对客户端的影响。
复制代码

1.2 什么是 HA

HA(High Availability)指的是通过尽量缩短因日常维护操作(计划)和突发的系统崩溃(非计划)所导致的停机时间,以提高系统和应用的可用性。HA系统是目前企业防止核心数据库因故障停机的最有效手段。
复制代码

1.3 vip 实现原理

通常IP地址是和物理网卡绑定的,而VIP相反,是不与实际网卡绑定的的IP地址。是通过ARP协议来完成的。也就是说这个VIP可以映射到的MAC地址是可以控制的。VIP在内网中被动态的映射到不同的MAC地址上,也就是映射到不同的机器设备上,那么就可以起到负载均衡的效果啦。
复制代码

2.vip 在 openGauss 中的实现方式

随主DN状态进行动态绑定和切换,即如果DN主发生了切换,原主DN上的虚拟IP可能动态绑定到新主DN上,用户可以只通过该IP与数据库连接,不用感知数据库在哪个节点上。通过VIP可以直接找到主机,连接重连更准更快(毫秒级别);支持主机故障,CM选出新主时,VIP漂移到新的主上;当出现双主时,依然可以通过VIP访问到唯一一个主机,降低了双主丢数据的风险。仲裁流程:原主:在原主上解绑VIP。把VIP从数据库配置项"listen_addresses"中删除新主:在新主上用别名(网卡名:DN端口号)方式绑定VIP。把VIP添加到数据库配置项 “listen_addresses” 中。
复制代码

3.vip 部署

3.1 环境介绍


3.2 vip 仲裁特性部署

3.1 ifconfig 命令提权

[root@k8s-master ~]# which ifconfig/usr/sbin/ifconfig[root@k8s-master ~]# visudoomm  ALL=(root)NOPASSWD: /usr/sbin/ifconfig
复制代码

3.2 在主节点 192.168.10.2 添加 vip

sudo /usr/sbin/ifconfig eth1:15400 192.168.10.5 netmask 255.255.255.0 up
复制代码


3.3 在主节点 192.168.10.2 新增 floatIp 资源

cm_ctl res --add --res_name="VIP_az1" --res_attr="resources_type=VIP,float_ip=192.168.10.5"cm_ctl res --edit --res_name="VIP_az1" --add_inst="node_id=1,res_instance_id=6001" --inst_attr="base_ip=192.168.10.2" cm_ctl res --edit --res_name="VIP_az1" --add_inst="node_id=2,res_instance_id=6002" --inst_attr="base_ip=192.168.10.3"
复制代码

3.4 检查配置是否正确

cm_ctl res --checkcm_ctl: resource config is valid.
复制代码


3.5 把 cm_resource.json 文件传输到备节点

cd /dbms/huawei/opengauss/install/cm/cm_agent/lscm_agent.conf  cm_agent.pid  cm_resource.jsoncat cm_resource.json{    "resources":    [{                    "name": "VIP_az1",                    "resources_type":       "VIP",                    "instances":    [{                                    "node_id":      1,                                    "res_instance_id":      6001,                                    "inst_attr":    "base_ip=192.168.10.2"                            }, {                                    "node_id":      2,                                    "res_instance_id":      6002,                                    "inst_attr":    "base_ip=192.168.10.3"                            }],                    "float_ip":     "192.168.10.5"            }]}
scp -r cm_resource.json 192.168.10.3:/dbms/huawei/opengauss/install/cm/cm_agent/cm_resource.json
复制代码

3.6 配置 pg_hba.conf

--二节点都需要修改cd /dbms/huawei/opengauss/install/data/dnvi pg_hba.conf
复制代码


3.7 检查 VIP 是否绑定成功

4.连接 VIP 进行测试

[omm@k8s-node1 ~]$  gsql -d postgres -h 192.168.10.5  -U yangkai -p 15400 -W YangKai9999gsql ((openGauss 5.0.0 build a07d57c3) compiled at 2023-03-29 03:07:56 commit 0 last mr  )SSL connection (cipher: ECDHE-RSA-AES128-GCM-SHA256, bits: 128)Type "help" for help.openGauss=>  insert into yangkai values (1,'杨凯'); openGauss=> select * from yangkai;id | name ----+------1 | 杨凯

--切换主备
复制代码




[omm@k8s-node1 ~]$  gsql -d postgres -h 192.168.10.5  -U yangkai -p 15400 -W YangKai9999gsql ((openGauss 5.0.0 build a07d57c3) compiled at 2023-03-29 03:07:56 commit 0 last mr  )SSL connection (cipher: ECDHE-RSA-AES128-GCM-SHA256, bits: 128)Type "help" for help.openGauss=>  insert into yangkai values (3,'张波'); openGauss=> select * from yangkai;id | name ----+------ 1 | 杨凯 3 | 张波(2 rows)
复制代码

5.总结

mysql和PG数据库如果想实现vip功能,需要安装第三方工具例如MHA、keepalived等工具,opengauss完全不需要,opengaus
复制代码


用户头像

daydayup

关注

还未添加个人签名 2023-07-18 加入

还未添加个人简介

评论

发布
暂无评论
【我和openGauss的故事】openGauss5.0特性:CM支持VIP仲裁特性_daydayup_InfoQ写作社区