障害が発生したストレージ・ノードの置換

ストレージ・ノードに障害が発生した場合、または発生中の場合、ストレージ・ノードを置換できます。正常なマシンを、優れた仕様の別のマシンにアップグレードするのも、ストレージ・ノード置換の一般的なシナリオです。この手順を進める前に、通常、根本の問題(ハードウェアに関連する場合もソフトウェアに関連する場合もある)を解決します。

障害が発生したストレージ・ノードの置換には2つの方法があります。

別の新しいストレージ・ノード(障害が発生したホストと異なるホスト名、IPアドレスおよびポート)を使用して、障害が発生したストレージ・ノードを置換するには、次の手順を実行します。

  1. ハードウェアを置換する場合、起動し、本番環境の準備が整っていることを確認します。

  2. 新しいかわりのノードでmakebootconfigユーティリティを使用して、"boot config"構成ファイルを作成します。新規のストレージ・ノードが実行されるハードウェアでこれを実行します。ハードウェアがOracle NoSQL Database管理プロセスをホストする場合にのみ、-adminオプション(管理コンソールのポート)を指定する必要があります。

    "boot config"ファイルを作成するには、次のコマンドを発行します。

    > mkdir -p KVROOT     (if it doesn't already exist)
    > java -Xmx256m -Xms256m \
    -jar KVHOME/lib/kvstore.jar makebootconfig -root KVROOT \
                                                      -port 5000 \
                                                      -admin 5001 \
                                                      -host <hostname> \
                                                      -harange 5010,5020 \
                                                      -store-security none 
  3. 新規ノードでOracle NoSQL Databaseソフトウェアを起動します。

    > nohup java -Xmx256m -Xms256m \
    -jar KVHOME/lib/kvstore.jar start -root KVROOT& 
  4. 新規ストレージ・ノードを新規ノードにデプロイします。CLIまたは管理コンソールのいずれかを使用し、既存の管理プロセスを使用してこれを行います。CLIを使用してこれを行う場合、次のようにします。

    > java -Xmx256m -Xms256m \
    -jar KVHOME/lib/kvstore.jar runadmin  \
    -port <port> -host <host>
    kv-> plan deploy-sn -zn <id> -host <host> -port <port> -wait
    kv-> 
  5. 新規ストレージ・ノードをストレージ・ノード・プールに追加します。(ストレージ・ノード・プールはストアのインストール時に作成し、すべてのストレージ・ノードを追加しましたが、製品のこのバージョンではこれ以外に使用されません。)

    kv-> show pools
    AllStorageNodes: sn1, sn2, sn3, sn4 ... sn25, sn26
    BostonPool: sn1, sn2, sn3, sn4 ... sn25
    kv-> pool join -name BostonPool -sn sn26
    AllStorageNodes: sn1, sn2, sn3, sn4 ... sn25, sn26
    BostonPool: sn1, sn2, sn3, sn4 ... sn25, sn26 
    kv->
  6. 古いストレージ・ノードが稼働していないことを確認します。ハードウェアの問題の場合、壊れたマシンを停止します。次のようにして、ストレージ・ノード・ソフトウェアのみ停止することもできます。

    > java -Xmx256m -Xms256m \
    -jar KVHOME/lib/kvstore.jar stop -root KVROOT
  7. あるストレージ・ノードから別のストレージ・ノードにサービスを移行します。古いノードが管理サービスをホストしていた場合は、-admin-port引数が必要です。このプランの構文は、次のとおりです。

    plan migrate-sn -from <old SN ID> -to <new SN ID> \
    -admin-port <admin port>

    ストレージ・ノード25から26にポート5000で移行するとすると、次のようになります。

    kv-> plan migrate-sn -from sn25 -to sn26 -admin-port 5000
  8. 古いストレージ・ノードはトポロジに表示され、UNREACHABLEとレポートされます。ソースSNAは削除される必要があり、そのルートディレクトリは空にする必要があります。古いSNAを起動すると、レプリケーション・グループのメンバーではなくなっている古いレプリケーション・ノードも起動されます。これは残りのストアには無害ですが、エラー・メッセージを発生させるため、ストアに問題があると解釈されかねません。plan remove-snコマンドを使用して、デプロイメントにある古い未使用のストレージ・ノードを削除してください。

    kv-> plan remove-sn sn25 -wait

注意

ストレージ・ノードの置換は、トポロジの変更とみなされます。これは、ストレージ・ノードが置換される前に作成されたスナップショットからストアをリストアする場合、Loadプログラムを使用する必要があるということです。詳細は、「Loadプログラムの使用」を参照してください。

同一のノード(障害が発生したホストと同じホスト名、インターネット・アドレスおよびポート)を使用して、障害が発生したストレージ・ノードを置換する手順は次のとおりです。

  1. 前提条件情報は次のとおりです。

    1. 既知のホスト上の、既知のレジストリ・ポートを備えた実行中の管理プロセス。

    2. 置換対象のストレージ・ノードのID(例: "sn1")。

    3. 新しいストレージ・ノードを開始する前に、置換するSNを停止する必要があります。これは、管理者によって、または障害を通じて実行できます。

    注意

    続行前にKVROOTが空であることと、データの全ネットワーク・リカバリを行うことが推奨されます。

    次の手順では、KVROOTが空であり有効なデータがないことを前提としています。新しいストレージ・ノード・エージェントが開始されると、そのエージェントがホストするサービスが開始され、他のホストからデータがリカバリされます。このリカバリは、含まれるシャードのサイズによっては時間がかかる可能性があり、バックグラウンドで実行されます。

  2. generateconfigコマンドを使用して構成を作成します。

    generateconfigの使用方法は次のとおりです。

    > java -Xmx256m -Xms256m \
    -jar KVHOME/lib/kvstore.jar generateconfig \
    -host <hostname> -port <port> -sn <StorageNodeId> -target <zipfile>

    次に例を示します。

    > java -Xmx256m -Xms256m \
    -jar KVHOME/lib/kvstore.jar generateconfig -host adminhost \
    -port 13230 -sn sn1 -target /tmp/sn1.config.zip

    上のコマンドではターゲット"/tmp/sn1.config.zip"が作成されます。これは、対象のストレージ・ノードの再作成に必要な構成を備えたzipファイルです。zipファイル内の最上位ディレクトリは、ストアのKVROOTです。

  3. ストレージ・ノード構成をターゲット・ホストでリストアします。

    1. zipファイルをターゲット・ホストにコピーします。

    2. アーカイブをKVROOTディレクトリに解凍します。つまり、KVROOTが/opt/kvrootの場合は、次のようにします。

      > cd/opt
      > unzip <path-to-sn1.config.zip>
  4. 新しいホストでストレージ・ノードを再起動します。

    > java -Xmx256m -Xms256m \
    -jar KVHOME/lib/kvstore.jar start -root KVROOT