既存のリリースから新しいリリースへのアップグレード

既存のリリースから新しいリリースへのストアのアップグレードは、一度に1つのストレージ・ノードに対して実行できます。これは、2つのリリースが混在する複数のストレージ・ノードを同じストアで同時に実行できるためです。これにより、最も効率的な方法でストレージ・ノードを戦略的にアップグレードできます。

ノート:

ストアに多数のストレージ・ノードが含まれている場合、スクリプトを使用してアップグレードを実行することもできます。スクリプトを使用した新しいリリースへのアップグレードを参照してください。

潜在的な問題を回避するために、新しいCLIコマンドを使用して、ノードを同時にアップグレードするタイミングを特定できます。このようなコマンドについては、次の手順で説明します。

ストアをアップグレードするには、最初に最新のソフトウェアをインストールして管理CLIをアップグレードします。次に、アップグレードしたCLIを使用して、すべてのストレージ・ノードが基本要件に違反していないことを確認します。

kv-> verify prerequisite
...
Verification complete, no violations.  

すべての違反(見つかった場合)を修正したら、管理サービスを実行しているストレージ・ノードに最新のソフトウェアをインストールします。

次のようにします。

  1. 管理サービスを実行しているストレージ・ノードで、次のようにします。

    1. 更新されたソフトウェアを、管理サービスを実行しているストレージ・ノード上の新規KVHOMEディレクトリに配置します。ここでは、新規KVHOMEディレクトリはNEW_KVHOMEとします。ノードでNFSを使用してこのディレクトリを共有する場合、これは、共有ディレクトリごとに一度のみ行う必要があります。

    2. CLIを使用してストレージ・ノードを停止します。この手順を実行すると、そのストレージ・ノード上の管理サービスがシャットダウンされます。

      /etc/init.d、Upstartまたは他のメカニズムを使用して再起動時にストレージ・ノード・エージェントを自動的に起動するようにノードを構成している場合は、まずそのスクリプトをNEW_KVHOMEを指すように変更します。

      そのスクリプトを変更した後、ストレージ・ノードをシャットダウンします。

      java -Xmx64m -Xms64m \
      -jar KVHOME/lib/kvstore.jar stop -root <kvroot>
    3. 新しいリリース・コードを使用してストレージ・ノードを再起動します。

      nohup java -Xmx64m -Xms64m \
      -jar NEW_KVHOME/lib/kvstore.jar start -root <kvroot> & 

      (ストレージ・ノード・エージェントを自動的に再起動するようにシステムが構成されている場合、このステップは不要です。)

    4. CLIを使用して、新しいリリース・コードを実行しているストレージ・ノードに接続します。

      java -Xmx64m -Xms64m \
      -jar NEW_KVHOME/lib/kvstore.jar runadmin -port 5100 -host node1 \
      -security USER/security/admin/security
    5. ストア内のすべてのストレージ・ノードで、新しいリリースへのアップグレードに必要とされる適切なソフトウェア・レベルが実行されていることを確認します。

      kv-> verify prerequisite
      Verify: starting verification of store mystore 
      based upon topology sequence #315
      300 partitions and 6 storage nodes
      Time: 2020-07-30 15:23:50 UTC   Version: 20.2.15
      See node01:<KVROOT>/mystore/log/mystore_{0..N}.log for progress messages
      Verify prerequisite: Storage Node [sn1] on node01:5100
      Zone: [name=Boston id=zn1 type=PRIMARY allowArbiters=false 
      masterAffinity=false] Status: RUNNING   Ver: 20.2.15 2020-07-24 09:50:01 UTC 
      Build id: c8998e4a8aa5 Edition: Enterprise
      Verify prerequisite: Storage Node [sn2] on node02:5200
      Zone: [name=Boston id=zn1 type=PRIMARY allowArbiters=false 
      masterAffinity=false] Status: RUNNING   Ver: 18.1.20 2018-09-19 06:43:20 UTC
      Build id: 9f5c79a9f7e8 Edition: Enterprise
      ...
      Verification complete, no violations.

      ノート:

      ここに示すのは、検証コマンドの出力例の一部のみです。重要な部分は最後の行です。違反はありません。

      違反の理由として最も可能性が高いのは、リリース・レベルを(誤って)ダウングレードしようとしたことです。たとえば、上位のマイナー・リリースから下位のマイナー・リリースにダウングレードすることはできません。この違反は、ストア内の他のノードのリリース・レベルより低いマイナー・リリース・レベルのパッケージを使用してCLIコマンドを実行しているために発生した可能性があります。

      ノート:

      上位のパッチ・レベルから下位のパッチレベルにダウングレードすることは可能です。したがって、たとえば20.1.4から20.1.3にダウングレードすることはできますが、20.1.3から20.0.4にダウングレードすることはできません。

      いずれにしても、verify prerequisiteコマンドが違反を示す場合は、状況を解決してから、識別されたそのノードのアップグレードを試行します。

    6. アップグレードするノードの順序付きリストを取得します。

      kv-> show upgrade-order
      Calculating upgrade order, target version: 20.2.15, prerequisite: 18.1.5
      sn3 sn4
      sn2 sn5
      sn6

      このコマンドでは、1つ以上のストレージ・ノードが1行に表示されます。1行に複数のストレージ・ノードが表示される場合、スペースで区切られます。1行に複数のストレージ・ノードが表示されている場合、必要であればそのノードをまとめて安全にアップグレードできます。複数のノードをまとめてアップグレードする場合、すべてのノードのアップグレードが完了してからでなければ、リストの次のノードはアップグレードできません。ある時点で次にアップグレードするノードのグループがわからなくなった場合は、show upgrade-orderコマンドをいつでも再実行できます。

      1行にまとめられたストレージ・ノードは、同時にアップグレードできます。したがって、この出力ではsn3とsn4をアップグレードします。その後、sn2とsn5をアップグレードします。最後に、sn6をアップグレードします。

      ノート:

      次のグループに進む前に、ノードのグループを完全にアップグレードする必要があります。つまり、sn3とsn4をアップグレードしてから、sn2、sn5またはsn6のアップグレードに進みます。
  2. アップグレードするストレージ・ノードの最初のグループ(この例ではsn3とsn4)の各ストレージ・ノードに対して、次の手順を実行します。

    1. 新しいリリースのソフトウェアを新しいKVHOMEディレクトリに置きます。ここでは、新規KVHOMEディレクトリはNEW_KVHOMEとします。ノードでNFSを使用してこのディレクトリを共有する場合、これは、共有ディレクトリごとに一度のみ行う必要があります。

    2. CLIユーティリティを使用してストレージ・ノードを停止します。

      /etc/init.d、Upstartまたは他のメカニズムを使用して再起動時にストレージ・ノード・エージェントを自動的に起動するようにノードを構成している場合は、まずそのスクリプトをNEW_KVHOMEを指すように変更します。

      スクリプトを変更したら、古いコードを使用してストレージ・ノードをシャットダウンします。

      java -Xmx64m -Xms64m \
      -jar KVHOME/lib/kvstore.jar stop -root <kvroot>
    3. 新しいリリース・コードを使用してストレージ・ノードを再起動します。

      nohup java -Xmx64m -Xms64m \
      -jar NEW_KVHOME/lib/kvstore.jar start -root <kvroot> & 

      (ストレージ・ノード・エージェントを自動的に再起動するようにシステムが構成されている場合、このステップは不要です。)

  3. ノードの次のセットをアップグレードする前に、アップグレードを検証します。このコマンドは、正常にアップグレードされたノード、および引き続きアップグレードが必要なノードを示します。

    kv-> verify upgrade
    Verify: starting verification of store mystore 
    based upon topology sequence #315
    300 partitions and 6 storage nodes
    Time: 2020-07-30 15:28:15 UTC   Version: 20.2.15
    See node01:<KVROOT>/mystore/log/mystore_{0..N}.log for progress messages
    Verify upgrade: Storage Node [sn1] on node01:5100
    Zone: [name=Boston id=zn1 type=PRIMARY allowArbiters=false 
    masterAffinity=false] Status: RUNNING   Ver: 20.2.15 2020-07-24 09:50:01 UTC
    Build id: c8998e4a8aa5 Edition: Enterprise
    Verify: sn2: Node needs to be upgraded from 18.1.20 to version 20.2.15 or newer
    Verify upgrade: Storage Node [sn2] on node02:5200
    Zone: [name=Boston id=zn1 type=PRIMARY allowArbiters=false 
    masterAffinity=false] Status: RUNNING   Ver: 18.1.20 2018-09-19 06:43:20 UTC 
    Build id: 9f5c79a9f7e8 Edition: Enterprise
    Verify upgrade: Storage Node [sn3] on node03:5300
    Zone: [name=Boston id=zn1 type=PRIMARY allowArbiters=false 
    masterAffinity=false] Status: RUNNING   Ver: 20.2.15 2020-07-24 09:50:01 UTC 
    Build id: c8998e4a8aa5 Edition: Enterprise
    Verify upgrade: Storage Node [sn4] on node04:5400
    Zone: [name=Boston id=zn1 type=PRIMARY allowArbiters=false 
    masterAffinity=false] Status: RUNNING   Ver: 20.2.15 2020-07-24 09:50:01 UTC 
    Build id: c8998e4a8aa5 Edition: Enterprise
    Verify: sn5: Node needs to be upgraded from 18.1.20 to version 20.2.15 or newer
    Verify upgrade: Storage Node [sn5] on node05:5500
    Zone: [name=Boston id=zn1 type=PRIMARY allowArbiters=false 
    masterAffinity=false] Status: RUNNING   Ver: 18.1.20 2018-09-19 06:43:20 UTC 
    Build id: 9f5c79a9f7e8 Edition: Enterprise
    Verify: sn6: Node needs to be upgraded from 18.1.20 to version 20.2.15 or newer
    Verify upgrade: Storage Node [sn6] on node06:5600
    Zone: [name=Boston id=zn1 type=PRIMARY allowArbiters=false 
    masterAffinity=false] Status: RUNNING   Ver: 18.1.20 2018-09-19 06:43:20 UTC 
    Build id: 9f5c79a9f7e8 Edition: Enterprise
     
    Verification complete, 0 violations, 3 notes found.
    Verification note: [sn2]    Node needs to be upgraded from
    18.1.20 to version 20.2.15 or newer
    Verification note: [sn5]    Node needs to be upgraded from
    18.1.20 to version 20.2.15 or newer
    Verification note: [sn6]    Node needs to be upgraded from
    18.1.20 to version 20.2.15 or newer

    見やすさとスペースの関係で、verify upgradeコマンドによって生成された出力の一部のみを示しています。アップグレードされたノードは、現在のソフトウェア・バージョン番号を含む検証メッセージで識別されます。

    Verify upgrade: Storage Node [sn3] on node03:5300
    Zone: [name=Boston id=zn1 type=PRIMARY allowArbiters=false 
    masterAffinity=false] Status: RUNNING   Ver: 20.2.15 2020-07-24 09:50:01 UTC 
    Build id: c8998e4a8aa5 Edition: Enterprise

    引き続きアップグレードが必要なノードは、2種類の方法で識別されます。まず、ノードの検証メッセージは、引き続きアップグレードが必要であることを示します。

    Verification note: [sn2]    Node needs to be upgraded from
    18.1.20 to version 20.2.15 or newer

    次に、検証出力の末尾には、引き続きアップグレードが必要なすべてのノードが示されます。

    Verification complete, 0 violations, 3 notes found.
    Verification note: [sn2]    Node needs to be upgraded from
    18.1.20 to version 20.2.15 or newer
    Verification note: [sn5]    Node needs to be upgraded from
    18.1.20 to version 20.2.15 or newer
    Verification note: [sn6]    Node needs to be upgraded from
    18.1.20 to version 20.2.15 or newer

    ノート:

    アップグレードしたと思われるノードが、引き続きアップグレードが必要であることを検証が示す場合は、ストア内の他のノードをアップグレードする前にその問題を解決する必要があります。サニティ・チェックの一種として、アップグレードが完了したばかりのノードのみを検証できます。

    kv-> verify upgrade -sn sn3 -sn sn4
    Verify: starting verification of store mystore 
    based upon topology sequence #315
    300 partitions and 6 storage nodes
    Time: 2020-07-30 15:29:06 UTC   Version: 20.2.15
    See node01:<KVROOT>/mystore/log/mystore_{0..N}.log for progress messages
    Verify upgrade: Storage Node [sn3] on node03:5300
    Zone: [name=Boston id=zn1 type=PRIMARY allowArbiters=false 
    masterAffinity=false] Status: RUNNING   Ver: 20.2.15 2020-07-24 09:50:01 UTC 
    Build id: c8998e4a8aa5 Edition: Enterprise
    Verify upgrade: Storage Node [sn4] on node04:5400
    Zone: [name=Boston id=zn1 type=PRIMARY allowArbiters=false 
    masterAffinity=false] Status: RUNNING   Ver: 20.2.15 2020-07-24 09:50:01 UTC 
    Build id: c8998e4a8aa5 Edition: Enterprise
     
    Verification complete, no violations.
  4. show upgrade-orderコマンドで識別されたストレージ・ノードのグループのアップグレードを続行できます。前述の手順に従います。既存のリリースの停止コマンドを使用して既存のリリースのストレージ・ノードを停止した後、新しいリリースの起動コマンドを使用してストレージ・ノードを再起動します。すべてのストレージ・ノードがアップグレードされるまでこれを続行します。

    ある時点で次にアップグレードするノードのグループがわからなくなった場合は、show upgrade-orderコマンドをいつでも再実行できます。

    kv-> show upgrade-order
    Calculating upgrade order, target version: 20.2.15, prerequisite: 18.1.5
    sn2 sn5
    sn6
  5. ストレージ・ノードのアップグレードがすべて完了した後、verify upgradeコマンドを実行すると、出力の末尾に検証に関するノートは表示されません。

    kv-> verify upgrade
    Verify: starting verification of store mystore 
    based upon topology sequence #315
    300 partitions and 6 storage nodes
    Time: 2020-07-30 15:33:22 UTC   Version: 20.2.15
    See node01:<KVROOT>/mystore/log/mystore_{0..N}.log for progress messages
    Verify upgrade: Storage Node [sn1] on node01:5100
    Zone: [name=Boston id=zn1 type=PRIMARY allowArbiters=false 
    masterAffinity=false] Status: RUNNING   Ver: 20.2.15 2020-07-24 09:50:01 UTC 
    Build id: c8998e4a8aa5 Edition: Enterprise
    Verify upgrade: Storage Node [sn2] on node02:5200
    Zone: [name=Boston id=zn1 type=PRIMARY allowArbiters=false 
    masterAffinity=false] Status: RUNNING   Ver: 20.2.15 2020-07-24 09:50:01 UTC 
    Build id: c8998e4a8aa5 Edition: Enterprise
    Verify upgrade: Storage Node [sn3] on node03:5300
    Zone: [name=Boston id=zn1 type=PRIMARY allowArbiters=false 
    masterAffinity=false] Status: RUNNING   Ver: 20.2.15 2020-07-24 09:50:01 UTC 
    Build id: c8998e4a8aa5 Edition: Enterprise
    Verify upgrade: Storage Node [sn4] on node04:5400
    Zone: [name=Boston id=zn1 type=PRIMARY allowArbiters=false 
    masterAffinity=false] Status: RUNNING   Ver: 20.2.15 2020-07-24 09:50:01 UTC 
    Build id: c8998e4a8aa5 Edition: Enterprise
    Verify upgrade: Storage Node [sn5] on node05:5500
    Zone: [name=Boston id=zn1 type=PRIMARY allowArbiters=false 
    masterAffinity=false] Status: RUNNING   Ver: 20.2.15 2020-07-24 09:50:01 UTC 
    Build id: c8998e4a8aa5 Edition: Enterprise
    Verify upgrade: Storage Node [sn6] on node06:5600
    Zone: [name=Boston id=zn1 type=PRIMARY allowArbiters=false 
    masterAffinity=false] Status: RUNNING   Ver: 20.2.15 2020-07-24 09:50:01 UTC 
    Build id: c8998e4a8aa5 Edition: Enterprise
     
    Verification complete, no violations.

スクリプトを使用した新しいリリースへのアップグレード

多数のストレージ・ノードが含まれるデプロイメントの場合、前述の手動によるアップグレード手順は問題をはらみます。その場合、スクリプトを使用してストアをアップグレードする必要があります。

リリース4ディストリビューションでの検証にはサンプル・スクリプト(bashシェル・スクリプト)を使用できます。次の場所にあります。

<KVHOME>/examples/upgrade/onlineUpgrade

このスクリプトには、この項で前述したのと同じアップグレード制限があります。アップグレード・プロセス時にストアが使用可能になるには、ストアのレプリケーション係数が3以上である必要があります。

提供されているスクリプトはサンプルにすぎません。インストール環境で適切に機能するためには、スクリプトを変更する必要があります。

ノート:

スクリプトではソフトウェア・プロビジョニングは実行されません。つまり、インストール・ソフトウェアのために使用するいかなる場所のホスト・マシンへの新しいリリース・パッケージの配置も自分で行う必要があります。ただし、スクリプトはsshを使用してホスト・マシンと通信するため、scpを使用してスクリプトでマシンをプロビジョニングすることもできます。

スクリプトはsshを使用するため、スクリプトが機能するためには、自動ログイン(つまり、パスワードなしのssh経由によるログイン)を許可するようにマシンを構成する必要があります。sshでは公開/秘密キー認証をサポートしているため、これは通常は安全な動作方法です。

このようにsshを構成する方法の詳細は、https://www.linuxproblem.org/art_9.htmlを参照してください。sshおよびsshサーバーをインストールして構成する方法の詳細は、オペレーティング・システムのドキュメントを参照してください。