openGauss5.0特性:CM支持VIP仲裁特性

2023年 8月 15日 64.6k 0

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

杨凯同学 [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 环境介绍

ip地址 角色
192.168.10.2 主节点物理ip
192.168.10.3 备节点物理ip
192.168.10.5 vip

3.2 vip 仲裁特性部署

3.1 ifconfig 命令提权

[root@k8s-master ~]# which ifconfig
/usr/sbin/ifconfig
[root@k8s-master ~]# visudo
omm 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 --check
cm_ctl: resource config is valid.

3.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.6 配置pg_hba.conf

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

3.7检查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 | 杨凯

--切换主备


[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完全不需要,opengaus

相关文章

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

发布评论