暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Keepalived与CLup:如何选择合适的PostgreSQL高可用解决方案

中启乘数 2025-03-24
146
在数据库运维领域,确保数据库的高可用性是至关重要的,它不仅能提高系统的稳定性与可靠性,还能有效减少因故障导致的停机时间,从而保障业务连续性。对于寻求增强其数据库环境稳定性的团队或个人来说,选择合适的高可用软件工具是关键步骤之一。今天小编为大家介绍两款数据库高可用工具:Keepalived和CLup。

   1    

使用keepalived做PostgreSQL数据库高可用


1、搭建keepalived高可用PostgreSQL集群第一关


  • 搭建流复制集群

搭建一套一主一从的PostgreSQL流复制集群,这里不赘述,直接给大家上环境:


地址角色
10.197.165.87主库
10.197.165.88从库
10.197.165.231VIP


2、搭建keepalived高可用PostgreSQL集群第二关


  • 安装Keepalived
本文我们从源码安装keepalived。
从官网下载keepalived的源码包,编译安装
    tar xf keepalived-2.2.4.tar.gz
    cd keepalived-2.2.4
    ./configure --prefix=/usr/local/keepalived
    make && make install
    给keepalived的配置文件建个软链接方便配置。
      mkdir -p etc/keepalived
      ln -s usr/local/keepalived/etc/keepalived/keepalived.conf etc/keepalived/

      3、搭建keepalived高可用PostgreSQL集群第三关

      • 配置Keepalived
      配置keepalived对于初学者来说,那可是一件比较麻烦的事呀,要考虑什么场景下切换VIP、怎么识别到这个场景来切、切过去之后如果主库恢复了又要怎么办。

      编辑主从两台服务器的/etc/keepalived/keepalived.conf

      • 主库:
        ! Configuration File for keepalived
        global_defs {
        router_id PG-MM-HA
        }


        vrrp_script chk_pg_port {
        # 检测 pg 服务是否在运行。有很多方式,比如进程,用脚本检测等等
        script "/etc/keepalived/chk_pg.sh" #这里通过脚本监测
        interval 2
        weight -20
        fall 2
        rise 1
        }


        vrrp_instance VI_1 {
        state MASTER
        interface ens33 #指定虚拟 ip 的网卡接口
        virtual_router_id 101 #路由器标识,MASTER 和 BACKUP 必须是一致
        priority 100 #定义优先级,数字越大,优先级越高
        advert_int 1


        authentication {
        auth_type PASS
        auth_pass keepalived123
        }
        virtual_ipaddress {
        10.197.165.231
        }
        track_script {
        chk_pg_port
        }
        }
        • 备库:
          ! Configuration File for keepalived
          global_defs {
          router_id PG-MM-HA
          }


          vrrp_script chk_pg_port {
          # 检测 pg 服务是否在运行。有很多方式,比如进程,用脚本检测等等
          script "/etc/keepalived/chk_pg.sh" #这里通过脚本监测
          interval 2
          weight -20
          fall 2
          rise 1
          }


          vrrp_instance VI_1 {
          state BACKUP #建议设置为 BACKUP
          interface ens33 #指定虚拟 ip 的网卡接口
          virtual_router_id 101 #路由器标识,MASTER 和 BACKUP 必须是一致
          priority 100 #定义优先级,数字越大,优先级越高
          advert_int 1


          authentication {
          auth_type PASS
          auth_pass keepalived123
          }
          virtual_ipaddress {
          10.197.165.231
          }
          track_script {
          chk_pg_port
          }
          }
          • 还需要配置监测PG数据库的脚本
            vi etc/keepalived/chk_pg.sh


            #!/bin/bash


            if pgrep -x postgres > dev/null; then
            exit 0
            else
            exit 1
            fi
            到这里才配置好keepalived的VIP切换逻辑。还需要配置主库故障后激活备库的流程,这个一般需要结合其他工具实现。小编这里就不赘述了。

            这一整套流程下来属实是麻烦,至少得要半天,还要根据不同集群配置不一样的配置,还容易配错。

              2   

            使用CLup做PostgreSQL数据库高可用


            今天给大家分享的另一款软件CLup就很轻便、简单,并且还有Web界面,点一点就可以创建或配置PG数据库高可用集群。


            安装CLup:(建议在一个单独的机器安装)

              wget -qO /tmp/clup.sh --no-check-certificate 
              https://get.csudata.com/csuinst/clup.sh && bash /tmp/clup.sh clup install
              在数据库服务器安装CLup-agent,并指定CLup-Server为上述安装CLup的服务器地址。
                wget -qO /tmp/clup.sh --no-check-certificate 
                https://get.csudata.com/csuinst/clup.sh && bash /tmp/clup.sh clup-agent install
                在浏览器打开CLup服务器地址的8090端口

                默认账号/密码:admin/cstech

                进入主界面,在创建数据库集群之前,需要先创建一个VIP池。点击HA集群->VIP池管理->添加。填写VIP池的名称和VIP即可创建成功。

                接下来创建PostgreSQL数据库集群。点击HA集群->集群定义->创建集群->创建PostgreSQL流复制集群。选择集群包含的服务器,并输入数据库的基本信息,点击下一步。

                配置数据库内的一些信息,并分配VIP池

                在常用参数配置这里,如果数据库软件没有安装pg_store_plans插件,需要在shared_preload_libraries参数这里把pg_store_plans值删除。

                接下来一直点下一步,最后点击确定,PostgreSQL数据库高可用集群就创建成功了。

                在HA集群->HA管理->上线。上线集群后就可以使用CLup的高可用功能了。
                CLup的高可用功能包括但不限于:
                • 主备库意外停库后自动拉起
                • 主库故障无法拉起后,自动选择优先级高的备库切换。
                • 还支持不同机房的主备库故障切换
                此外CLup还有数据库备份、数据库恢复,告警等管理数据库必不可少的功能。真正做到了在功能全面性和系统简洁性之间的完美平衡,属实是精小而强大。


                END

                点击关注乘数科技

                扫码添加乘数小助手微信号

                邀您进入《PostgreSQL修炼之道:从小工到专家》

                读者技术交流群




                加入我们





                往期回顾

                遇到deepseek服务器繁忙?教你轻松解决!

                打造CLup高可用基石:揭秘MMN多管理节点部署策略

                从零到一!CLup助你秒建IvorySQL4.0高可用集群

                使用CLup一键创建和管理PolarDB分布式数据库

                CSYun虚拟化软件4.0.0正式发布:新增LXC容器管理功能,更出色的虚拟化体验!

                文章转载自中启乘数,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                评论