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

老老老JR老北
发布于 2023-9-8 14:49
浏览
0收藏

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 环境介绍

ip地址

角色

192.168.10.2

主节点物理ip

192.168.10.3

备节点物理ip

192.168.10.5

vip

【我和openGauss的故事】openGauss5.0特性:CM支持VIP仲裁特性-鸿蒙开发者社区

3.2 vip 仲裁特性部署

3.2.1 ifconfig 命令提权

[root@k8s-master ~]# which ifconfig
/usr/sbin/ifconfig
[root@k8s-master ~]# visudo
omm  ALL=(root)NOPASSWD: /usr/sbin/ifconfig
3.2.2在主节点192.168.10.2 添加vip

sudo /usr/sbin/ifconfig eth1:15400 192.168.10.5 netmask 255.255.255.0 up

【我和openGauss的故事】openGauss5.0特性:CM支持VIP仲裁特性-鸿蒙开发者社区

3.2.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.2.4检查配置是否正确

cm_ctl res --check
cm_ctl: resource config is valid.

【我和openGauss的故事】openGauss5.0特性:CM支持VIP仲裁特性-鸿蒙开发者社区

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

cd /dbms/huawei/opengauss/install/cm/cm_agent/
ls
cm_agent.conf  cm_agent.pid  cm_resource.json
cat 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.2.6 配置pg_hba.conf

--二节点都需要修改
cd /dbms/huawei/opengauss/install/data/dn
vi pg_hba.conf

【我和openGauss的故事】openGauss5.0特性:CM支持VIP仲裁特性-鸿蒙开发者社区

3.2.7检查VIP是否绑定成功

【我和openGauss的故事】openGauss5.0特性:CM支持VIP仲裁特性-鸿蒙开发者社区

4.连接VIP进行测试

[omm@k8s-node1 ~]$  gsql -d postgres -h 192.168.10.5  -U yangkai -p 15400 -W YangKai9999
gsql ((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 | 杨凯


--切换主备

【我和openGauss的故事】openGauss5.0特性:CM支持VIP仲裁特性-鸿蒙开发者社区

【我和openGauss的故事】openGauss5.0特性:CM支持VIP仲裁特性-鸿蒙开发者社区

[omm@k8s-node1 ~]$  gsql -d postgres -h 192.168.10.5  -U yangkai -p 15400 -W YangKai9999
gsql ((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完全不需要,




文章转载自公众号:openGauss

分类
标签
已于2023-9-8 14:49:51修改
收藏
回复
举报
回复
    相关推荐