SafeKit:Docker 高可用性和实时数据复制软件
SANless SafeKit mirror 集群如何与 Docker 配合使用
SafeKit 提供了一种轻量级、刚刚好的高可用性解决方案,专为那些认为 Kubernetes 对于本地化或边缘计算容器工作负载而言资源消耗过大、过于复杂或设计过度冗余的组织量身定制。
SafeKit 为 Linux 上的 Docker 提供了一个简化的、一体化的双节点高可用性集群。它作为复杂“自己动手”(DIY) Linux HA 堆栈的无缝集成替代方案,消除了手动配置 Corosync 进行节点成员管理、Pacemaker 进行资源编排以及 DRBD 进行块级复制的技术负担。
SafeKit 利用实时同步复制和自动切换的虚拟 IP 地址,创建了一个强大的无共享存储集群,从而消除了对昂贵共享存储的需求。这种架构确保了透明的客户端重新连接、快速的自动故障转移以及容器化应用程序的零数据丢失保证(RPO = 0)。
- ✅Kubernetes 替代方案: 为容器提供高可用性,而无需承担 K8s 网络(入口/负载均衡器)和编排的开销。
- ✅架构简化: 用单个软件包取代 Corosync/Pacemaker/DRBD 堆栈。
- ✅无需共享存储: SANless 架构使用本地磁盘和字节级复制。
- ✅自动虚拟 IP (VIP) 故障转移: 确保在切换期间客户端能够透明地重新连接。
- ✅同步数据复制: 保证节点之间零数据丢失(RPO = 0)。
- ✅自动故障转移和故障恢复: 在冗余节点上快速重启应用程序,无需手动脚本。

使用 SafeKit 的 SANless 架构为 Docker 容器提供高可用性 (HA) 解决方案。
目录
- SafeKit 软件如何简单地实现 Docker 高可用性集群?
- SafeKit mirror 集群如何与 Docker 配合使用?
- SafeKit 高可用性限制
- 比较:SafeKit SANless 集群与传统 Docker HA
- 比较:SafeKit 与开源 Linux HA(Pacemaker/Corosync/DRBD)
- Docker 高可用性概述
- 🔍 探索 SafeKit
SafeKit 软件如何简单地实现 Docker 高可用性集群?
如何在两台服务器上实现 Docker 的高可用性?
SafeKit 为两台冗余服务器之间的 Docker 提供高可用性解决方案,无需共享磁盘。该系统通过配置与 Docker 永久数据相关联的目录的实时复制来工作。如果发生故障,SafeKit 会管理自动故障转移,并在几秒钟内将您的容器重新启动到辅助节点上。
Docker 容器的自动网络故障转移是如何工作的?
SafeKit 实现了一个自动切换的虚拟 IP (VIP) 地址。此 VIP 作为客户端应用程序的单个入口点。如果主服务器发生故障,SafeKit 会使用免费 ARP 将虚拟 IP 移动到冗余服务器。这确保客户端透明地重新连接到已重新启动 Docker 应用程序的同一 IP 地址。
什么是 Docker 的“无 SAN”集群?
适用于 Docker 的无 SAN 集群是一种架构,可在无需昂贵的存储区域网络 (SAN) 或网络附加存储 (NAS)SafeKit 情况下提供高可用性。使用基于主机的同步复制在两台服务器的本地磁盘之间 mirror 数据。这消除了共享存储作为单点故障,并确保恢复点目标 (RPO) 为零,这意味着在故障转移期间不会发生数据丢失。
是否可以在没有 Kubernetes 技能的情况下搭建 Docker 集群?
是的。本文介绍了如何在没有专业集群技能或复杂 Kubernetes 编排的情况下快速实施 Docker 集群。通过使用 SafeKit 的自动重启脚本来处理 Docker 应用程序的启动和停止,您可以获得一个强大的冗余解决方案,其部署和维护比 K8s 简单得多。
SafeKit 复制与 DRBD 等 Docker 块级解决方案有何不同?
与大多数使用块级复制(如 DRBD)的无共享存储解决方案不同,SafeKit 在文件级别执行基于主机的复制。这种方法对于 Docker 应用程序是完全透明的,因为它不需要您将数据迁移到特定、新创建的“复制磁盘”卷。相反,您只需配置 SafeKit 来复制现有的应用程序文件夹——甚至包括系统磁盘上的文件夹。这使您能够在 Docker 已经安装的位置为其实现高可用性,而无需进行复杂的磁盘重新配置或应用程序更改。
SafeKit 能否为 Docker 以外的应用程序提供高可用性?
是的。SafeKit 是一款高度通用、兼容 Windows 和 Linux 高可用性软件。除了 Docker,SafeKit 还可以用于为任何文件目录、服务或数据库实现实时复制和自动故障转移它支持多种技术,包括 Hyper-V 和 KVM 虚拟机、Docker、K3s 以及各种云应用程序。这使得 SafeKit 成为一种通用的集群解决方案,可在各种 IT 环境中保护关键工作负载,而无需专用硬件。
SafeKit mirror 集群如何与 Docker 配合使用?
步骤 1. 实时复制
服务器 1(PRIM)运行 Docker 应用程序。客户端连接到虚拟 IP 地址。SafeKit 通过网络实时复制文件 SafeKit 所做的修改。

与异步复制不同,同步复制在发生故障时不会丢失数据。
您只需在 SafeKit 中配置要复制的目录名称。对磁盘组织没有先决条件。目录可以位于系统磁盘中。
步骤 2. 自动故障转移
当服务器 1 出现故障时,服务器 2 将接管。SafeKit 切换虚拟 IP 地址,并在服务器 2 上自动重新启动 Docker 应用程序。
应用程序发现 SafeKit 在服务器 2 上复制的文件是最新的。应用程序继续在服务器 2 上运行,并本地修改其不再复制到服务器 1 的文件。

故障转移时间等于故障检测时间(默认为 30 秒)加上应用程序启动时间。
步骤 3.自动回切
故障恢复是指在修复导致服务器 1 故障的问题后,重新启动服务器 1。
SafeKit 会自动重新同步文件,仅更新服务器 1 停止运行时服务器 2 上修改的文件。

故障恢复在不中断 Docker 应用程序的情况下进行,该应用程序可以继续在服务器 2 上运行。
步骤 4. 恢复正常
重新集成后,文件再次处于 mirror 模式,如步骤 1 中所示。系统恢复高可用性模式,Docker 应用程序在服务器 2 上运行,SafeKit 将文件更新复制到服务器 1。

如果管理员希望应用程序在服务器 1 上运行,可以在适当的时候通过 Web 控制台手动完成,也可以通过配置自动完成。
如何为 Docker 配置 SafeKit mirror 集群?

SafeKit Web 控制台提供了一个直观的界面,用于为您的关键应用程序编排高可用性。只需几个步骤,您就可以配置 SafeKit mirror 集群以确保业务连续性:
- 应用程序故障转移(宏选项卡): 定义在发生故障时要自动重新启动的特定应用程序服务。
- 心跳网络: 集群节点用于持续监控彼此的运行状况和可用性以及同步故障转移决策的专用通信路径。
- 虚拟 IP 管理: 设置虚拟 IP (VIP),以便在故障转移后实现透明的客户端重新连接。
- 实时复制: 选择用于基于主机、同步字节级复制的关键目录。
- 检查器: 监控应用程序的运行状况,并在检测到进程故障时触发自动恢复。
SafeKit 集群包含一个专用的裂脑检查器,用于解决网络隔离问题,而无需第三个见证机或额外的保活网络。了解有关集群中的保活、故障转移和仲裁的更多信息。
如何监控 SafeKit mirror 集群的 Docker?

SafeKit 管理控制台提供高可用性基础设施的统一视图。它允许管理员监控集群的运行状态并实时跟踪数据同步。
对于一个 2 节点 mirror 集群,控制台会清晰地显示每个服务器的角色:
- PRIM(主): 当前运行应用程序并管理虚拟 IP 的活动节点。它将写入本地存储,并实时复制到辅助节点。
- SECOND(辅助): 接收同步字节级更新的备用节点。如果主节点发生故障,它已准备好立即接管。
- ALONE 状态: 当集群在单个节点上运行时(例如,在维护期间或发生故障后),会向您发出视觉警报,表明冗余暂时丢失。
- 重新同步进度: 当故障节点恢复时,其状态在后台数据重新集成期间变为橙色,确保在“恢复正常”阶段没有停机时间。
除了简单的状态图标,该界面还提供一键式故障转移编排,允许您在计划维护期间手动重新分配主角色,同时确保用户活动的持续可用性。
SafeKit 高可用性限制
| 限制/要求 | 原因与影响 | 推荐替代方案 |
|---|---|---|
| 复制大小:几 TB | 故障后的重新同步时间(步骤 3): • 1 Gb/s 网络 ≈ 3 小时/TB • 10 Gb/s 网络 ≈ 1 小时/TB(取决于磁盘写入性能) | • 使用外部共享存储(更昂贵,更复杂)。 |
| 文件数量:< 1,000,000 个文件 | • 故障后的重新同步时间性能(步骤 3)。 • 比较两个节点之间每个文件所需的时间。 | • 将要复制的许多文件放入虚拟硬盘/虚拟机中。 • 在这种情况下,只有代表虚拟硬盘/虚拟机的那些文件会被复制和重新同步。 |
| 故障转移容量:≤ 32 台虚拟机 | • 每个虚拟机都在独立的 mirror 模块中运行。 • 同一集群中最多可运行 32 个 mirror 模块。 | • 使用外部共享存储和另一个虚拟机集群解决方案(更昂贵,更复杂)。 |
| 网络架构:远程站点之间的局域网/虚拟局域网 | • 虚拟 IP 地址在同一子网中的 2 个节点之间自动故障转移。 • 良好的带宽,用于重新同步(步骤 3)。 • 同步复制的低延迟:通常 < 5 毫秒 RTT;应根据应用程序的写入速率验证较高值。 | • 如果两个节点位于不同的子网中(云中常见),请使用其他重新路由选项:负载均衡器、云提供商 CLI、BGP 或 DNS 重定向。 • 对于高延迟网络,请使用具有异步复制的备份解决方案。 |
比较:SafeKit SANless 集群与传统 Docker HA
| 特色 | 传统 HA(K8s/共享存储) | SafeKit(无共享 Mirror) |
|---|---|---|
| 存储架构 | 需要昂贵的 SAN 或 NAS(共享磁盘) | 无共享:仅使用本地磁盘 |
| 复制类型 | 通常为块级(配置复杂) | 字节级文件复制(透明) |
| 数据一致性 | 取决于外部存储的可靠性 | 同步复制 (RPO = 0) |
| 网络设置 | 复杂(负载均衡器、入口等) | 自动虚拟 IP (VIP) 故障转移 |
| 技能要求 | 专家(Kubernetes /集群专家) | 简单:无需专业技能 |
| 故障恢复流程 | 手动或复杂地重新同步 | 自动重新同步修改后的数据 |
比较:SafeKit 与开源 Linux HA(Pacemaker/Corosync/DRBD)
| 特色 | Linux HA 堆栈(Pacemaker + Corosync + DRBD) | SafeKit(无共享 Mirror) |
|---|---|---|
| 架构 | 模块化:需要管理 3 种或更多种不同的工具和内核模块。 | 一体化:用于复制和故障转移的单一集成软件。 |
| 复制级别 | 块级 (DRBD):复制整个分区/磁盘卷。 | 字节级(SafeKit):仅复制特定文件内已修改的数据。 |
| 配置简便 | 复杂:需要 CLI(命令行界面)专业知识来手动编程排序约束(虚拟 IP、挂载)、应用程序恢复脚本和仲裁/隔离规则。 | 简单:直观的 Web 控制台和即用型应用程序模块。 |
| 隔离(STONITH) | 防止损坏的强制措施:STONITH(Shoot The Other Node In The Head)需要专门的硬件(IPMI/iDRAC)来切断电源或重启故障服务器。 | 基于软件:智能分割脑解决方案,无需额外硬件。 |
| 故障恢复流程 | 手动/技术:重新同步期间数据发散或“脑裂”的风险。 | 自动且透明:后台重新同步,并具备安全故障恢复功能。 |
| 维护 | 更新/排除单个组件故障需要高超的专业技能。 | 普通系统管理员可通过网络仪表板轻松维护。 |
Docker 高可用性概述
SafeKit 为 Docker 提供了一个简单的双节点高可用集群,为关键任务工作负载提供了一个轻量级的 Kubernetes 替代方案。通过替换复杂的 Corosync、Pacemaker 和 DRBD 堆栈,SafeKit 无需昂贵的 SAN/NAS 共享存储。
通过实时同步复制和自动虚拟 IP (VIP) 故障转移,SafeKit 可确保零数据丢失 (RPO = 0) 和透明的应用程序恢复。对于需要强大、无 SAN 的高可用性,且配置和管理开销极小的组织而言,它是理想的解决方案。
🔍 探索 SafeKit
查找有关 SafeKit 功能、架构、视频、文档和免费试用的信息。
| 资源 | 描述 | 链接 |
|---|---|---|
| 主要功能 | 了解 SafeKit 为何是一种简单且经济高效的高可用性解决方案。 | 探索主要功能 |
| 用例 | 了解 SafeKit 如何保持关键应用程序和基础设施的可用性。 | 探索用例 |
| 部署模型 | SafeKit 无需 SAN 或共享存储即可提供高可用性。 | 探索部署模型 |
| 高可用性策略 | 比较虚拟机的可用性与应用程序的可用性。 | 比较这两种策略 |
| 技术规格 | 查看 SafeKit 集群的技术要求和限制。 | 阅读技术规格 |
| 视频 | 观看 SafeKit 配置和自动故障转移的演示。 | 观看技术视频 |
| 架构 | 了解 SafeKit mirror 集群如何实时复制文件并处理故障转移。 | 探索 Mirror 架构 |
| 架构 | 了解 SafeKit farm 集群如何平衡网络流量并处理故障转移。 | 探索 Farm 架构 |
| 产品对比 | 将 SafeKit 与传统的高可用性集群进行比较。 | 比较解决方案 |
| 技术资源 | 查找技术文档、下载 SafeKit 并访问免费试用版。 | 访问文档和免费试用版 |
| 应用模块 | 使用预配置的 SafeKit 模块为您的应用程序设置高可用性。 | 探索应用模块 |