SafeKit 的 PostgreSQL 高可用性:安装 postgresql.safe 模块以进行故障转移
PostgreSQL 高可用快速安装指南
本指南解释了如何设置 镜像簇 对于PostgreSQL使用SafeKit,确保自动故障转移和同步复制,无需共享存储。
如需帮助,您可以使用 SafeKit AI 🤖.
1. 概述
- 架构: 使用双节点系统(主/辅助)。
- 数据保护: 实现实时同步复制 零数据丢失 (RPO=0)。
2. 安装
- 软件: 在两台服务器上安装 SafeKit 引擎。
- 模块: 下载预先配置好的
postgresql.safe.safe应用模块。
3. 配置
- 网络控制台: 配置包含 PostgreSQL 文件的特定文件夹。
- 监控: 开始监视和保护 PostgreSQL 应用程序。
SafeKit 高可用性限制
| 限制 / 要求 | 原因与影响 | 推荐替代方案 |
|---|---|---|
| 复制大小:数 TB | 故障后的重新同步时间 (步骤 3): • 1 Gb/s 网络 ≈ 3 小时 / TB • 10 Gb/s 网络 ≈ 1 小时 / TB (取决于磁盘写入性能) | • 使用外部共享存储 (更昂贵、更复杂)。 |
| 文件数量:< 1,000,000 个文件 | • 故障后的重新同步时间性能 (步骤 3)。 • 检查两个节点之间每个文件所需的时间。 | • 将要复制的大量文件放在虚拟硬盘 / 虚拟机中。 • 在这种情况下,将仅复制和重新同步代表虚拟硬盘 / 虚拟文件的文件。 |
| 故障转移容量:≤ 32 个虚拟机 (VM) | • 每个虚拟机在独立的镜像模块中运行。 • 在同一集群上运行的镜像模块最多 32 个。 | • 使用外部共享存储和其他虚拟机集群解决方案 (更昂贵、更复杂)。 |
| 网络架构:远程站点之间的 LAN/VLAN 网络 | • 具有同一子网中 2 个节点的虚拟 IP 地址自动故障转移。 • 用于重新同步的良好带宽 (步骤 3)。 • 同步复制的低延迟:通常 < 5 ms RTT;更高值应根据应用程序的写入速率进行验证。 | • 如果 2 个节点位于 2 个子网中,请使用虚拟 IP 地址负载均衡器 (SafeKit 支持,尤其是在云端)。 • 对于高延迟网络,请使用带有异步复制的备份解决方案。 |
SafeKit / PostgreSQL 解决方案概述
解决方案描述如下:💡最简单的 PostgreSQL 高可用性:2 节点同步复制和故障转移。
在 Windows 和 Linux 上安装 SafeKit / PostgreSQL 解决方案 (postgresql.safe)
先决条件
- 您需要在 2 个节点(虚拟机或物理服务器)上安装 PostgreSQL。
Windows上的软件包安装
- 下载并安装免费版本 SafeKit 于 2 Windows 节点。
注意:免费版本包含 SafeKit 的所有功能。试用结束后,您可以激活永久许可证密钥,而无需卸载软件包。 - 完成软件包安装后,选择 Set console credentials and firewall rules now 并配置密码 admin SafeKit 控制台的用户。
在所有节点上设置相同的密码。 - 从防病毒扫描中排除 C:/safekit/ (默认安装目录)和 所有复制的文件夹 你要定义的。
防病毒软件可能面临检测挑战 SafeKit 由于其与操作系统的紧密集成、虚拟IP机制、关键服务的实时复制和重启。
Windows上的模块安装
- 下载postgresql.safe模块。该模块是免费的。它包含文件 userconfig.xml 和重新启动脚本。
- 放 postgresql.safe 下 C:/safekit/Application_Modules/generic.
下载 postgresql.safe (Windows) >
Linux上的软件包安装
- 安装免费版本 SafeKit 于 2 Linux 节点。注:免费试用包含所有 SafeKit 特点。试用结束后,您可以激活永久许可证密钥,而无需卸载软件包。
- 下载safekit_xx.bin包后,执行解压rpm和safekitinstall脚本,然后执行 safekitinstall 脚本
- 回答 是的 防火墙自动配置
- 设置 Web 控制台的密码和默认用户 admin. 在所有节点上设置相同的密码。
Linux上的模块安装
- 下载postgresql.safe模块。
该模块是免费的。它包含文件 userconfig.xml 和重新启动脚本。 - 放 postgresql.safe 下 /opt/safekit/Application_Modules/generic/.
SafeKit / PostgreSQL解决方案的逐步配置
先决条件
- PostgreSQL 应用程序安装在 2 个节点上。
- 总复制数据限制为几 TB — 除此之外,重新同步时间变得很重要。
- 节点之间至少 1Gb/s 互连(建议使用 10Gb/s 以加快重新同步速度)。
- IP 故障转移需要同一 LAN 或扩展 LAN (L2) 上的两个节点 — 不支持路由 L3 网络(🛠️ 云负载均衡器 除外)。
1.启动SafeKit控制台
- 通过连接到
http://localhost:9010,在一个集群节点上的浏览器中启动 Web 控制台。 - 输入
admin作为用户名和安装期间定义的密码。
您还可以在集群外部工作站上的浏览器中运行控制台。
⚠️ SafeKit 的配置是通过单个浏览器在两个节点上完成的。
ℹ️ 要保护 Web 控制台,请参阅🛠️ 11\。用户指南中的保护 SafeKit Web 服务。

2.配置节点地址
- 输入节点IP地址,按
Tab key检查连通性并填写节点名称。如果 node1 或 node2 为红色,请检查浏览器与两个节点的连接,并检查两个节点上的防火墙是否有 🛠️ troubleshooting。 - 然后,单击“
Save and apply”保存配置。 - 检查两个节点上的
Success✅ 消息。 - 如果配置
Failure❌ 发生在一个节点上,请打开该节点的 ▼ 折叠面板并查看消息。请注意,您可以使用 SafeKit AI 🤖 寻求帮助。
ℹ️ 如果需要,您可以添加一个新的 LAN and nodes(第一个 ➕)来创建第二个心跳和专用复制网络。
ℹ️如果点击Advanced configuration,则会显示cluster.xml文件。该文件由控制台自动填充并部署在节点上。

3. 选择模块
- 在
New module中,单击postgresql.safe模块。
ℹ️ 顶部蓝色横幅中,🛜 node1 代表控制台连接节点。该节点在需要时将请求中继到 node2。
ℹ️ 控制台寻找 xxx.safe 在 Application_Modules/generic/ 连接节点上的目录(node1)如果您在安装过程中放置了一个模块。

4. 配置模块
- 在
Module startup at boot中,选择开机时模块自动启动,无延迟。 - 在
Macros/SERVICES中,按启动顺序输入应用程序的服务名称,以逗号分隔。请参阅此屏幕截图,了解 Milestone XProtect 服务🖼️ 的可视化示例。 - 在
Heartbeat networks中,您应该有一个用于进行复制的心跳网络。如果您在步骤 2 中添加了专用 LAN,则可以在专用 LAN 上使用复制流配置两个心跳。 - 在
Virtual IP addresses,输入虚拟 IP 地址。一个虚拟的 IP 地址是一个标准 IP 地址在同一个 IP 网络(同一子网)作为 IP 两个节点的地址。
应用程序客户端必须配置虚拟 IP 地址(或 DNS 与虚拟关联的名称 IP 地址)。
虚拟的 IP 如果发生故障,地址会自动切换。 - 在
Replicated directories中设置要复制的目录路径。检查它们是否存在于两个节点上并包含应用程序数据。
数据和日志复制对于数据库至关重要。
您可以根据需要创建其他复制目录。
请参阅此屏幕截图,了解 Milestone XProtect SQL 复制 🖼️ 的直观示例。 - 在
Checkers中,您将能够根据需要配置检查器,例如进程监控、自定义检查器、TCP、ping 或裂脑检查器。
例如,如果某个进程名称显示在Monitored processes/services中,则将对其进行监视,并在出现故障时进行重新启动操作。配置错误的进程名称将导致模块启动后立即停止。
ℹ️如果点击Advanced configuration,则会显示userconfig.xml文件。该文件由控制台自动填充,并使用重新启动脚本部署在节点上。
ℹ️ 在云部署中,您不需要配置虚拟 IP 地址在 SafeKit。虚拟的 IP 由 🛠️ 管理 云负载均衡器级别。
ℹ️ 当您涂抹 SafeKit 配置,将 startup type 服务的数量自动设置为 Manual 在 Windows 服务。这可以确保服务不会在系统启动时自动启动,而是仅在模块本身启动时启动(这同样适用于 Linux)。

5. 编辑脚本(可选)
- 此步骤是可选的,在大多数情况下可以跳过,因为重新启动脚本已预先配置为重新启动上一步中定义的服务。
- 所以,直接点击
Next step。 start_prim.ps1按照SERVICES列表中指定的顺序启动所有服务,而stop_prim.ps1按照相反的顺序停止所有服务。- 另外,
start_prim.ps1会检查每个服务的启动情况,如果有服务无法正确启动,则停止模块。

6.通讯加密(可选)
- 保持节点之间的通信加密。

7.保存并应用
Save and apply两个节点上的配置和脚本。

8.验证配置成功
- 检查两个节点上的
Success✅ 消息,然后单击Monitor modules。 - 如果配置
Failure❌ 发生在一个节点上,请打开该节点的 ▼ 折叠面板并查看消息。请注意,您可以使用 SafeKit AI 🤖 寻求帮助。
⚠️在Linux上,如果复制的目录是挂载点,这一步可能会报错。🛠️解决问题见SK-0030。

9. 使用最新数据启动节点
- 如果节点 1 具有最新的复制目录,请选择它并 ⋯
Force start▶As primary。
当节点2启动时,所有数据将从节点1复制到节点2。
⚠️ 如果您做出错误的选择,您将面临在两个节点上同步过时数据的风险。
⚠️ 还假设 PostgreSQL 应用程序在节点 1 上停止,以便 SafeKit 安装复制机制,然后在 start_prim 脚本中启动该应用程序。
⚠️后续启动使用Start:SafeKit保留最新的服务器。首次启动或异常操作期间启动As primary是特殊启动。

10.等待过渡到ALONE(绿色)
- 节点 1 应达到 ALONE(绿色)状态,这意味着虚拟 IP 已设置并且
start_prim脚本已在节点 1 上执行。
⚠️如果未到达ALONE(绿色)或者应用未启动,请通过节点1的模块日志🖼️分析原因。
- 点击🔍 日志 的图标
node1打开模块日志并查找错误消息,例如检查器检测到错误并停止模块。 - 点击日志中的
start_prim,右侧会显示脚本的输出信息,可以检测到服务启动不正确等错误。 - 使用 SafeKit AI 🤖 获取日志消息方面的帮助。
⚠️ 如果集群处于 WAIT (red) not uptodate, STOP (red) not uptodate 状态,则停止 WAIT 节点, 强制其作为主节点启动 🖼️。

11.启动节点2
- ⋯
Start节点 2 及其上下文菜单。 - 等待 SECOND(绿色)状态。
ℹ️ 节点 2 保持 SECOND(橙色)状态,同时重新同步复制的目录(从节点 1 复制到节点 2)。

12. 验证集群是否正常运行
- 检查集群是否为绿色/绿色,其中 PostgreSQL 服务在 PRIM 节点上运行,而不在 SECOND 节点上运行。
在此状态下,仅实时复制文件内部的更改。
⚠️ 作为 PostgreSQL 服务客户端的组件必须配置虚拟 IP 地址。可以使用 DNS 名称完成配置(如果已创建 DNS 名称并与虚拟 IP 地址关联)。

13. 测试
- 停止 PRIM 向下滚动节点的上下文菜单并单击
Stop。 - 验证 SECOND 节点上是否存在故障转移,该节点应变为 ALONE(绿色)。
- 并使用 Microsoft 管理控制台 (MMC) 上 Windows 或使用命令行 Linux,检查故障转移 PostgreSQL 服务(在节点 1 上停止)
stop_prim脚本并在节点 2 上启动start_prim脚本)。
⚠️如果 ALONE (绿色)未达到 node2 或者如果应用程序未启动,请使用以下命令分析原因 模块日志🖼️ 节点 2 的。
- 点击🔍 日志 的图标
node2打开模块日志并查找错误消息,例如检查器检测到错误并停止模块。 - 点击日志中的
start_prim,右侧会显示脚本的输出信息,可以检测到服务启动不正确等错误。 - 使用 SafeKit AI 🤖 获取日志消息方面的帮助。
⚠️
- 如果一切正常,则启动 node1,这将重新同步 node2 的复制目录。
- 如果出现问题,请停止 node2 和 强制启动作为主要🖼️ 的 node1,它将使用停止时的本地健康数据重新启动。
ℹ️ 在 SafeKit 在线培训 中查找更多详细信息和视频。

14. 支持
- 要获得支持,请获取 2 个 SafeKit
Snapshots(2 个 .zip 文件),每个节点一个。
ℹ️ 有关支持的更多信息请参见此处 。

SafeKit镜像解决方案演示
SafeKit 视频:应用程序级集群 (8:47)
在本视频中,了解 SafeKit 如何在没有 SAN 复杂性的情况下实现镜像 HA 集群。虽然此演示使用 Microsoft SQL Server,但该解决方案对于其他数据库和应用程序的工作方式相同。
章节
- 🎬 2 个带有 SQL Server 的节点 (0:32)
- 🎬 配置集群和mirror.safe模块 (3:58)
- 🎬 启动并测试 SQL 复制、迁移、崩溃时的故障转移 (4:17)
逐步实施
🔍 SafeKit 高可用性导航中心
探索 SafeKit:功能特性、技术视频、文档资料及免费试用
| 资源类型 | 描述 | 直接链接 |
|---|---|---|
| 关键特性 | 为什么选择 SafeKit 实现简单且经济高效的高可用性? | 查看为何选择 SafeKit 实现高可用性 |
| 使用案例 | 探索 SafeKit 如何确保关键基础设施的高可用性 | 查看所有使用案例(OEM 软件、边缘服务器、SCADA,以及更多) |
| 部署模式 | 全合一 SANless HA:无共享软件集群 | 查看 SafeKit 全合一 SANless HA |
| HA 策略 | SafeKit:基础设施(VM)级 vs. 应用程序级高可用性 | 查看 SafeKit HA 与冗余:VM 级 vs. 应用级 |
| 技术规格 | SafeKit 集群的技术限制 | 查看 SafeKit 高可用性限制条件 |
| 视频 | SafeKit:高可用性配置与故障转移演示 | 查看 SafeKit 故障转移教程 |
| 架构 | SafeKit 镜像集群(Mirror Cluster)工作原理(实时复制与故障转移) | 查看 SafeKit 镜像集群:实时复制与故障转移 |
| 架构 | SafeKit 场集群(Farm Cluster)工作原理(网络负载均衡与故障转移) | 查看 SafeKit 场集群:网络负载均衡与故障转移 |
| 竞争优势 | 对比:SafeKit vs. 传统高可用性(HA)集群 | 查看 SafeKit vs. 传统 HA 集群对比 |
| 技术资源 | SafeKit 高可用性:文档、下载与试用 | 查看 SafeKit HA 免费试用与技术文档 |
| 预配置解决方案 | SafeKit 应用模块库:开箱即用的 HA 解决方案 | 查看 SafeKit 高可用性应用模块 |