リリース2.0からリリース2.1へのストアのアップグレードは、一度に1つのストレージ・ノードに対して実行できます。これは、2.0と2.1のストレージ・ノードが混在していても同じノードで同時に実行できるためです。これにより、最も効率的な方法でストレージ・ノードを戦略的にアップグレードできます。
1.0ストアをリリース2.1に直接アップグレードすることできません。2.1にアップグレードする前に、ストアを1.0から2.0にアップグレードする必要があります。1.0ストアをアップグレードする方法は、「NoSQL DBリリース1.0からNoSQL DBリリース2.0へのアップグレード」を参照してください。
ストアに多数のストレージ・ノードが含まれている場合、スクリプトを使用してアップグレードを実行することもできます。詳細は、「2.1にアップグレードするためのスクリプトの使用」を参照してください。
潜在的な問題を回避するために、新しいCLIコマンドを使用して、ノードを同時にアップグレードするタイミングを特定できます。このようなコマンドについては、次の手順で説明します。
ストアをアップグレードするには、まず管理サービスを実行しているストレージ・ノードにリリース2.1のソフトウェアをインストールします。新しいCLIコマンドが機能するためには、更新された管理サービスが必要です。
次の手順を実行します。
2.0.x管理サービスを実行しているストレージ・ノードで、次の手順を実行します。
更新されたソフトウェアを、管理サービスを実行しているストレージ・ノード上の新規KVHOMEディレクトリに配置します。ここでは、新規KVHOMEディレクトリはNEW_KVHOMEとします。ノードでNFSを使用してこのディレクトリを共有する場合、これは、共有ディレクトリごとに一度のみ行う必要があります。
リリース2.0 CLIを使用してストレージ・ノードを停止します。この手順を実行すると、そのストレージ・ノード上の管理サービスがシャットダウンされます。
/etc/init.d、Upstartまたは他のメカニズムを使用して再起動時にストレージ・ノード・エージェントを自動的に起動するようにノードを構成している場合は、まずそのスクリプトをNEW_KVHOMEを指すように変更します。
そのスクリプトを変更した後、ストレージ・ノードをシャットダウンします。
java -Xmx256m -Xms256m \ -jar KVHOME/lib/kvstore.jar stop -root <kvroot>
リリース2.1コードを使用してストレージ・ノードを再起動します。
nohup java -Xmx256m -Xms256m \ -jar NEW_KVHOME/lib/kvstore.jar start -root <kvroot>&
(ストレージ・ノード・エージェントを自動的に再起動するようにシステムが構成されている場合、このステップは不要です。)
CLIを使用して、リリース2.1コードを実行しているストレージ・ノードに接続します。
java -Xmx256m -Xms256m \ -jar NEW_KVHOME/lib/kvstore.jar runadmin -port 5000 -host node1 kv->
ストア内のすべてのストレージ・ノードで、リリース2.1へのアップグレードに必要とされる適切なソフトウェア・レベルが実行されていることを確認します。2.0のパッチ・リリース・レベルがソフトウェア・レベルの最小要件を満たしていることに注意してください。
kv-> verify prerequisite Verify: starting verification of mystore based upon topology sequence #315 300 partitions and 6 storage nodes. Version: 11.2.2.1.2 Time: 2013-06-25 08:19:15 UTC See node1:<KVROOT>/mystore/log/mystore_{0..N}.log for progress messages Verify prerequisite: Storage Node [sn3] on node3:5000 Datacenter: Boston [dc1] Status: RUNNING Ver: 11gR2.2.0.39 ... Verification complete, no violations.
ここに示すのは、検証コマンドの出力例の一部のみです。重要な部分は最後の行です。違反はありません。
違反の理由として最も可能性が高いのは、リリース・レベルを(誤って)ダウングレードしようとしたことです。たとえば、上位のマイナー・リリースから下位のマイナー・リリースにダウングレードすることはできません。この違反は、ストア内の他のノードのリリース・レベルより低いマイナー・リリース・レベルのパッケージを使用してCLIコマンドを実行しているために発生した可能性があります。
上位のパッチ・レベルから下位のパッチレベルにダウングレードすることは可能です。したがって、たとえば2.1.4から2.1.3にダウングレードすることはできますが、2.1.3から2.0.39にダウングレードすることはできません。
また、1.0ノードを2.1に直接アップグレードしようとした場合も違反が発生します。1.0ストアをアップグレードする場合、まず2.0にアップグレードしてから2.1にアップグレードする必要があります。1.0ストアをアップグレードする方法は、「NoSQL DBリリース1.0からNoSQL DBリリース2.0へのアップグレード」を参照してください。
いずれにしても、verify prerequisite
コマンドが違反を示す場合は、状況を解決してから、識別されたそのノードのアップグレードを試行します。
アップグレードするノードの順序付きリストを取得します。
kv-> show upgrade-order sn3 sn4 sn2 sn5 sn6
1行にまとめられたストレージ・ノードは、同時にアップグレードする必要があります。したがって、この出力ではsn3とsn4をアップグレードします。その後、sn2とsn5をアップグレードします。最後に、sn6をアップグレードします。
次のグループに進む前に、ノードのグループを完全にアップグレードする必要があることに注意してください。つまり、sn3とsn4をアップグレードしてから、sn2、sn5またはsn6のアップグレードに進みます。
アップグレードするストレージ・ノードの最初のグループ(この例ではsn3とsn4)の各ストレージ・ノードに対して、次の手順を実行します。
2.1ソフトウェアを新規KVHOMEディレクトリに配置します。ここでは、新規KVHOMEディレクトリはNEW_KVHOMEとします。ノードでNFSを使用してこのディレクトリを共有する場合、これは、共有ディレクトリごとに一度のみ行う必要があります。
リリース2.0ユーティリティを使用してストレージ・ノードを停止します。
/etc/init.d、Upstartまたは他のメカニズムを使用して再起動時にストレージ・ノード・エージェントを自動的に起動するようにノードを構成している場合は、まずそのスクリプトをNEW_KVHOMEを指すように変更します。
スクリプトを変更したら、古いコードを使用してストレージ・ノードをシャットダウンします。
java -Xmx256m -Xms256m \ -jar KVHOME/lib/kvstore.jar stop -root <kvroot>
新しいコードを使用してストレージ・ノードを再起動します。
nohup java -Xmx256m -Xms256m \ -jar NEW_KVHOME/lib/kvstore.jar start -root <kvroot>&
(ストレージ・ノード・エージェントを自動的に再起動するようにシステムが構成されている場合、このステップは不要です。)
ノードの次のセットをアップグレードする前に、アップグレードを検証します。このコマンドは、正常にアップグレードされたノード、および引き続きアップグレードが必要なノードを示します。
kv-> verify upgrade Verify: starting verification of mystore based upon topology sequence #315 300 partitions and 6 storage nodes. Version: 11.2.2.1.2 Time: .... See node1:<KVROOT>/mystore/log/mystore_{0..N}.log for progress messages Verify upgrade: Storage Node [sn3] on node3:5000 Datacenter: Boston [dc1] Status: RUNNING Ver: 11gR2.2.1.2 2013-06-19 07:28:47 UTC Build id: 81d2c9370013 ... Verify: sn2: Node needs to be upgraded from 11.2.2.0.39 to version 11.2.2.1.2 or newer ... Verification complete, 0 violations, 3 notes found. Verification note: [sn2] Node needs to be upgraded from 11.2.2.0.39 to version 11.2.2.1.2 or newer Verification note: [sn5] Node needs to be upgraded from 11.2.2.0.39 to version 11.2.2.1.2 or newer Verification note: [sn6] Node needs to be upgraded from 11.2.2.0.39 to version 11.2.2.1.2 or newer
見やすさとスペースの関係で、verify upgrade
コマンドによって生成された出力の一部のみを示しています。アップグレードされたノードは、現在のソフトウェア・バージョン番号を含む検証メッセージで識別されます。
Verify upgrade: Storage Node [sn3] on node3:5000 Datacenter: Boston [dc1] Status: RUNNING Ver: 11gR2.2.1.2 2013-06-19 07:28:47 UTC Build id: 81d2c9370013
引き続きアップグレードが必要なノードは、2種類の方法で識別されます。まず、ノードの検証メッセージは、引き続きアップグレードが必要であることを示します。
Verify: sn2: Node needs to be upgraded from 11.2.2.0.39 to version 11.2.2.1.2 or newer
次に、検証出力の末尾には、引き続きアップグレードが必要なすべてのノードが示されます。
Verification complete, 0 violations, 3 notes found. Verification note: [sn2] Node needs to be upgraded from 11.2.2.0.39 to version 11.2.2.1.2 or newer Verification note: [sn5] Node needs to be upgraded from 11.2.2.0.39 to version 11.2.2.1.2 or newer Verification note: [sn6] Node needs to be upgraded from 11.2.2.0.39 to version 11.2.2.1.2 or newer
アップグレードしたと思われるノードが、引き続きアップグレードが必要であることを検証が示す場合は、ストア内の他のノードをアップグレードする前にその問題を解決する必要があります。サニティ・チェックの一種として、アップグレードが完了したばかりのノードのみを検証できます。
kv-> verify upgrade -sn sn3 -sn sn4 Verify: starting verification of mystore based upon topology sequence #315 ... Verification complete, no violations.
show upgrade-order
コマンドで識別されたストレージ・ノードのグループのアップグレードを続行できます。前述の手順に従います。2.0の停止コマンドを使用して2.0のストレージ・ノードを停止した後、2.1の起動コマンドを使用してストレージ・ノードを再起動します。すべてのストレージ・ノードがアップグレードされるまでこれを続行します。
ある時点で次にアップグレードするノードのグループがわからなくなった場合は、show upgrade-order
コマンドをいつでも再実行できます。
kv-> show upgrade-order Calculating upgrade order, target version: 11.2.2.1.2, prerequisite: 11.2.2.0.23 sn2 sn5 sn6
ストレージ・ノードのアップグレードがすべて完了した後、verify upgrade
コマンドを実行すると、出力の末尾に検証に関する注意事項は表示されません。
kv-> verify upgrade Verify: starting verification of mystore based upon topology sequence #315 ... Verification complete, no violations. kv->
多数のストレージ・ノードが含まれるデプロイメントの場合、前述の手動によるアップグレード手順は問題をはらみます。その場合、スクリプトを使用してストアをアップグレードする必要があります。
2.1ディストリビューションでの検証にはサンプル・スクリプト(bashシェル・スクリプト)を使用できます。次の場所にあります。
<KVROOT>/examples/upgrade/onlineUpgrade
このスクリプトには、このセクションの前半で説明したのと同じアップグレード制限があります。2.0インストールから2.1へのアップグレードのみ可能です。また、アップグレード・プロセス中にストアを使用できるようにするためには、ストアに少なくとも3つのレプリケーション係数が必要です。
提供されているスクリプトはサンプルにすぎません。インストール環境で適切に機能するためには、スクリプトを変更する必要があります。
スクリプトではソフトウェア・プロビジョニングは実行されないことに注意してください。つまり、インストール・ソフトウェアのために使用するいかなる場所のホスト・マシンへの2.1パッケージの配置も自分で行う必要があります。ただし、スクリプトはsshを使用してホスト・マシンと通信するため、scpを使用してスクリプトでマシンをプロビジョニングすることもできます。
スクリプトはsshを使用するため、スクリプトが機能するためには、自動ログイン(つまり、パスワードなしのssh経由によるログイン)を許可するようにマシンを構成する必要があります。sshでは公開/秘密鍵認証をサポートしているため、これは通常は安全な動作方法です。
このようにsshを構成する方法の詳細は、http://www.linuxproblem.org/art_9.htmlを参照してください。sshおよびsshサーバーをインストールして構成する方法の詳細は、オペレーティング・システムのドキュメントを参照してください。