最終更新:
編集

指示による削除の設定

デフォルトの構成ファイルは、新しいレジャーバージョンが利用可能になるとrippledが古いXRP Ledgerの履歴を自動的に削除するように設定されています。サーバがピーク時にハードウェアリソースの大部分を使用する場合は、オフピーク時に実行するようスケジュールされたコマンドからの指示があった場合にのみ、レジャーを削除するようにサーバを設定できます。これにより、オンライン削除がサーバのパフォーマンスに及ぼす影響はほとんどなくなります。

前提条件

このチュートリアルでは、ご使用のサーバが以下の条件を満たしていることを前提としています。

  • サポートされているオペレーティングシステムを使用している。Ubuntu Linux、Red Hat Enterprise Linux(RHEL)、CentOS

  • rippledサーバがすでにインストールされており、オンライン削除が有効になっている。

    デフォルトの構成ファイルは、レジャーバージョンが2000個を超えるとオンライン削除を実行するよう設定されています。

  • cronデーモンがインストールされており、実行されている。

    Ubuntu Linuxではデフォルトでcronデーモンが実行されます。

    RHELまたはCentOSでは、以下のcronieパッケージをインストールできます。

    $ sudo yum install cronie
    
  • 選択した量の履歴をレジャーストアーに保管するのに十分なディスク容量がサーバにある。

    各種設定で必要なストレージの容量についての詳細は、容量計画をご覧ください。指示による削除が有効な場合、削除が実行されるまでにサーバに蓄積可能な履歴の最大数は、online_delete設定で設定したレジャーバージョン数と、オンライン削除の指示の間隔を加算したものに相当します。

  • サーバの使用率が最も低い時間帯を把握している。

設定手順

日次スケジュールで指示による削除は以下の手順で設定します。

  1. rippledの構成ファイルの[node_db]スタンザでadvisory_deleteを有効にします。

    [node_db]
    # Other settings unchanged ...
      online_delete=300000
      advisory_delete=1
    
    • 指示された場合にのみオンライン削除を実行するには、advisory_delete1に設定します。(0に設定すると、新しいレジャーバージョンが使用可能になると自動的にオンライン削除が実行されます。)
    • online_deleteを、オンライン削除の実行後に維持するレジャーバージョンの最小数に設定します。オンライン削除が実行されるまでに蓄積される履歴は、この値よりも多くなります。

    推奨インストールでは、デフォルトで/etc/opt/ripple/rippled.cfgという設定ファイルを使用します。その他の場所としては、$HOME/.config/ripple/rippled.cfg($HOMErippledを実行しているユーザのホームディレクトリです)、$HOME/.local/ripple/rippled.cfgまたはrippledを起動した現在の作業ディレクトリがあります。

  2. サーバに対してオンライン削除を指示するcan_deleteメソッドの実行をテストします。

    このコマンドの実行にはrippledコマンドラインインターフェイスを使用できます。例:

    $ rippled --conf=/etc/opt/ripple/rippled.cfg can_delete now
    

    レスポンスは、サーバがそのレジャーストアーから削除するレジャーインデックスの最大値を示します。たとえば、以下のメッセージはレジャーインデックス43633667以下のレジャーバージョンを削除できることを示します。

    {
      "result": {
        "can_delete": 43633667,
        "status": "success"
      }
    }
    

    サーバ内の 新しい 検証済みレジャーバージョンの数が、online_deleteの設定以上となった場合にのみ、レジャーバージョンが削除されます。

  3. 前のステップでテストしたcan_deleteメソッドを、予定した時刻に実行するようにcronデーモンを設定します。

    cron 設定を編集します。

    $ crontab -e
    

    以下の例では、サーバ時刻で毎日1:05 AMにサーバが削除を実行するように設定されています。

    5 1 * * * rippled --conf /etc/opt/ripple/rippled.cfg can_delete now
    

    サーバで設定されているタイムゾーンに基づいてコマンドが実行されるようにスケジュールしてください。

    ヒント:advisory_deleteを無効にしている場合は、cronジョブをオンラインで実行するようにスケジュールする必要はありません。この場合、サーバの最も古いレジャーバージョンと現行の検証済みレジャーバージョンの差がonline_deleteの値以上である場合に、rippledによりオンライン削除が実行されます。

  4. rippledサービスを起動(または再起動)します。

    $ sudo systemctl restart rippled
    
  5. server_infoメソッドを使用してサーバのcomplete_ledgers範囲を定期的に調べ、レジャーがスケジュール通りに削除されていることを確認します。

    オンライン削除の実行後にはcomplete_ledgersの最小レジャーインデックスが増加します。

    サーバの使用率の状況と、一度に削除する履歴の量によっては、削除が完了するまでに数分間かかることがあります。

トラブルシューティング

オンライン削除の設定後にオンライン削除が実行されていないようである場合は、以下を試してください。

  • cronジョブを設定したユーザに、コマンドラインクライアントとしてrippledサーバを実行できる権限があることを確認します。
  • cronジョブの構文とこのジョブの実行予定時刻を確認します。
  • rippled実行可能ファイルがcron設定で指定したパスで使用可能であることを確認します。必要に応じて実行可能ファイルの絶対パス(/opt/ripple/bin/rippledなど)を指定します。
  • rippledログで、SHAMapStore::WRNで始まるメッセージを調べます。このメッセージが出力されている場合、サーバがネットワークと同期していない状態になったためにオンライン削除が中断されている可能性があります。