スニッチの切り替え

スニッチを切り替えるための手順。

データベースがどのようにレプリカに分散させるかは、スニッチによって決まるため、スニッチを切り替える手順は、クラスターのトポロジー変更があるかどうかによって異なります。

  • データがクラスターに挿入されていない場合は、ネットワークのトポロジーに変更はありません。つまり、必要なのはスニッチを設定するだけで、他のステップは必要ありません。
  • データがクラスターに挿入されている場合、トポロジーは変更され、さらにステップが必要になります。

トポロジーの変更とは、ノードが置かれるデータ・センターとラックのどちらかまたは両方に変更があることを意味します。トポロジーの変更は、新しいスニッチによってレプリカが別の場所に置かれる場合に生じることがあります。具体的には、レプリケーション・ストラテジは、新しいスニッチによって提供される情報に基づいてレプリカを配置します。以下の例は、相違を示しています。

手順

スニッチを切り替えるための手順。
  1. データ・センターとラック情報を持つ、プロパティ・ファイルを作成します。
  2. クラスターのすべてのノードの構成ディレクトリーにcassandra-rackdc.propertiesファイルまたはcassandra-topology.propertiesファイルをコピーします。それらは、新しいスニッチが有効になるまでは使用されません。
    cassandra-topology.propertiesファイルの場所は、インストールのタイプによって異なります。

    パッケージ・インストールInstaller-Servicesインストール

    /etc/dse/cassandra/cassandra-topology.properties

    tarボール・インストールInstaller-No Servicesインストール

    installation_location/resources/cassandra/conf/cassandra-topology.properties
    cassandra-rackdc.propertiesファイルの場所は、インストールのタイプによって異なります。

    パッケージ・インストールInstaller-Servicesインストール

    /etc/dse/cassandra/cassandra-rackdc.properties

    tarボール・インストールInstaller-No Servicesインストール

    installation_location/resources/cassandra/conf/cassandra-rackdc.properties
    cassandra.yamlファイルの場所は、インストールのタイプによって異なります。

    パッケージ・インストールInstaller-Servicesインストール

    /etc/dse/cassandra/cassandra.yaml

    tarボール・インストールInstaller-No Servicesインストール

    installation_location/resources/cassandra/conf/cassandra.yaml
  3. クラスターの各ノードのcassandra.yamlファイル内で各ノードのスニッチを変更します。例を次に示します。
    endpoint_snitch: GossipingPropertyFileSnitch
  4. トポロジー変更がなければ、各ノードを1つずつ再起動することができます。

    cassandra.yamlファイルに変更を加えた場合は、必ずノードを再起動する必要があります。

  5. ネットワークのトポロジー変更があったにもかかわらず、データ・センターが追加されていない場合。
    1. すべてのノードをシャットダウンしてから再起動します。
    2. 各ノードで、シーケンシャルなリペアおよびnodetool cleanupを実行します。
  6. ネットワークのトポロジー変更があり、データ・センターが追加されている場合。
    1. 新しいロールを作成します。
    2. データを新しいデータ・センター内に複製します。古いデータ・センターから、ノードを除去します
    3. 各ノードで、シーケンシャルなリペアおよびnodetool cleanupを実行します。
      重要: DataStaxでは、トポロジーの変更中、リペア操作を停止することを推奨しています。Repair Service(リペア・サービス)は自動的にこの操作を実行します。トポロジーの変更中に実行されるリペアは、移動範囲が伴う場合、エラーになることがよくあります。