本主题介绍运行版本 9.0.0 或更高版本的设备的数据库故障切换功能。对于这些设备,故障切换完全自动执行,但服务提供程序设备意外关闭的情况除外,在这种情况下仍需执行手动过程。

注: 本主题仅适用于运行版本 9.0.0 或更高版本的设备。有关旧版设备的信息,请参阅 数据库故障切换 - 旧版设备

自动故障切换

自动故障切换功能包括以下功能。
  • 单个数据源连接 - 所有设备现在使用通过新 pgbouncer 服务代理的单个数据源连接。pgbouncer 是一个连接池程序,可保持与底层 postgres 数据库的连接,同时提供单个连接点以供设备服务使用。此服务还处理所有故障切换和主节点迁移;它会自动更新以指向新的主数据库,从而在主节点之间实现无缝转换。
  • 设备关闭或重新启动时对主数据库进行受控切换 - 在客户机对当前数据库主节点启动的任何关闭或重新启动操作期间,主节点角色将以受控方式迁移到 HA 对中的另一设备。此操作只会轻微干扰设备的正常运行,主要会影响通过 Blast (Web) 门户建立的桌面连接。通过 Horizon Client 建立的桌面连接则不会受到影响。此外,还会出现 horizonadmin 在短暂时间内不可用的情况,因此,在切换期间请求桌面连接的用户可能会收到一条错误,指示没有可用的桌面(但稍后重试时,应该会允许用户连接到桌面)。
  • 租户设备出现意外故障时对主数据库执行自动故障切换 - 现在会自动检测主节点故障,之后向服务提供程序设备发出请求,以验证设备是否确实已关闭。然后,将在延迟三分钟后启动故障切换过程。与过去的故障切换过程相比,新的故障切换过程的破坏性较小,可使 slony 集群随后处于正常复制状态,如此一来,在发生故障切换后,便无需重新初始化 slony。
这些功能受下述服务支持。
服务 描述 日志位置 注释
Pgbouncer 连接池程序,可代理平台服务与 postgres 之间的数据库连接。 /var/log/pgbouncer/
  • 现在,默认情况下,使用 psql 命令连接到 postgres 时会通过 pgbouncer 进行,这会使您连接到主数据库,而不管您使用的是哪个设备。要连接到特定数据库实例,请在 psql 中使用 -h 和 -p 标记。您还必须指定端口 6432 才能直接连接到 postgres。例如:
    psql -U admin -h ‹Appliance_IP› -p 6432 fdb
  • 您可以检查 /etc/pgbouncer/pgbouncer.ini 中的 pgbouncer 配置,以验证它是否指向正确的设备。该文件顶部的连接字符串应指向当前的 slony 主节点。如果未指向该节点,则在大多数情况下,重新启动设备将修复此问题。
Dbmonitor 监控服务,可执行以下操作:
  • 检测主节点故障并启动新的故障切换过程。
  • 检测因受控切换或重新订阅而导致的 slony 主节点更改,并相应地使用新的主节点地址更新 pgbouncer。
/var/log/dbmonitor/
切换 在关机时运行脚本以执行切换操作。 /var/log/desktone/slony-services
重新订阅 在启动时运行脚本以执行重新订阅操作。 /var/log/desktone/slony-services

服务提供程序设备的手动故障切换

如果服务提供程序设备意外关闭,您可以通过对其他服务提供程序设备执行以下步骤来执行手动故障切换。
  1. 以 root 用户身份运行 failover-slony-master 脚本(位于 /usr/local/desktone/scripts/ 中):
    failover-slony-master <database type> '<database password>'
    其中 <database type> 为 fdb、edb 或 avdb。
  2. 确认 pgbouncer.ini 文件指向当前设备的前端 IP 地址:
    /usr/local/desktone/scripts# grep '<IP address>' /etc/pgbouncer/pgbouncer.ini
  3. 重新加载 pgbouncer 服务:
    service pgbouncer reload
  4. 通过运行 slony-status,确认主节点状态和复制:
    /usr/local/desktone/scripts# slony-status <org #>