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

294681f0-306a-4dff-9eb9-fc6ac3269d50.png

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

cf1d1720-2938-4040-adb2-a9495857717d.png

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.

00af19db-7382-406a-9b49-4d7ab2a98914.png

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

3d39fdf4-2afc-4ee5-a5f7-5fbbc63b0335.png

3.7检查VIP是否绑定成功

7cd2aa97-4c77-4054-b665-2298f06dc8ac.png

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 | 杨凯--切换主备

49292331-1ad2-4bd9-a799-5baa7526215c.png
bccbe482-ae1f-457e-aac4-9b3ae4097205.png

[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完全不需要,opengauss的vip完全自动化,VIP随主DN状态进行动态绑定和切换,即如果DN主发生了切换,原主DN上的虚拟IP可能动态绑定到新主DN上,用户可以只通过该IP与数据库连接,不用感知数据库在哪个节点上。

本文分享自微信公众号 - openGauss(openGauss)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“ OSC源创计划 ”,欢迎正在阅读的你也加入,一起分享。

点击阅读全文
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐