---
title: "HAクラスタでSafeKitによって保護されているアプリケーションをアップグレードする"
canonical: "https://safekit.eviden.com/ja/best-practises/how-to-upgrade-an-application-protected-by-safekit/"
description: "SafeKitで保護されているアプリケーションを安全にアップグレードする方法を学びましょう。マイナーアップグレードとメジャーアップグレード、ローリングアップグレード、ロールバック戦略、VM ベースの高可用性を比較します。"
category: "best-practises"
lang: "ja"
topics: "SafeKitで保護された高可用性アプリケーションのアップグレード, VMレベルの高可用性, アプリケーションレベルの高可用性, 適切なアップグレード戦略の選択, 結論"
---

# HAクラスタでSafeKitによって保護されているアプリケーションをアップグレードする {#upgrading-an-application-protected-by-safekit-in-an-ha-cluster}

## SafeKitで保護された高可用性アプリケーションのアップグレード {#upgrading-a-high-availability-application-protected-by-safekit}

ビジネスに不可欠なアプリケーションを最新の状態に保つことは、セキュリティ、パフォーマンス、および新機能へのアクセスにとって不可欠です。アプリケーションがSafeKitによって保護されている場合、アップグレード手順は使用されている高可用性アーキテクチャによって異なります。

一般的な導入モデルは2つあります。

  * **仮想マシン高可用性**では、アプリケーションはSafeKitによって管理される保護された仮想マシン内で実行されます。
  * **アプリケーションレベルの高可用性**では、アプリケーションは 2 台のサーバーにインストールされます。

各モデルは、それぞれ異なるアップグレードメカニズムとロールバック戦略を提供します。

## VMレベルの高可用性 {#vm-level-ha}

SafeKitや**kvm.safe**などの**hyperv.safe** VMフェイルオーバーソリューションでは、アプリケーションは仮想マシン内に一度だけインストールされます。

SafeKitアプリケーション自体ではなくVM全体を保護するため、メンテナンス作業が大幅に簡素化されます。

### 簡略化されたアップグレードプロセス {#simplified-upgrade-process}

アプリケーションの単一のVMインスタンスを扱っているため、メンテナンスはアプリケーションレベルのフェイルオーバーではなく、仮想化レイヤーで処理されます。

アップグレード手順は簡単です。

  1. Hyper-VまたはKVM管理コンソールを使用して、仮想マシンのチェックポイントまたはスナップショットを作成します。
  2. 仮想マシン内でアプリケーションのアップグレードを実行します。
  3. アップグレードされたアプリケーションを検証してください。
  4. アップグレードが成功した場合は、スナップショットを削除して通常どおりの運用を続けてください。
  5. 問題が発生した場合は、スナップショットから仮想マシンを復元し、直ちに以前の正常な状態に戻してください。

サービスの中断期間は、アプリケーション自体のアップグレード手順で通常必要とされる期間に限定されます。

### VMレベル保護のメリット {#benefits-of-vm-level-protection}

  * 管理すべきアプリケーションインスタンスは1つだけです。
  * クラスタ対応のアップグレード手順はありません。
  * VMスナップショットによる高速ロールバック。
  * 運用上の複雑さが軽減される。
  * 保護対象アプリケーションの種類に関わらず、一貫したアップグレードプロセスを実現します。

このアプローチは、アプリケーションクラスタリングが利用できない、あるいは実装が困難なパッケージアプリケーションや市販の既製ソフトウェアにとって特に魅力的です。

## アプリケーションレベルの高可用性 {#app-level-ha}

伝統的に SafeKit クラスターの場合、アプリケーションはノード1とノード2の2つのノードにインストールされます。 SafeKit これらのノード間でアプリケーションデータを同期し、必要に応じてフェイルオーバーを自動的に処理します。

### マイナーアプリケーションアップグレード {#app-level-ha-minor}

マイナーアップグレードでは、アプリケーションのバイナリのみが変更され、レプリケートされたデータはバージョン間で完全に互換性が維持されます。レプリケートされたデータのフォーマットは変更されないため、 SafeKit最小限のダウンタイムでローリングアップグレードをサポートします。 

  1. クラスターは当初、 **✅ PRIM (ノード 1) / ✅ SECOND (ノード 2)**構成で動作します。アプリケーションは PRIM ノードで実行され、複製されたデータは SECOND ノードに継続的に同期されます。 
  2. 2 番目のノード ( **❌ STOP (ノード 2)** ) 上のSafeKitモジュールを停止し、アプリケーションをアップグレードしてから、モジュールを再起動します。この操作中、アプリケーションは**✅ ALONE (ノード 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. SECOND ノードを停止してから PRIM ノードを停止します。クラスタは**❌ STOP (ノード 1) / ❌ STOP (ノード 2)**に移行します。 
  3. 以前の PRIM ノードをアップグレードして再起動します。ノードは、新しいアプリケーション バージョンで**✅ ALONE (ノード 1)**として単独で起動します。 
  4. アップグレードしたアプリケーションを検証し、正しく動作することを確認してください。 
  5. 検証が成功した場合は、残りのノードをアップグレードし、そのSafeKitモジュールを再起動してください。 
  6. アップグレードされたノードは**✅ SECOND (ノード 2)**となり、アプリケーション データを再同期し、クラスタは通常の**✅ PRIM (ノード 1) / ✅ SECOND (ノード 2)**構成に戻ります。 

**ロールバック手順**

  * ステップ 5 で、アップグレードされた**✅ ALONE (ノード 1)**ノードを停止します。
  * アップグレードされていないノードをプライマリ**✅ ALONE (ノード 2)**として強制的に起動します。
  * アップグレードしたノードに、以前のバージョンのアプリケーションを再インストールしてください。
  * 元の**✅ SECOND (ノード 1) / ✅ PRIM (ノード 2)**構成を復元します。

複製されたデータは移行中に変更されるため、ダウンタイムは**❌ STOP / ❌ STOP**状態から最初のアップグレードされたノードが**✅ ALONE**として再起動するまでの期間に相当します。 

### SafeKitアプリケーションのアップグレードを簡素化する理由 {#why-safekit-simplifies-application-upgrades}

SafeKit 、管理者が以下の操作を行えるようにすることで、運用リスクを最小限に抑えます。

  * 一度に1つのノードずつアップグレードしてください。
  * 可能な限りサービスの可用性を維持する。
  * 本番環境へのトラフィックを切り替える前に、新しいバージョンを検証してください。
  * 予期せぬ問題が検出された場合は、速やかに前のノードに戻してください。

## 適切なアップグレード戦略の選択 {#choosing-the-right-upgrade-strategy}

デプロイメントモデル|アプリケーションインスタンス|レプリケートされたデータの影響|アップグレード方法  
---|---|---|---  
アプリケーションレベルのHA | 2ノード|アップグレードの種類による|フェイルオーバー付きローリングアップグレード  
VMレベルのHA（ hyperv.safe / kvm.safe ） | 1台のVM | VM内で管理|必要に応じてスナップショット、アップグレード、検証、ロールバック  
  
## 結論 {#conclusion}

SafeKit 、さまざまなアプリケーションの運用要件に合わせて柔軟に対応できる高可用性アーキテクチャを提供します。2つのノードにまたがるクラスタ化されたアプリケーションを保護する場合でも、仮想マシン上で動作する単一のアプリケーションインスタンスを保護する場合でも、 SafeKit制御されたアップグレードを可能にし、ダウンタイムを最小限に抑え、メンテナンス作業が必要な際にはいつでも信頼性の高い復旧オプションを提供します。

