PostgreSQL高弹性的高可用及负载均衡实现方法技术

技术编号:11266666 阅读:126 留言:0更新日期:2015-04-08 12:37
本发明专利技术公开了一种PostgreSQL高弹性的高可用及负载均衡实现方法。属于数据库技术领域,该方法实现了数据库层面完全无单点故障的风险.并且在连接层面使用会话保持来解决应用感知的问题,还实现了对应用完全透明的高可用failover。连接池和应用程序建立的TCP连接不受FAILOVBR影响,因此这个会话不会中断。连接池和数据库的连接断开后自动连接。业务层在切换期间的会话自动回滚。在连接池或驱动层配置好多个对应的后端数据库连接,根据配置的算法,数据插入的SQL自动分发到后端数据库以实现负载均衡。当后端数据库无响应时,自动分发到下一个候选连接,以实现fajlover。

【技术实现步骤摘要】
PostgreSQL高弹性的高可用及负载均衡实现方法
本专利技术涉及数据库
,尤其涉及一种PostgreSQL高弹性的高可用及负载均衡实现方法。
技术介绍
在大型的业务系统中,数据库一般处于比较核心的地位,例如涉及用户信息,用户账户信息,用户行为信息的存储。用户或用户之间信息的交互都需要数据库的支持,数据库故障将导致核心业务系统故障。数据库的不间断运行成为业务系统稳定性的关键因素。传统数据库高可用方法有两种应用场景:第一种应用场景是利用存储设备的复制功能来实现高可用。参见图6所示,把一个数据库存储设备中的数据采用存储复制的方式复制到另一个数据库存储设备中去,App1或者Appn访问虚拟IP,通过failover决定虚拟IP是通过数据库活动实例1来访问一个数据库,还是通过数据库非活动实例n来访问另一个数据库。这种方法的缺陷是:(1)数据库的特征受制于硬件存储设备,需要存储硬件厂商结合数据库的特征设计,无法支持所有数据库,在没有经过厂商认证的数据库品牌冒然使用,可能导致数据一致性问题或数据块损坏问题;(2)成本高,存在高昂的软件许可成本和硬件成本;(3)存储层面的同步无法和应用结合,无法实现同步或异步的同步,如果是同步复制,那么将增加故障点,同时带来性能损失;如果是异步复制则会增加丢失数据的风险。第二种应用场景是利用共享存储和高可用软件实现,参见图7所示,App1或者Appn访问虚拟IP,通过failover决定虚拟IP是通过数据库活动实例1来访问数据库共享存储中的数据,还是通过数据库非活动实例n来访问数据库共享存储中的数据。这种方法基本上适用于所有的数据库产品,这种方法有几个缺陷:(1)成本高,需要支付高昂的存储硬件和高可用软件费用;(2)依赖存储设备的高可用,如果存储故障则使得数据库高可用失效,存在单点故障;(3)数据库主机切换时会中断网络层会话,无法实现应用无感知。
技术实现思路
本专利技术是为了解决现有数据库在数据库层存在单点故障风险,在连接层面存在应用感知的问题,对failover的应用不透明的这些不足,提供一种PostgreSQL高弹性的高可用及负载均衡实现方法,该方法实现了数据库层面完全无单点故障的风险.并且在连接层面使用会话保持来解决应用感知的问题,还实现了对应用完全透明的高可用failover。为了实现上述目的,本专利技术采用以下技术方案:PostgreSQL高弹性的高可用及负载均衡实现方法,包括:读写混合场景实现方法和写场景实现方法;(1)读写混合场景实现方法步骤如下:(1.1)准备3台服务器,其中2台服务器分别用于数据库主节点和数据库镜像节点,另1台服务器用于仲裁节点;(1.2)分别将数据库主节点服务器的主机、数据库镜像节点服务器的主机和仲裁节点服务器的主机配置在同一个网段,并设数据库主节点为node1,设数据库镜像节点为node2,设数据库的一个虚拟IP为虚拟IP1,设数据库的另一个虚拟IP为虚拟IP2,设仲裁节点为VOTE_HOST;(1.3)配置数据库主节点和数据库镜像节点的FENCE设备,为了防止发生脑裂现象,让FENCE设备在自动failover前关闭服务器;(1.4)配置数据库主节点和数据库镜像节点的网络,编写虚拟IP配置文件;还关闭network服务的自动启动节点node1和node2;并增加该自动启动节点node1和node2的network服务启动项到rc.local。(1.5)在数据库主节点和数据库镜像节点安装PostgreSQL数据库软件;(1.6)在数据库主节点初始化数据库;(1.7)在数据库主节点配置数据库访问控制配置文件pg_hba.conf、postgresql.conf和recovery.conf,这三个数据库访问控制配置文件都用于数据库复制、启动数据库、创建流复制用户和启动虚拟IP;(1.8)创建镜像数据库,配置数据库镜像节点流复制环境,并启动镜像虚拟IP;(1.9)配置仲裁节点,设置用于仲裁网络异常的数据库监听端口,即配置仲裁机,在仲裁机上起一个监听端口,用于跳转到虚拟IP的PostgreSQL主库监听端口;(1.10)在数据库主节点创建心跳检查函数,数据库主节点的变更将自动复制到数据库镜像节点;(1.11)编写心跳检查软件和仲裁节点检查软件,并把心跳检查软件部署在数据库主节点和数据库镜像节点,把仲裁节点检查软件部署在仲裁节点,用于自动failover;(1.12)开启用于自动failover的心跳检查软件;(1.13)配置组件监控检查,所述组件包括用于负责心跳检测和故障时激活镜像以及切换虚拟IP的HA切换软件,所述组件还包括用于读写负载均衡和客户端会话保持连接池的中间件,所述组件还包括用于数据库主节点IP读写连接和数据库镜像节点IP读连接的虚拟IP,所述组件还包括用于投票解决单边网络故障的仲裁节点,所述组件还包括用于解决脑裂问题的FENCE设备,所述组件还包括用于负责读写的数据库主节点和从数据库主节点获取实时增量同步且只负责读的数据库镜像节点;所述HA切换软件的实现过程是:(1.13.1)启动,判断主节点是否正常;(1.13.2)如果主节点不正常则结束,如果主节点正常则判断本地节点角色是否为镜像节点;(1.13.3)如果本地节点不是镜像节点则结束,如果本地节点为镜像节点则计数清零,并检查主节点状态;(1.13.4)如果主节点状态健康则结束,如果主节点状态不健康则检查仲裁节点状态;(1.13.5)如果仲裁节点状态不健康则再次进行计数清零,如果仲裁节点状态健康则从仲裁节点检查主节点状态;(1.13.6)如果从仲裁节点检查主节点状态为健康状态则再次进行计数清零,如果从仲裁节点检查主节点状态为不健康状态则进行主节点累计异常次数自增计数,然后进行主节点连接异常次数判断1;(1.13.7)如果主节点连接异常次数判断1是第一次时则检查镜像节点延迟是否正常,如果主节点连接异常次数判断1不是第一次时则进行主节点连接异常次数判断2;(1.13.8)如果检查镜像节点延迟为不正常则再次进行计数清零,如果检查镜像节点延迟为正常则生成镜像节点健康状态标记,然后则进行主节点连接异常次数判断2;(1.13.9)如果主节点连接异常次数判断2的异常次数未达到阈值则再次进行计数清零,如果主节点连接异常次数判断2的异常次数达到阈值则检查镜像节点状态标记;(1.13.10)如果检查镜像节点状态标记为正常则激活镜像、切换虚拟IP和生成切换标记,并在激活镜像、切换虚拟IP和生成切换标记后结束;如果检查镜像节点状态标记为不正常则生成主节点不健康标签和不发生切换,在生成主节点不健康标签和不发生切换后结束;(1.14)配置用于读写分离的连接池;所述读写分离的实现过程是:APP提交SQL来判断SQL是读还是写,如果判断SQL是写则分发给主节点,如果判断SQL是读则分发给镜像节点;(1.15)人为的switchover测试,关闭数据库主节点,关闭虚拟IP1,激活数据库镜像节点数据库,数据库镜像节点数据库recovery.conf自动修改为recovery.done,切换为主角色,在数据库镜像节点启动虚拟IP1,数据库主节点recovery.done改为recover.conf,启动数据库主节点,角本文档来自技高网
...
PostgreSQL高弹性的高可用及负载均衡实现方法

【技术保护点】
PostgreSQL高弹性的高可用及负载均衡实现方法,其特征在于,包括:读写混合场景实现方法和写场景实现方法;(1)读写混合场景实现方法步骤如下:(1.1)准备3台服务器,其中2台服务器分别用于数据库主节点和数据库镜像节点,另1台服务器用于仲裁节点;(1.2)分别将数据库主节点服务器的主机、数据库镜像节点服务器的主机和仲裁节点服务器的主机配置在同一个网段,并设数据库主节点为node1,设数据库镜像节点为node2,设数据库的一个虚拟IP为虚拟IP1,设数据库的另一个虚拟IP为虚拟IP2,设仲裁节点为VOTE_HOST;(1.3)配置数据库主节点和数据库镜像节点的FENCE设备,为了防止发生脑裂现象,让FENCE设备在自动failover前关闭服务器;(1.4)配置数据库主节点和数据库镜像节点的网络,编写虚拟IP配置文件;(1.5)在数据库主节点和数据库镜像节点安装PostgreSQL数据库软件;(1.6)在数据库主节点初始化数据库;(1.7)在数据库主节点配置数据库访问控制配置文件pg_hba.conf、postgresql.conf和recovery.conf,用于数据库复制、启动数据库、创建流复制用户和启动虚拟IP;(1.8)创建镜像数据库,配置数据库镜像节点流复制环境,并启动镜像虚拟IP;(1.9)配置仲裁节点,设置用于仲裁网络异常的数据库监听端口,即配置仲裁机,在仲裁机上起一个监听端口,用于跳转到vip的PostgreSQL主库监听端口;(1.10)在数据库主节点创建心跳检查函数,数据库主节点的变更将自动复制到数据库镜像节点;(1.11)编写心跳检查软件和仲裁节点检查软件,并把心跳检查软件部署在数据库主节点和数据库镜像节点,把仲裁节点检查软件部署在仲裁节点,用于自动FAILOVER;(1.12)开启用于自动failover的心跳检查软件;(1.13)配置组件监控检查,所述组件包括用于负责心跳检测和故障时激活镜像以及切换虚拟IP的HA切换软件,所述组件还包括用于读写负载均衡和客户端会话保持连接池的中间件,所述组件还包括用于数据库主节点IP读写连接和数据库镜像节点IP读连接的虚拟IP,所述组件还包括用于投票解决单边网络故障的仲裁节点,所述组件还包括用于解决脑裂问题的FENCE设备,所述组件还包括用于负责读写的数据库主节点和从数据库主节点获取实时增量同步且只负责读的数据库镜像节点;所述HA切换软件的实现过程是:(1.13.1)启动,判断主节点是否正常;(1.13.2)如果主节点不正常则结束,如果主节点正常则判断本地节点角色是否为镜像节点;(1.13.3)如果本地节点不是镜像节点则结束,如果本地节点为镜像节点则计数清零,并检查主节点状态;(1.13.4)如果主节点状态健康则结束,如果主节点状态不健康则检查仲裁节点状态;(1.13.5)如果仲裁节点状态不健康则再次进行计数清零,如果仲裁节点状态健康则从仲裁节点检查主节点状态;(1.13.6)如果从仲裁节点检查主节点状态为健康状态则再次进行计数清零,如果从仲裁节点检查主节点状态为不健康状态则进行主节点累计异常次数自增计数,然后进行主节点连接异常次数判断1;(1.13.7)如果主节点连接异常次数判断1是第一次时则检查镜像节点延迟是否正常,如果主节点连接异常次数判断1不是第一次时则进行主节点连接异常次数判断2;(1.13.8)如果检查镜像节点延迟为不正常则再次进行计数清零,如果检查镜像节点延迟为正常则生成镜像节点健康状态标记,然后则进行主节点连接异常次数判断2;(1.13.9)如果主节点连接异常次数判断2的异常次数未达到阀值则再次进行计数清零,如果主节点连接异常次数判断2的异常次数达到阀值则检查镜像节点状态标记;(1.13.10)如果检查镜像节点状态标记为正常则激活镜像、切换虚拟IP和生成切换标记,并在激活镜像、切换虚拟IP和生成切换标记后结束;如果检查镜像节点状态标记为不正常则生成主节点不健康标签和不发生切换,在生成主节点不健康标签和不发生切换后结束;(1.14)配置用于读写分离的连接池;所述读写分离的实现过程是:APP提交SQL来判断SQL是读还是写,如果判断SQL是写则分发给主节点,如果判断SQL是读则分发给镜像节点;(1.15)人为的switchover测试,关闭数据库主节点,关闭虚拟IP1,激活数据库镜像节点数据库,数据库镜像节点数据库recovery.conf自动修改为recovery.done,切换为主角色,在数据库镜像节点启动虚拟IP1,数据库主节点recovery.done改为recover.conf,启动数据库主节点,角色切换为镜像角色;(1.16)通过拔数据库主节点网线,或者关闭数据库主节点,或者关闭数据库主节点服务器,或者关闭数据库主节点网卡来自动进行failo...

【技术特征摘要】
1.PostgreSQL高弹性的高可用及负载均衡实现方法,其特征在于,包括:读写混合场景实现方法和写场景实现方法;(1)读写混合场景实现方法步骤如下:(1.1)准备3台服务器,其中2台服务器分别用于数据库主节点和数据库镜像节点,另1台服务器用于仲裁节点;(1.2)分别将数据库主节点服务器的主机、数据库镜像节点服务器的主机和仲裁节点服务器的主机配置在同一个网段,并设数据库主节点为node1,设数据库镜像节点为node2,设数据库的一个虚拟IP为虚拟IP1,设数据库的另一个虚拟IP为虚拟IP2,设仲裁节点为VOTE_HOST;(1.3)配置数据库主节点和数据库镜像节点的FENCE设备,为了防止发生脑裂现象,让FENCE设备在自动failover前关闭服务器;(1.4)配置数据库主节点和数据库镜像节点的网络,编写虚拟IP配置文件;(1.5)在数据库主节点和数据库镜像节点安装PostgreSQL数据库软件;(1.6)在数据库主节点初始化数据库;(1.7)在数据库主节点配置数据库访问控制配置文件pg_hba.conf、postgresql.conf和recovery.conf,这三个数据库访问控制配置文件都用于数据库复制、启动数据库、创建流复制用户和启动虚拟IP;(1.8)创建镜像数据库,配置数据库镜像节点流复制环境,并启动镜像虚拟IP;(1.9)配置仲裁节点,设置用于仲裁网络异常的数据库监听端口,即配置仲裁机,在仲裁机上起一个监听端口,用于跳转到虚拟IP的P0stgreSQL主库监听端口;(1.10)在数据库主节点创建心跳检查函数,数据库主节点的变更将自动复制到数据库镜像节点;(1.11)编写心跳检查软件和仲裁节点检查软件,并把心跳检查软件部署在数据库主节点和数据库镜像节点,把仲裁节点检查软件部署在仲裁节点,用于自动failover;(1.12)开启用于自动failover的心跳检查软件;(1.13)配置组件监控检查,所述组件包括用于负责心跳检测和故障时激活镜像以及切换虚拟IP的HA切换软件,所述组件还包括用于读写负载均衡和客户端会话保持连接池的中间件,所述组件还包括用于数据库主节点IP读写连接和数据库镜像节点IP读连接的虚拟IP,所述组件还包括用于投票解决单边网络故障的仲裁节点,所述组件还包括用于解决脑裂问题的FENCE设备,所述组件还包括用于负责读写的数据库主节点和从数据库主节点获取实时增量同步且只负责读的数据库镜像节点;所述HA切换软件的实现过程是:(1.13.1)启动,判断主节点是否正常;(1.13.2)如果主节点不正常则结束,如果主节点正常则判断本地节点角色是否为镜像节点;(1.13.3)如果本地节点不是镜像节点则结束,如果本地节点为镜像节点则计数清零,并检查主节点状态;(1.13.4)如果主节点状态健康则结束,如果主节点状态不健康则检查仲裁节点状态;(1.13.5)如果仲裁节点状态不健康则再次进行计数清零,如果仲裁节点状态健康则从仲裁节点检查主节点状态;(1.13.6)如果从仲裁节点检查主节点状态为健康状态则再次进行计数清零,如果从仲裁节点检查主节点状态为不健康状态则进行主节点累计异常次数自增计数,然后进行主节点连接异常次数判断1;(1.13.7)如果主节点连接异常次数判断1是第一次时则检查镜像节点延迟是否正常,如果主节点连接异常次数判断1不是第一次时则进行主节点连接异常次数判断2;(1.13.8)如果检查镜像节点延迟为不正常则再次进行计数清零,如果检查镜像节点延迟为正常则生成镜像节点健康状态标记,然后则进行主节点连接异常次数判断2;(1.13.9)如果主节点连接异常次数判断2的异常次数未达到阈值则再次进行计数清零,如果主节点连接异常次数判断2的异常次数达到阈值则检查镜像节点状态标记;(1.13.10)如果检查镜像节点状态标记为正常则激活镜像、切换虚拟IP和生成切换标记,并在激活镜像、切换虚拟IP和生成切换标记后结束;如果检查镜像节点状态标记为不正常...

【专利技术属性】
技术研发人员:周正中
申请(专利权)人:杭州斯凯网络科技有限公司
类型:发明
国别省市:浙江;33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1