Repair Service(リペア・サービス)の概要

Repair Service(リペア・サービス)は、指定された完了時間内にDSEクラスターを周期的にリペアするためにバックグラウンド・プロセスとして実行されます。

Repair Service(リペア・サービス)によりリペア操作が実行され、ノードおよびレプリカ全体でほとんどの最新データが同期されます。これには、ファイルシステム・レベルで発生した破損データのリペアも含まれます。デフォルトでは、Repair Service(リペア・サービス)はほとんどのテーブルに対してサブ範囲リペアを実行し、特定のテーブルに対しては、インクリメンタル・リペアを実行するように構成できます。分散サブ範囲リペアは、大規模クラスターに対応したスケールアップを目的とした、リペア・サービス内のサブ範囲リペアの代替実装です。

どの種類のリペアを使用するか、またいつ使用するかについては、次のガイドラインに従ってください。
  • データが比較的静的な場合は、これらのテーブルまたはデータ・センターに対してインクリメンタル・リペアを構成します。
  • データが動的で常に変化している場合は、サブ範囲リペアを使用し、環境に合わせてキースペースとテーブルを除外します。
  • 非常に大規模なクラスターをリペアする場合にopscenterdプロセスがタイムリーなサブ範囲リペアのボトルネックになる場合は、分散サブ範囲リペアを使用してください。
警告: Repair Service(リペア・サービス)の実行中にnodetool repairまたはOpsCenterを使用して手動のノード・リペアを実行しないでください。

サブ範囲リペア

サブ範囲リペアは、ノードが担当しているデータ部分をリペアします。サブ範囲リペアは、nodetool repairコマンドで-stオプションと-etオプションを指定することに似ていますが、サブ範囲の開始トークンと終了トークンを自動的に判断して最適化するのはRepair Service(リペア・サービス)のみです。サブ範囲リペアの主な利点は、過剰なストリーミングを回避しながら、リペア対象をより正確に特定できることです。

分散サブ範囲リペア

分散サブ範囲リペアは、大規模クラスターを修復するために設計されています。opscenterdは、opscenterdに依存してサブ範囲リペアを調整するのではなく、1つまたは複数のキースペース全体のリストを単純に修復するようにエージェントに指示します。opscenterdが大まかなリペア・タスクの小さなリストをコーディネートし、その詳細をエージェントが処理たるために、エージェントは、キースペースのリペアの詳細をサブ範囲ごとに処理します。

インクリメンタル・リペア

インクリメンタル・リペアでは、インクリメンタル・リペア用に予約され、構成されているテーブルのまだリペアされていないデータのみがリペアされます。

サブ範囲リペアは除外(オプト・アウト)ベースで動作し、特定のキースペースやテーブルを除外できます。サブ範囲リペアから除外されるテーブルには、OpsCenterで予約されているテーブルと管理者が構成したテーブルが含まれます。インクリメンタル・リペアは包含(オプト・イン)ベースで動作します。インクリメンタル・リペアの対象として指定されているキースペースとテーブルのみがインクリメンタル・リペアで処理されます。インクリメンタル・リペアの対象となっているテーブルには、OpsCenterの組み込みテーブルと管理者が構成したテーブルが含まれます。

データが比較的静的な場合は、これらのテーブルまたはデータ・センターに対してインクリメンタル・リペアを構成します。データが動的で常に変化している場合は、サブ範囲リペアを使用し、環境に合わせてキースペースとテーブルを除外します。

サブ範囲リペアとインクリメンタル・リペアが重複することはありません。キースペースとテーブルは、サブ範囲リペアとインクリメンタル・リペアのどちらかでリペアされます。サブ範囲リペアとインクリメンタル・リペアは、テーブル・レベルで互いに排他的です。Repair Service(リペア・サービス)は、両方のタイプのリペアを同時に実行します。各リペア・タイプには独自のタイムラインがあり、リペア・ステータス・サマリーのそれぞれ対応するサブ範囲およびインクリメンタル進行状況バーで追跡されます。

並列およびシーケンシャル検証コンパクション処理

Repair Service(リペア・サービス)は、デフォルトではシーケンシャルではなく、並列処理で検証コンパクションを実行します。これは、シーケンシャル処理には非常に時間がかかるためです。snapshot_override設定は、サブ範囲リペアとインクリメンタル・リペアの両方で検証コンパクションが並列処理されるか、シーケンシャルに処理されるかを制御します。「検証コンパクションをシーケンシャルに実行する」を参照してください。

Repair Service(リペア・サービス)が実行されない状態

単一ノードのクラスターはリペアの対象となりません。リペアではノードのレプリカの整合性を保つため、リペア・プロセス中にMerkleツリーを交換するために少なくとも2つのノードが必要になります。