---
title: "在 HA 集群中升级受SafeKit保护的应用程序"
canonical: "https://safekit.eviden.com/zh-hans/best-practises/how-to-upgrade-an-application-protected-by-safekit/"
description: "了解如何安全地升级受SafeKit保护的应用程序。比较次要升级和主要升级、滚动升级、回滚策略以及基于虚拟机的高可用性。"
category: "best-practises"
lang: "zh-hans"
topics: "升级受SafeKit保护的高可用性应用程序, 虚拟机级高可用性, 应用层高可用性, 选择合适的升级策略, 结论"
---

# 升级高可用性集群中受SafeKit保护的应用程序 {#upgrading-an-application-protected-by-safekit-in-an-ha-cluster}

## 升级受SafeKit保护的高可用性应用程序 {#upgrading-a-high-availability-application-protected-by-safekit}

保持业务关键型应用程序的更新对于安全性、性能和新功能的获取至关重要。当应用程序受SafeKit保护时，升级过程取决于所使用的高可用性架构。

常见的部署模型有两种：

  * **虚拟机高可用性** ，其中应用程序在由SafeKit管理的受保护虚拟机中运行。
  * **应用级高可用性** ，其中应用程序安装在两台服务器上。

每款机型都提供不同的升级机制和回滚策略。

## 虚拟机级高可用性 {#vm-level-ha}

使用SafeKit VM 故障转移解决方案（例如**hyperv.safe**和**kvm.safe** ，应用程序只需在虚拟机内安装一次。

SafeKit保护的是整个虚拟机而不是应用程序本身，这大大简化了维护操作。

### 简化升级流程 {#simplified-upgrade-process}

因为您使用的是应用程序的单个虚拟机实例，所以维护是在虚拟化层处理的，而不是通过应用程序级别的故障转移处理的。

升级过程很简单：

  1. 使用 Hyper-V 或 KVM 管理控制台创建虚拟机的检查点或快照。
  2. 在虚拟机内部执行应用程序升级。
  3. 验证升级后的应用程序。
  4. 如果升级成功，请删除快照并继续正常运行。
  5. 如果出现问题，请从快照恢复虚拟机，并立即恢复到之前已知的正常工作状态。

服务中断时间仅限于应用程序自身升级过程通常所需的时间。

### 虚拟机级保护的优势 {#benefits-of-vm-level-protection}

  * 只需维护一个应用程序实例。
  * 没有集群感知升级程序。
  * 通过虚拟机快照快速回滚。
  * 降低操作复杂性。
  * 无论受保护的应用程序是什么，升级过程都保持一致。

对于无法实现或难以实现应用程序集群的打包应用程序和商用现成软件而言，这种方法尤其具有吸引力。

## 应用层高可用性 {#app-level-ha}

在传统中 SafeKit 集群中，该应用程序安装在两个节点上：节点 1 和节点 2。 SafeKit 同步这些节点之间的应用程序数据，并在需要时自动处理故障转移。

### 应用程序小版本升级 {#app-level-ha-minor}

小版本升级仅修改应用程序二进制文件，同时保持复制数据在不同版本之间完全兼容。由于复制数据格式不变， SafeKit支持滚动升级，最大限度地减少停机时间。 

  1. 集群初始运行在**✅ PRIM（节点 1）/ ✅ SECOND（节点 2）**配置下。应用程序运行在 PRIM 节点上，复制的数据持续同步到 SECOND 节点。 
  2. 在第二个节点（ **❌ 停止（节点 2）** ）上停止SafeKit模块，升级应用程序，然后重启该模块。在此操作期间，应用程序将继续在**✅ 单独（节点 1）**上运行，不会发生服务中断。 
  3. 重启后，升级后的节点以**✅ SECOND（节点 2）**身份重新加入集群，并重新同步复制的数据。 
  4. 停止 PRIM 节点（**❌ 停止（节点 1）**). SafeKit 自动执行故障转移，升级后的节点变为 **✅ 单独（节点 2）**该应用程序已在此节点上重启。停机时间仅限于故障转移和应用程序重启时间。 
  5. 如果升级后的应用程序在 ALONE 状态下运行正常，则升级剩余节点（节点 1）并重新启动其SafeKit模块。 
  6. 重新同步后，集群将恢复到正常的**✅ SECOND（节点 1）/ ✅ PRIM（节点 2）**配置。原始角色可以通过SafeKit管理控制台手动恢复，也可以通过SafeKit配置自动恢复。 

**回滚程序**

  * 在步骤 5 中，停止**✅ ALONE（节点 2）**节点。
  * 强制原始节点（节点 1）以主节点**ALONE（节点 1）**启动，并使用先前的应用程序版本。
  * 在升级后的节点（节点 2）上重新安装先前的版本。
  * 恢复到正常的**✅ PRIM（节点 1）/ ✅ SECOND（节点 2）**配置。

整个升级过程的停机时间仅限于从**✅ PRIM / ✅ SECOND**过渡到**❌ STOP / ✅ ALONE** 。 

### 主要应用升级 {#app-level-ha-major}

重大升级会改变复制数据的格式或结构。由于新版本生成的数据与旧版本不再兼容，因此无法执行滚动升级。 

  1. 集群最初以**✅ PRIM（节点 1）/ ✅ SECOND（节点 2）**配置运行。 
  2. 停止第二个节点，然后停止主节点。集群转换到**❌ STOP (节点 1) / ❌ STOP (节点 2)** 。 
  3. 升级原 PRIM 节点并重启。该节点将以**✅ ALONE (节点 1)**的形式单独启动，并安装新版本的应用程序。 
  4. 验证升级后的应用程序，并确认其运行正常。 
  5. 如果验证成功，则升级剩余节点并重新启动其SafeKit模块。 
  6. 升级后的节点变为**✅ SECOND（节点 2）** ，重新同步应用程序数据，集群恢复到正常的**✅ PRIM（节点 1）/ ✅ SECOND（节点 2）**配置。 

**回滚程序**

  * 在步骤 5 中，停止升级后的**✅ ALONE（节点 1）**节点。
  * 强制未升级的节点作为主节点**✅ 单独启动（节点 2）** 。
  * 在升级后的节点上重新安装之前的应用程序版本。
  * 恢复原始**✅ SECOND（节点 1）/ ✅ PRIM（节点 2）**配置。

由于复制的数据在迁移过程中被修改，因此停机时间对应于**❌ STOP / ❌ STOP**状态与第一个升级节点作为**✅ ALONE**重新启动之间的时间段。 

### 为什么SafeKit能简化应用程序升级 {#why-safekit-simplifies-application-upgrades}

SafeKit通过允许管理员执行以下操作来最大限度地降低操作风险：

  * 一次升级一个节点。
  * 尽可能保持服务可用性。
  * 在切换生产流量之前，请验证新版本。
  * 如果检测到意外问题，请快速回滚到上一个节点。

## 选择合适的升级策略 {#choosing-the-right-upgrade-strategy}

部署模型|应用实例|复制数据影响|升级方法  
---|---|---|---  
应用层高可用性|双节点|取决于升级类型|带故障转移的滚动升级  
虚拟机级高可用性 ( hyperv.safe / kvm.safe ) |单个虚拟机|在虚拟机内部管理|快照、升级、验证、必要时回滚  
  
## 结论 {#conclusion}

SafeKit提供灵活的高可用性架构，可适应不同应用程序的运行需求。无论您是保护跨两个节点的集群应用程序，还是保护运行在虚拟机中的单个应用程序实例， SafeKit都能实现受控升级，最大限度地减少停机时间，并在需要维护操作时提供可靠的恢复选项。

