4.1.1.1.3-PostgreSQL_XL高可用性

优质
小牛编辑
129浏览
2023-12-01

(1)GTM不可用导致整个Postgresql集群不可用。 (2)对于Coordinator,不一定需要需要实现高可用。 (3)对于DataNode,实现高可用的方式,外部使用统一IP访问,所以需要实现VIP。 (4)数据分库后,对于使用Postgresql单机进行存储的数据库,需要实现Postgresql服务高可用。 (5)防止出现脑裂,实现高可用的服务,在同一时刻仅有一台物理节点提供服务。对于开机自动重启的服务,需要在rc.local手动关闭。 (6)实现30s内自动主备切换,新修改数据不丢失,保证数据一致性。 (7)优点:只要两台GTM物理机器,便可实现无数次高可用。缺点:nfs成为单点,需要网络传输。

2. 软件准备

2.1 Keepalived

2.1.1 原理

安装了keepalived的节点,监听配置高可用服务的端口,服务可用的节点拥有虚拟IP,外部服务通过虚拟IP路由到该节点。

2.1.2 安装

本次测试是将数据节点存放在NFS上,同时只启动一个datanode。使用Keepalived对节点的健康程度进行监测,一旦发现节点死亡,启动备节点同时将虚拟ip进行漂移,在不重启postgres的情况下完成故障转移。 (1) keepalived配置 (2) 脚本编写

2.2 nfs(网络文件系统)

2.2.1 原理

启动了nfs服务的服务器中的某一目录,可在其他节点客户端被挂载,实现该目录在多节点间共享。

2.2.2 安装

客户端和服务器都安装rpcbind和nfs-utils,在服务器端的/etc/exports文件中写入要共享的文件夹如:/home/pgxl/postgres_test/data/dn *(rw,sync,no_root_squash),括号的配置意思是读写权限、同步在内存、无需root权限。在启动服务时要先启动rpcbind,再启动nfs。 systemctl start rpcbind systemctl start nfs mount -t nfs 192.168.1.149: /home/pgxl/postgres_test/data/dn dn

3. 高可用组件

3.1 GTM

3.1.1 基于共享存储的高可用方案

表1 GTM共享存储高可用架构服务列表 |IP|服务名| |------|------| |192.168.1.147|gtm1、keepalived| |192.168.1.149|gtm2、keepalived| |192.168.1.167|gtm_proxy1、coord1、dn1、nfs(共享存储)|

3.1.2 步骤:

(1)安装启动keepalived,参考本文2.1.2。 (2)安装启动nfs,参考本文2.2.2。 (3)安装Postgresql_XL集群,其中gtm1、gtm_proxy1、coord1和dn1,参考PostgreSQL集群部署。 (4)停止gtm1服务,观察gtm2是否能自动启动,并记录启动时间。

3.2 DataNode

表2 DataNode主从数据同步高可用架构服务列表 |IP|服务名| |192.168.1.147|Datanode2| |192.168.1.149|Datanode1、gtm、gtm_proxy、coord1|

参考资料