cassandra.yaml構成ファイル

cassandra.yamlファイルは、Cassandraの主要な構成ファイルです。

cassandra.yamlファイルは、Cassandraの主要な構成ファイルです。

重要: cassandra.yamlファイルでプロパティを変更したら、ノードを再起動して変更を有効にする必要があります。これは、以下のディレクトリーにあります。
  • Cassandraパッケージ・インストール:/etc/cassandra
  • Cassandra tarボール・インストール:install_location/conf
  • DataStax Enterpriseパッケージ・インストール:/etc/dse/cassandra
  • DataStax Enterprise tarボール・インストール:install_location/resources/cassandra/conf

構成プロパティを以下の各セクションにグループ分けしました。

  • クイック・スタート

    クラスターを構成するために必要な最小限のプロパティ。

  • 使用頻度の高いもの

    Cassandraの構成時に最も頻繁に使用するプロパティ。

  • パフォーマンスの調整

    コミット・ログ、コンパクション、メモリー、ディスクI/O、CPU、読み取り、書き込みを含むパフォーマンスとシステム・リソースの活用を調整します。

  • 高度な設定

    上級ユーザー用のプロパティまたは使用頻度の低いプロパティ。

  • セキュリティ

    サーバーとクライアントのセキュリティを設定します。

注: が付いた値は、内部で定義されているデフォルト値、欠落している値、コメント・アウトされている値、または実装がcassandra.yamlファイルのその他のプロパティに依存することを示します。さらに、コメント・アウトされた一部の値が実際のデフォルト値と一致しない場合があります。これらの値をデフォルト値から変更する場合は、推奨値を記載してあります。

クイック・スタート・プロパティ

クラスターを構成するために必要な最小限のプロパティ。

関連情報:複数ノード・クラスター(単一データ・センター)の初期化および複数ノード・クラスター(複数データ・センター)の初期化

cluster_name
(デフォルト:Test Cluster)クラスターの名前。この設定により、論理クラスター内のノードが別のクラスターに参加するのを防ぎます。クラスター内のすべてのノードが同じ値を持つ必要があります。
listen_address
(デフォルト:localhostCassandraノードが他のCassandraノードに接続するためにバインドするIPアドレスまたはホスト名。このパラメーターまたはlisten_interfaceのいずれかを設定してください。両方は設定できません。複数のノードが通信するには、デフォルトの設定を変更する必要があります。
  • 通常は空に設定します。ノードが適切に構成されている場合(ホスト名、名前の解決など)、CassandraはInetAddress.getLocalHost()を使用してシステムからローカル・アドレスを取得します。
  • 単一ノード・クラスターの場合、デフォルト設定(localhost)を使用できます。
  • Cassandraが正しいアドレスを見つけられない場合は、IPアドレスまたはホスト名を指定する必要があります。
  • 絶対に 0.0.0.0を指定してはいけません。これは常に間違いです。
listen_interface
(デフォルト:eth0) 他のCassandraノードに接続するためにCassandraがバインドするインターフェイス。インターフェイスは1つのアドレスのみに対応していなければなりません。IPの別名使用はサポートされていません。「listen_address」を参照してください。
listen_interface_prefer_ipv6
(デフォルト:false) デフォルトでは、インターフェイスにipv4アドレスとipv6アドレスがある場合、最初のipv4アドレスが使用されます。trueに設定されている場合は、最初のipv6アドレスが使用されます。

デフォルトのディレクトリー

インストール中にデフォルトのディレクトリーのいずれかを変更した場合は、rootアクセスがあることを確認のうえ、以下のプロパティを設定します。

commitlog_directory
コミット・ログが格納されているディレクトリー。デフォルトの場所:
  • パッケージ・インストール:/var/lib/cassandra/commitlog
  • tarボール・インストール:install_location/data/commitlog
  • Windowsインストール:C:\Program Files\DataStax Community\data\commitlog

書き込みパフォーマンスを最適化するには、コミット・ログを、データ・ファイル・ディレクトリーとは別のディスク・パーティションに置くか(理想的には)、別の物理デバイスに置いてください。コミット・ログは追記専用なので、この目的にHDDを使用できます。

data_file_directories
テーブル・データ(SSTable)が格納されるディレクトリーの場所。Cassandraは、構成されているコンパクション・ストラテジの細分性に応じて、データをその場所全体に均等に分散します。デフォルトの場所:
  • パッケージ・インストール:/var/lib/cassandra/data
  • tarボール・インストール:install_location/data/data
  • Windowsインストール:C:\Program Files\DataStax Community\data\data

実稼働環境でのベスト・プラクティスの観点から、RAID 0およびSSDを使用してください。

saved_caches_directory
テーブル・キーと行キャッシュが格納されるディレクトリーの場所。デフォルトの場所:
  • パッケージ・インストール:/var/lib/cassandra/saved_caches
  • tarボール・インストール:install_location/data/saved_caches
  • Windowsインストール:C:\Program Files\DataStax Community\data\saved_caches

使用頻度の高いプロパティ

Cassandraの構成時に最も頻繁に使用するプロパティ。

ノードを初めて起動する前に、慎重に要件を評価する必要があります。

一般的な初期化プロパティ

注: クイック・スタート・セクションのプロパティも必ず設定してください。
commit_failure_policy
(デフォルト:stop)コミット・ディスクの障害に対するポリシー:
  • die

    ゴシップとThriftを停止してJVMを強制終了し、ノードが置き換えられるようにします。

  • stop

    ゴシップとThriftを停止して、そのノードを実質的な停止状態にしておきます。ただし、JMXを使用して調査は行えます。

  • stop_commit

    書き込みを禁止し、コミット・ログを停止し、読み取りを継続します(2.0.5以前のCassandraと同様)。

  • ignore

    致命的なエラーを無視し、バッチ処理を失敗にします。

disk_optimization_strategy
(デフォルト:ssd)ディスク読み取りを最適化するストラテジは、ssdまたはspinningのいずれかに設定できます。
disk_failure_policy
(デフォルト:stop)ディスク障害時のCassandraの応答を設定します。推奨設定は、stopまたはbest_effortです。
  • die

    すべてのファイル・システム・エラーまたは1つのSSTableエラーに対してゴシップとThriftを終了し、JVMを強制終了して、ノードが置き換えられるようにします。

  • stop_paranoid

    1つのSSTableエラーの場合でもゴシップとThriftを停止します。

  • stop

    ゴシップとThriftを停止して、そのノードを実質的な停止状態にしておきます。ただし、JMXを使用して調査は行えます。

  • best_effort

    障害が発生したディスクの使用を停止し、使用可能な残りのSSTablesに基づいて要求に応答します。これは、データの整合性レベルがONEのとき、古いデータを取得する場合があることを意味します。

  • ignore

    致命的なエラーを無視し、要求を失敗にします。すべてのファイル・システム・エラーは記録されますが、それ以外は無視されます。Cassandraが1.2以前のバージョンと同様に動作します。

関連情報:「Handling Disk Failures In Cassandra 1.2」ブログおよびJBODを使用した単一ディスク障害からの復旧

endpoint_snitch
(デフォルト:org.apache.cassandra.locator.SimpleSnitch) IEndpointSnitchを実装しているクラスを設定します。Cassandraでは、ノードを見つけたり、要求の経路を指定したりするためにスニッチが使用されます。
  • SimpleSnitch

    単一データ・センターへのデプロイ時またはパブリック・クラウドの単一ゾーンに使用します。データ・センターやラック情報は認識しません。ストラテジの順序が近接度として扱われるため、読み取りリペアを無効にしたときのキャッシュ局所性を改善できます。

  • GossipingPropertyFileSnitch

    実稼働環境で推奨します。ローカル・ノードのラックおよびデータ・センターは、cassandra-rackdc.propertiesファイルに定義されており、ゴシップ経由で他のノードに伝播されます。PropertyFileSnitchからの移行ができるようにするために、cassandra-topology.propertiesファイルがある場合はこれが使用されます。

    cassandra-rackdc.propertiesファイルの場所は、インストールのタイプによって異なります。
    パッケージ・インストール /etc/cassandra/cassandra-rackdc.properties
    tarボール・インストール install_location/conf/cassandra-rackdc.properties
    Windowsインストール C:\Program Files\DataStax Community\apache-cassandra\conf\cassandra-rackdc.properties
    cassandra-topology.propertiesファイルの場所は、インストールのタイプによって異なります。
    パッケージ・インストール /etc/cassandra/cassandra-topology.properties
    tarボール・インストール install_location/conf/cassandra-topology.properties
    Windowsインストール C:\Program Files\DataStax Community\apache-cassandra\conf\cassandra-topology.properties
  • PropertyFileSnitch

    ラックとデータ・センターの近接度を判断します。これは明示的にcassandra-topology.propertiesファイルで設定されます。

  • Ec2Snitch

    1つのリージョンのEC2デプロイで使用します。リージョンとアベイラビリティー・ゾーンの情報をEC2 APIから読み込みます。リージョンはデータ・センターとして、アベイラビリティー・ゾーンはラックとして扱われます。プライベートIPのみを使用します。結果的に、複数のリージョンでは機能しません。

  • Ec2MultiRegionSnitch

    パブリックIPをbroadcast_addressとして使用することでリージョン間の接続を可能にします。つまり、パブリックIPに対してseedアドレスも設定し、storage_portまたはssl_storage_portをパブリックIPのファイアウォール上で開く必要があります。リージョン内トラフィックのために、Cassandraは、接続を確立した後プライベートIPに切り替えます。

  • RackInferringSnitch:

    ラックおよびデータ・センターによって近接度を決定します。これらの場所は、ノードのIPアドレスのそれぞれ3番目と2番目のオクテットに対応していると見なされます。このスニッチは、カスタム・スニッチ・クラスを作成する場合(これがデプロイ規則に一致しないことがあった場合)の例として使用するのに最適です。

関連情報: スニッチ

rpc_address
(デフォルト:localhost) クライアント接続用のリッスン・アドレス(Thrift RPCサービスとネイティブ・トランスポート)。有効な値は以下のとおりです。
  • 設定なし

    ノードのホスト名構成を使用してアドレスを解決します。未設定の場合、/etc/hostname、/etc/hosts、またはDNSを使用して、ホスト名がこのノードのIPアドレスに解決できる必要があります。

  • 0.0.0.0:

    すべての構成済みインターフェイスをリッスンしますが、broadcast_rpc_address0.0.0.0以外の値に設定する必要があります。

  • IPアドレス
  • ホスト名

関連情報:ネットワーク

rpc_interface
(デフォルト:eth1クライアント接続用のリッスン・アドレス。インターフェイスは1つのアドレスのみに対応していなければなりません。IPの別名使用はサポートされていません。「rpc_address」を参照してください。
rpc_interface_prefer_ipv6
(デフォルト:false) デフォルトでは、インターフェイスにipv4アドレスとipv6アドレスがある場合、最初のipv4アドレスが使用されます。trueに設定されている場合は、最初のipv6アドレスが使用されます。
seed_provider
コンタクト・ポイントと見なされるホストのアドレス。Cassandraのノードは、-seedsリストを使用して、相手を探し、リングのトポロジーを学習します。
  • class_name(デフォルト:org.apache.cassandra.locator.SimpleSeedProvider)

    シード・ロジックを処理するCassandra内のクラス。カスタマイズできますが、通常は必要ありません。

  • -seeds(デフォルト:127.0.0.1)

    gossipが、クラスターに結合する新しいノードをブートストラップするために使用するIPアドレスのコンマ区切りリスト。複数のノードを実行する場合、このリストをデフォルト値から変更する必要があります。 複数データ・センター・クラスターでは、シード・リストに各データ・センター(レプリケーション・グループ)からのノードを少なくとも1つ含める必要があります。フォールト・トレランスのために、データ・センターあたり1つ以上のシード・ノードを指定することを推奨します。そうしないと、ゴシップはノードのブートストラップ時に別のデータ・センターと通信する必要があります。保守タスクが増え、ゴシップのパフォーマンスが低下するため、すべてのノードをシード・ノードにすることは推奨しません。ゴシップの最適化は重要ではありませんが、小さいシード・リストを使用することを推奨します(データ・センターあたり約3つのノード)。

関連情報:複数ノード・クラスター(単一データ・センター)の初期化および複数ノード・クラスター(複数データ・センター)の初期化

enable_user_defined_functions
(デフォルト:false) Cassandra 3.0以降では、ユーザー定義関数(UDF)はデフォルトで無効になっています。UDFは、不正なコードの実行を防ぐためにサンドボックスに入れられます。UDFを使用する場合は、trueに変更してください。
enable_scripted_user_defined_functions
(デフォルト:false) enable_user_defined_functionstrueの場合、Java UDFは常に有効です。anguage javascriptや、任意のカスタムJSR-223プロバイダーでUDFを使用するには、このオプションを有効にします。enable_user_defined_functionsfalseの場合、このオプションによる影響はありません。

一般的なコンパクション設定

compaction_throughput_mb_per_sec
(デフォルト:16)システム全体にわたって、指定した合計スループットまでコンパクションをスロットルします。 データの挿入が高速であるほど、SSTableの数を低く維持するためにはより高速でコンパクションする必要があります。推奨値は書き込みスループット速度の16〜32倍です(単位はMB/秒)。この値を0に設定すると、コンパクションのスロットルが無効になります。

関連情報: コンパクションの構成

compaction_large_partition_warning_threshold_mb
(デフォルト:100) コンパクションのパーティションが設定値よりも大きくなると、警告をログに記録します。

一般的なmemtable設定

memtable_total_space_in_mb
(デフォルト:ヒープの1/4ノードのすべてのmemtable用に使用される合計メモリー量を指定します。これはテーブルごとのストレージ設定memtable_operations_in_millionsmemtable_throughput_in_mbを置き換えます。

関連情報:Javaヒープの調整

一般的なディスク設定

concurrent_reads
(デフォルト:32)メモリーに収まるデータ量よりも多いワークロードでのボトルネックは、ディスクからのデータ読み取りです。(16 × ドライブ数)に設定することにより、操作のキューをスタック内で低く保つことでOSとドライブが順序を変更できるようになります。デフォルトの設定は、論理ボリューム・マネージャー(LVM)によって管理されるドライブとRAIDドライブの両方に適用されます。
concurrent_writes
(デフォルト:32) Cassandraでの書き込みがI/Oバウンドになることはまれなため、理想的な同時書き込みの数は、システムのCPUコア数に依存します。推奨値は8 × CPUコア数です。
concurrent_counter_writes
(デフォルト:32) カウンターの書き込みは、インクリメントと書き戻しを行う前に、現在の値を読み取ります。推奨値は(16 × ドライブ数)です。
concurrent_batchlog_writes
(デフォルト:32} 同時バッチログ書き込みを制限します。 concurrent_writesに似ています。
concurrent_materialized_view_writes
(デフォルト:32} 同時マテリアライズド・ビューの書き込み数を、同時読み取り数か同時書き込み数のどちらか少ない方に制限します。マテリアライズド・ビュー書き込みに読み取りが関係しているためです。

一般的な自動バックアップ設定

incremental_backups
(デフォルト:false)スナップショットを最後に取得して以来更新されたデータをバックアップします。これを有効にすると、Cassandraはローカルにフラッシュまたはストリームされた各SSTableへのハードリンクを、対応するキースペース・データの backups/サブディレクトリーに作成します。これらのリンクの削除は、オペレーターの役割です。

関連情報: インクリメンタル・バックアップの有効化

snapshot_before_compaction
(デフォルト:false)各コンパクションの前にスナップショットを取得するかどうかを有効または無効にします。このオプションは、データ形式に変更がある場合のデータのバックアップに役に立ちます。Cassandraは古いスナップショットを自動的にクリーンアップしないため、このオプションの使用には注意してください。

関連情報: コンパクションの構成

一般的な障害検知設定

phi_convict_threshold
(デフォルト:8) 障害検知機能の感度を指数スケールで調整します。通常、この設定には調整は必要ありません。

関連情報: 障害の検知と復旧

パフォーマンス調整のプロパティ

コミット・ログ、コンパクション、メモリー、ディスクI/O、CPU、読み取り、書き込みを含むパフォーマンスとシステム・リソースの活用を調整します。

コミット・ログの設定

commitlog_sync
(デフォルト:periodic)Cassandraがミリ秒単位で書き込みを認識するために使用する方法:
  • periodic:(デフォルト:10000ミリ秒[10秒])

    commitlog_sync_period_in_msと併用して、コミット・ログをディスクに同期させる頻度を制御します。周期的同期は即座に認識されます。

  • batch:(デフォルト:disabled}

    commitlog_sync_batch_window_in_msと合わせて使用し(デフォルト:2 ms)Cassandraが同期を実行する前に、その他の書き込みを待つ時間を制御します。この方法を使用すると、ディスクにfsyncされるまで書き込みは認識されません。

commitlog_segment_size_in_mb
(デフォルト:32MB)個々のコミット・ログ・ファイル・セグメントのサイズを設定します。コミット・ログ・セグメントは、すべてのデータがSSTableにフラッシュされた後、アーカイブしたり、削除したり、再利用したりできます。このデータ量には、システム内の各テーブルからのコミット・ログ・セグメントが含まれる可能性があります。ほとんどのコミット・ログ・アーカイブの場合、通常はデフォルトのサイズで十分ですが、しかし細分性を上げたい場合は、8または16 MBが妥当です。

関連情報: コミット・ログ・アーカイブの構成

commitlog_compression
(デフォルト:有効にしない)コミット・ログが圧縮されている場合に、圧縮を使用するように設定します。オプションは以下のとおりです。LZ4、Snappy、Deflate。圧縮オプションを設定しないと、コミット・ログは圧縮されずに書き込まれます。
commitlog_total_space_in_mb
(デフォルト:32ビットJVMの場合は32MB、64ビットJVMの場合は8192MB)コミット・ログに使用する合計容量。使用している容量がこの値を超えると、Cassandraは次に最も近い倍数のセグメントへの切り上げを行い、最も古いコミット・ログ・セグメントに対応するmemtableをディスクにフラッシュし、これらのログ・セグメントを削除します。これによって起動時にリプレイされるデータ量が削減され、更新頻度の低いテーブルがコミット・ログ・セグメントをいつまでも維持し続けるのを防ぎます。コミット・ログの合計容量が少ないと、あまりアクティブでないテーブルでのフラッシュ操作が増える傾向があります。

関連情報: memtableのスループットの構成

コンパクションの設定

関連情報: コンパクションの構成

concurrent_compactors
(デフォルト:ディスクの数またはコアの数のいずれか小さい方、各CPUコアごとに最小2、最大8)1つのノードで同時に実行できる同時コンパクション・プロセスの数を設定します。アンチエントロピー・リペア用の検証コンパクションは含まれません。同時コンパクションでは、1回の時間のかかるコンパクション中に小さいSSTableが累積する傾向を減らすことにより、読み取りと書き込みが混在するワークロードでの読み取りパフォーマンスを維持しやすくなります。データ・ディレクトリーがSSDにサポートされている場合は、この値をコアの数まで増やしてください。コンパクションの実行が遅すぎる、または速すぎる場合は、まず、compaction_throughput_mb_per_secを調整してください。
sstable_preemptive_open_interval_in_mb
(デフォルト:50MB)コンパクションの際、書き込みが完全に終わる前に置き換えによってSSTableが開かれ、以前のSSTAbleに書き込まれた範囲の代わりに使用されます。この設定は、ページ・キャッシュのチャーンを減らし、ホット行をホットに維持することによって、SSTable間の読み取りの転送がスムーズに行われるよう支援します。

memtableの設定

memtable_allocation_type
(デフォルト:heap_buffers)Cassandraがmemtableメモリーを割り当て、管理する方法を指定します。「Cassandra 2.1のオフヒープmemtable」を参照してください。オプションは以下のとおりです。
  • heap_buffers

    オンヒープNIO(ノンブロッキングI/O)バッファー。

  • offheap_buffers

    オフヒープ(直接)NIOバッファー。

  • offheap_objects

    ネイティブのメモリー。NIOバッファーのヒープ・オーバーヘッドをなくします。

memtable_cleanup_threshold
(デフォルト:0.11 1/(memtable_flush_writers + 1)) 最大のmemtableのフラッシュをトリガーする合計許容サイズに対して占有されている、フラッシュされていないmemtableのサイズの比率。値が大きくなると、フラッシュも大きくなり、コンパクションが少なくなりますが、同時フラッシュ操作も少なくなるため、大きな書き込み負荷がかかる状態でディスクの飽和状態を維持するのが困難になる可能性もあります。
file_cache_size_in_mb
(デフォルト:ヒープの1/4または512の小さい方)SSTableの読み取りバッファーに使用する合計メモリー。
buffer_pool_use_heap_if_exhausted
(デフォルト:trueだが、コメント・アウトされている)SSTableバッファー・プールを使い果たし(バッファー・プールが最大メモリーのfile_cache_size_in_mbを超えた場合)、これ以降はバッファーをキャッシュせず、要求に応じて割り当てる場合に、オンヒープを割り当てるか、オフヒープを割り当てるかを示します。
memtable_flush_writers
(デフォルト:ディスクの数か、コアの数のいずれか小さい方、最小値は2、最大値は8) memtableフラッシュ書き込みスレッドの数を設定します。これらのスレッドはディスクI/Oによってブロックされ、ブロックされている間、それぞれがmemtableをメモリーに保持します。データ・ディレクトリーがSSDにサポートされている場合は、この設定をコアの数まで増やしてください。
memtable_heap_space_in_mb
(デフォルト:1/4ヒープmemtableで使用する合計許容メモリー。memtable_cleanup_thresholdに基づいてフラッシュをトリガーします。Cassandraは、制限値を超えると、フラッシュが完了するまで、書き込みの受け入れを停止します。設定しないと、デフォルトに設定されます。

関連情報:memtableからのデータのフラッシュ

memtable_offheap_space_in_mb
(デフォルト:1/4ヒープ memtable_heap_space_in_mbを参照してください。

関連情報:memtableからのデータのフラッシュ

キャッシュとインデックスの設定

column_index_size_in_kb
(デフォルト:64)パーティション内の行インデックスの細分性。巨大な行については、この設定値を小さくするとシーク時間が改善されます。キー・キャッシュを使用する場合は、この設定を大きくし過ぎないように注意してください。キー・キャッシュに負担がかかりすぎます。行のサイズが明確にわからない場合は、デフォルト設定を使用するのがベストです。
index_summary_capacity_in_mb
(デフォルト:ヒープ・サイズの5%[])SSTableインデックス・サマリーの固定メモリー・プール・サイズ(MB)。すべてのインデックス・サマリーのメモリー使用量がこの制限値を超えると、読み取り速度の低い任意のSSTableがインデックス・サマリーを縮小して、この制限を満たします。これはベスト・エフォート型のプロセスです。極限状況では、Cassandraがこのメモリー量よりも多くの容量を必要とする場合があります。
index_summary_resize_interval_in_minutes
(デフォルト:60分)インデックス・サマリーの再サンプリングを行う頻度。これは定期的に、固定サイズのプールからSSTableに最近の読み取り速度に比例してメモリーを再割り当てするために行われます。無効にするには、-1に設定します。これにより、既存のインデックス・サマリーが現在のサンプリング・レベルのままになります。

ディスクの設定

stream_throughput_outbound_megabits_per_sec
(デフォルト:200秒)ノードでのすべての送信ストリーミング・ファイル転送の量を、指定されたスループットにスロットルします。Cassandraは、ブートストラップ中またはリペア中のデータ・ストリーミングではほとんどの場合シーケンシャルI/Oを行いますが、これはネットワーク接続を飽和させ、クライアント(RPC)のパフォーマンスを低下させる原因になる場合があります。
inter_dc_stream_throughput_outbound_megabits_per_sec
(デフォルト:設定なしデータ・センター間のすべてのストリーミング・ファイル転送をスロットリングします。この設定を使用すると、stream_throughput_outbound_megabits_per_secで設定されたすべてのネットワーク・ストリーム・トラフィックのスロットリングに加えて、データ・センター間のスロットルのストリーミング・スループットが使用できます。
trickle_fsync
(デフォルト:false)このオプションを有効にすると、fsyncはシーケンシャル書き込み時にオペレーティング・システムに対しtrickle_fsync_interval_in_kbに設定された間隔でダーティ・バッファーを強制的にフラッシュするように指示します。このパラメーターを有効にすることで、突発的なダーティ・バッファーのフラッシュによって読み取りレイテンシーに影響が出ないようにします。SSDに対して使用することは推奨しますが、HDDの場合には推奨しません。
trickle_fsync_interval_in_kb
(デフォルト:10240)。fsyncのサイズをキロバイト単位で設定します。
windows_timer_interval
(デフォルト:1)電力節約時のデフォルトのWindowsカーネル・タイマーとスケジュール分解能は15.6msです。Windowsでこの値を小さくすると、レイテンシーが短くなり、スループットが改善されます。ただし、この設定値をシステムのデフォルト以下に小さくすることにより、パフォーマンスに悪影響が出る仮想化環境もあります。システム内部のクロック精度ツールで、システムのデフォルト設定を確認できます。

高度なプロパティ

上級ユーザー用のプロパティまたは使用頻度の低いプロパティ。

高度な初期化プロパティ

auto_bootstrap
(デフォルト:true)この設定はデフォルトの構成からは削除されました。新しい(シードでない)ノードが正しいデータを自動的に自身に移行するようにします。データなしでフレッシュなクラスターを初期化する場合は、auto_bootstrap: falseを追加してください。

関連情報:複数ノード・クラスター(単一データ・センター)の初期化および複数ノード・クラスター(複数データ・センター)の初期化

batch_size_warn_threshold_in_kb
(デフォルト:5KB /バッチ)バッチのサイズが、キロバイト単位のこの値を超える場合にWARNをログに記録します。このしきい値のサイズを大きくすると、ノードの不安定性につながる可能性があるため、注意が必要です。
batch_size_fail_threshold_in_kb
(デフォルト:50KB/バッチ)この設定値を超えるすべてのバッチを失敗にします。デフォルト値はbatch_size_warn_threshold_in_kbの10倍の値です。
broadcast_address
(デフォルト:listen_address ノードがクラスター内の他のノードにコンタクト先として伝えるIPアドレス。これにより、パブリック・アドレスとプライベート・アドレスに異なるアドレスを使用できます。たとえば、必ずしもすべてのノードがプライベートIPアドレスを使用して他のノードにアクセスできるとは限らないトポロジー内では、broadcast_addressパラメーターを使用します。

Cassandraクラスターが複数のAmazon EC2リージョンをまたいでデプロイされます。EC2MultiRegionSnitchを使用する場合は、broadcast_addressをそのノードのパブリックIPアドレスに設定し、listen_address をプライベートIPに設定します。

initial_token
(デフォルト:無効)個々のノードがリング空間で厳密に1つの連続する範囲を所有する、single-node-per-token(トークンごとに1ノード)のアーキテクチャーで使用します。このプロパティの設定はnum_tokensより優先されます。
vnodeを使用していないか、あるいはnum_tokensを1に設定してあるかnum_tokensを指定していない(#num_tokens)場合、実稼働クラスターを初めてセットアップするとき、および容量を追加するときは、必ずこのパラメーターを指定する必要があります。詳細については、「Cassandra 1.1ノードとクラスターの構成」ドキュメントのこのパラメーターを参照してください。
このパラメーターは、スナップショットからの復元などの特殊なケースでnum_tokens(vnodes)と一緒に使用できます。
num_tokens
(デフォルト:256) 仮想ノード(vnode)を使用する場合に、リング上でこのノードにランダムに割り当てられるトークンの数を定義します。他のノードに比べてトークンの数が多いと、そのノードが格納するデータの割合は大きくなります。ハードウェアの能力が同じ場合、一般的にはすべてのノードのトークン数を同じにすべきです。推奨値は256です。指定されない場合(#num_tokens)、Cassandraは旧版バージョンとの互換性を維持するために1を使用し(#num_tokens :1と等価)、initial_token設定を使用します。
vnodesを使用しない場合は、#num_tokens :256をコメント・アウトするか、またはnum_tokens :1を設定してinitial_tokenを使用します。1つのノードに1つのトークンを持つ既存のクラスターでvnodeに移行する場合は、「既存の実稼働クラスターでの仮想ノードの有効化」を参照してください。
注: DataStax Enterpriseを使用している場合、このプロパティのデフォルトの設定はノードのタイプとインストールのタイプによって異なります。
allocate_tokens_keyspace
(デフォルト:KEYSPACE)このノードがトリガーされるためのnum_tokensトークンを自動割り当てします。割り当てアルゴリズムは、指定されたKEYSPACEで使用されたレプリケーション・ストラテジについて、レプリケーションされた負荷をデータ・センターのノード上で最適化する方法でトークンを選択しようとします。各ノードに割り当てられた負荷は、vnodesの数に比例したものに近くなります。
partitioner
(デフォルト:org.apache.cassandra.dht.Murmur3Partitioner)クラスター内のすべてのノード全体に行を(パーティション・キー別に)分散します。クラス・パス内にあるものであれば、独自のものも含めて、任意のIPartitionerを使用できます。新しいクラスターについては、デフォルトのパーティショナーを使用してください。
後方互換性を維持するため、Cassandraには以下のパーティショナーが用意されています。
  • RandomPartitioner
  • ByteOrderedPartitioner(廃止予定)
  • OrderPreservingPartitioner(廃止予定)

関連情報: パーティショナー

storage_port
(デフォルト:7000)ノード間通信用のポート。
tracetype_query_ttl
(デフォルト:86400)リペア・プロセスのログ記録中に使用される異なるトレース・タイプのTTL
tracetype_repair_ttl
(デフォルト:604800)リペア・プロセスのログ記録中に使用される異なるトレース・タイプのTTL。

高度な自動バックアップの設定

auto_snapshot
(デフォルト:true)キースペースのTRUNCATE(全件削除)またはテーブルの削除の前に、データのスナップショットを取得するかどうかを有効または無効にします。データ喪失を防止するため、デフォルト設定の使用を強く推奨します。falseに設定すると、TRUNCATEまたは削除の際にデータが失われます。

キー・キャッシュと行のグローバル・プロパティ

テーブルの作成時または変更時に、キャッシング・パラメーターの設定により、そのテーブルのキー・キャッシュ(パーティション・キー・キャッシュ)または行キャッシュを有効または無効にします。その他の行とキー・キャッシュの調整と構成のオプションは、グローバル(ノード)レベルで設定されます。Cassandraはこれらの設定を使用し、全体のワークロードと特定のテーブル使用量に基づいて、ノードの各テーブルに対して自動的にメモリーを分配します。これらのキャッシュを保存する期間もグローバルに構成できます。

関連情報:キャッシュの構成

key_cache_keys_to_save
(デフォルト:無効 – すべてのキーを保存)キー・キャッシュから保存するキー数。
key_cache_save_period
(デフォルト:14400秒[ 4時間])キャッシュにキーを保存する期間(秒単位)。キャッシュはsaved_caches_directoryに保存されます。保存されたキャッシュはコールド・スタート速度を大幅に改善し、I/Oに大きな影響はありません。
key_cache_size_in_mb
(デフォルト:空)テーブル用のグローバル・キャッシュ設定。キー・キャッシュのメモリー内の最大サイズです。値を設定しないと、キャッシュは使用可能なヒープの5%または100MBのいずれか小さい方に設定されます。無効にするには、0に設定します。

関連情報: setcachecapacity.

row_cache_class_name
(デフォルト:無効 - 行キャッシュは有効にしない)OHCProviderとSerializingCacheProviderのどちらの行キャッシュ・プロバイダーを使用するかを指定します。OHCProviderは完全オフヒープで、SerializingCacheProviderは一部オフヒープです。
row_cache_keys_to_save
(デフォルト:無効 – すべてのキーを保存)行キャッシュから保存するキーの数。
row_cache_size_in_mb
(デフォルト:0- 無効)メモリー内の行キャッシュの最大サイズ。行キャッシュではkey_cache_size_in_mbよりも時間を節約できますが、行全体が含まれるため空間が多くなります。行キャッシュは、ホット行か、または静的行のみで使用してください。サイズを減らすと、起動時に最もホットなキーが読み込まれないことがあります。
row_cache_save_period
(デフォルト:00 – 無効)行をキャッシュに保存する期間(秒単位)。キャッシュはsaved_caches_directoryに保存されます。この設定は、row_cache_size_in_mbで説明したとおり、用法が限られています。
memory_allocator
(デフォルト:NativeAllocator)オフヒープ・メモリー・アロケーター。キャッシュに加えて、このプロパティはストレージ・エンジン・メタデータに影響します。サポートされている値:
  • NativeAllocator
  • JEMallocAllocator

    実験によれば、jemallocは断片化に対する耐性がより大きいため、ネイティブ・アロケーターよりも多少メモリーの節約になります。使用するには、jemallocをライブラリとしてインストールし、cassandra-env.shを変更します。

注意: JEMallocバージョン3.6.0以降をオプションと一緒に使用してください。これより前のバージョンでは、既知のエラーが発生します。

カウンター・キャッシュのプロパティ

カウンター・キャッシュは、ホットなカウンター・セルのカウンター・ロックの競合を軽減させるのに役立ちます。RF = 1の場合、カウンター・キャッシュのヒットがあると、Cassandraは全体を書き込む前に読み取りをスキップします。RF > 1の場合も、カウンター・キャッシュのヒットがあるとロック保持期間が短縮されるため、ホットなカウンター・セルの更新に役立ちますが、読み取り全体をスキップすることはできません。ローカルな(クロック、カウント)カウンター・セルのタプルのみがメモリー内に保持され、カウンター全体は保持されないため、比較的負担が少なくて済みます。

注: カウンター・キャッシュのサイズを減らすと、最もホットなキーが起動時に読み込まれない可能性があります。
counter_cache_size_in_mb
(デフォルト値: 値を指定しない場合は、ヒープの2.5%か50MBのいずれか小さい方。カウンター削除を実施し、低いgc_grace_seconds を使用する場合は、カウンター・キャッシュを無効にしてください。無効にするには、0に設定します。
counter_cache_save_period
(デフォルト:7200秒[2時間])Cassandraがカウンター・キャッシュを保存するまでの期間(キーのみ)。キャッシュはsaved_caches_directoryに保存されます。
counter_cache_keys_to_save
(デフォルト値:無効 カウンター・キャッシュから保存するキーの数。無効にすると、すべてのキーが保存されます。

トゥームストーンの設定

パーティションの内部または各パーティションにわたってスキャンを実行するとき、トゥームストーンをコーディネーターに返せるように、トゥームストーンがメモリー内に維持されている必要があります。コーディネーターはトゥームストーンを使用して、削除済みの行について他のレプリカが確実に知っているようにします。大量のトゥームストーンを生成するワークロードは、パフォーマンス問題の原因となり、サーバーのヒープを使い果たしてしまうことがあります。「Cassandraのアンチパターン:キューと、キューに似たデータセット」を参照してください。この影響を理解した上でスキャンするトゥームストーンの数を増やす場合にのみ、これらのしきい値を調整してください。また、StorageServiceMBeanを使用して、実行中にもこれらのしきい値を調整できます。

関連情報:Cassandraのアンチパターン:キューと、キューに似たデータセット

tombstone_warn_threshold
(デフォルト:1000)警告に至るまでにクエリーがスキャンできるトゥームストーンの最大数。
tombstone_failure_threshold
(デフォルト:100000)処理を停止するに至るまでにクエリーがスキャンできるトゥームストーンの最大数。

ネットワーク・タイムアウトの設定

range_request_timeout_in_ms
(デフォルト:10000ミリ秒)コーディネーターがシーケンシャル・スキャンまたはインデックス・スキャンの完了を待つ時間。
read_request_timeout_in_ms
(デフォルト:5000ミリ秒)コーディネーターが読み取り操作の完了を待つ時間。
counter_write_request_timeout_in_ms
(デフォルト:5000ミリ秒)コーディネーターがカウンターの書き込み操作の完了を待つ時間(ミリ秒単位)。
cas_contention_timeout_in_ms
(デフォルト:1000ミリ秒)コーディネーターが、共通の行に対する他の操作と競合するCAS(compare-and-set)操作をリトライし続ける時間(ミリ秒単位)。
truncate_request_timeout_in_ms
(デフォルト:60000ミリ秒)コーディネーターがTRUNCATE(すべてのデータをテーブルから削除)の完了を待つ時間。デフォルト値を大きくすると、データを削除する前に、スナップショットを取得することができます。auto_snapshotが無効の場合(非推奨)、この時間を短縮できます。
write_request_timeout_in_ms
(デフォルト:2000ミリ秒)コーディネーターが書き込み操作の完了を待つ時間(ミリ秒単位)。

関連情報: ヒンテッド・ハンドオフ:書き込みパス中のリペア

request_timeout_in_ms
(デフォルト:10000ミリ秒)その他のさまざまな操作をタイムアウトにするデフォルトの時間。

関連情報: ヒンテッド・ハンドオフ:書き込みパス中のリペア

ノード間の設定

cross_node_timeout
(デフォルト:false)(要求のタイムアウトを正確に測定するために)ノード間での操作タイムアウト情報の交換を有効または無効にします。無効の場合、Cassandraは、コーディネーターによって、要求がレプリカに即座に転送されたものと仮定します。このため、過負荷の状況では、すでにタイムアウトとなった要求を処理するのに、余分な時間が必要になります。
注意: このプロパティを有効にする前に、NTP(network time protocol)がインストールされ、ノード間で時刻が同期していることを確認してください。
internode_send_buff_size_in_bytes
(デフォルト:なし) ノード間呼び出し用の送信ソケット・バッファー・サイズをバイト単位で設定します。
このパラメーターとinternode_recv_buff_size_in_bytesを設定した場合、バッファー・サイズはnet.core.wmem_maxの制限を受けます。設定しないと、バッファー・サイズはnet.ipv4.tcp_wmemによって定義されます。man tcpおよび以下を参照してください。
  • /proc/sys/net/core/wmem_max
  • /proc/sys/net/core/rmem_max
  • /proc/sys/net/ipv4/tcp_wmem
  • /proc/sys/net/ipv4/tcp_wmem
internode_recv_buff_size_in_bytes
(デフォルト:なし) ノード間呼び出し用の受信ソケット・バッファー・サイズをバイト単位で設定します。
internode_compression
(デフォルト:all)ノード間のトラフィックを圧縮するかどうかを制御します。有効な値:
  • all

    すべてのトラフィックを圧縮します。

  • dc

    データ・センター間のトラフィックを圧縮します。

  • none

    圧縮しません。

inter_dc_tcp_nodelay
(デフォルト:false)データ・センター間の通信に対するtcp_nodelayを有効または無効にします。無効の場合、サイズは大きいけれども少数のネットワーク・パケットが送信されます。これはTCPプロトコルのオーバーヘッドを低減します。しかし、データ・センターを横断する応答がブロックされるとレイテンシーが増えます。
streaming_socket_timeout_in_ms
(デフォルト:0 – ストリームをタイムアウトさせない)ストリーミング操作でのソケット・タイムアウトを有効または無効にします。ストリーミング中にタイムアウトが発生すると、ストリーミングは現在のファイルの最初からリトライされます。この値が小さすぎるとデータの再ストリーミング量が大幅に増えるため、小さすぎる値に設定するのは避けてください。

ネイティブ転送(CQLバイナリー・プロトコル)

start_native_transport
(デフォルト:true)ネイティブ転送サーバーを有効または無効にします。rpc_addressと同じアドレスを使用しますが、ポートはrpc_portとは異なります。native_transport_portを参照してください。
native_transport_port
(デフォルト:9042)CQLネイティブ転送がクライアントをリッスンするポート。
native_transport_max_threads
(デフォルト:128)要求を処理するスレッドの最大数。rpc_max_threadsと似ていますが、次の点が異なります。
  • デフォルトが異なります(128無制限)。
  • 対応するnative_transport_min_threadsがありません。
  • アイドル・スレッドは30秒後に停止します。
native_transport_max_frame_size_in_mb
(デフォルト:256MB)許可されるフレームの最大サイズ。これよりも大きいフレーム(要求)は無効として拒否されます。
native_transport_max_concurrent_connections
(デフォルト:-1)同時クライアント接続の最大数を指定します。デフォルト値の-1は、無制限を意味します。
native_transport_max_concurrent_connections_per_ip
(デフォルト:-1)ソースIPアドレスごとの同時クライアント接続の最大数を指定します。デフォルト値の-1は、無制限を意味します。

RPC(リモート・プロシージャ・コール)の設定

クライアント接続の構成と調整のための設定です。

broadcast_rpc_address
(デフォルト:設定なし) ドライバーやその他のCassandraノードにブロードキャストするRPCアドレス。0.0.0.0に設定することはできません。空白にすると、rpc_addressまたはrpc_interfaceの値に設定されます。rpc_addressまたはrpc_interface0.0.0.0に設定されている場合、このプロパティを設定する必要があります。
rpc_port
(デフォルト:9160)クライアント接続用のThriftポート。
start_rpc
(デフォルト:true)Thrift RPCサーバーを起動します。
rpc_keepalive
(デフォルト:true)クライアント接続に対するキープアライブを有効または無効にします(RPCまたはネイティブ)。
rpc_max_threads
(デフォルト:無制限選択したRPCサーバー(rpc_server_type)にかかわらず、RPCスレッド・プール内の最大要求数によって、同時に存在しうる要求の数が決まります。ただし、rpc_server_typeのパラメーターとしてsyncを使用している場合、接続可能なクライアントの数もこれによって決まります。クライアント接続数が多いと、これはスレッド・スタックに対してメモリーを過剰に使用する原因になります。クライアント側で接続をプールすることを強く推奨します。最大スレッド・プール・サイズを設定しておくと、挙動が不適切なクライアントに対する安全対策になります。最大数に達すると、Cassandraは、いずれかのクライアントが接続を切るまで追加の接続をブロックします。
rpc_min_threads
(デフォルト:16)リモート・プロシージャー・コールに対する最小スレッド・プール・サイズを設定します。
rpc_recv_buff_size_in_bytes
(デフォルト:なし)リモート・プロシージャー・コールに対する受信ソケット・バッファー・サイズを設定します。
rpc_send_buff_size_in_bytes
(デフォルト:なしリモート・プロシージャー・コールに対する送信ソケット・バッファー・サイズをバイト単位で設定します。
rpc_server_type
(デフォルト:sync)CassandraはRPCサーバー向けに3つの選択肢を用意しています。Windowsの場合、syncはhshaよりも約30%遅くなります。Linuxの場合、syncとhshaのパフォーマンスはほぼ同じですが、メモリー使用量はhshaの方が小さくなります。
  • sync:(デフォルトはThrift接続あたり1つのスレッド。)

    クライアント数が非常に大きい場合、メモリーが制限要因になります。64ビットのJVMの場合、スレッドあたりの最小スタック・サイズは180KBで、仮想メモリーの使用量に対応しています。物理メモリーは、スタック・スペースの使用量によっては制限される場合があります。

  • hsha
    半分同期、半分非同期(half synchronous, half asynchronous)です。すべてのThriftクライアントは、クライアント数によって変化しない少数のスレッドを使用して非同期で処理されます。このため多くのクライアントにも対応してスケールします。RPC要求は同期的です(アクティブな要求あたり1つのスレッド)。
    注: このオプションを選択した場合、rpc_max_threadsのデフォルト値(無制限)を変更する必要があります。
  • 独自のRPCサーバー

    サーバー・インスタンスを作成できる、o.a.c.t.TServerFactoryの完全修飾されたクラス名を指定する必要があります。

高度な障害検知の設定

低パフォーマンスのノードまたは故障ノードの処理を設定します。

dynamic_snitch_badness_threshold
(デフォルト:0.1)低パフォーマンスのノードからクライアント要求を別のノードに動的にルーティングするためのパフォーマンスしきい値を設定します。具体的には、低パフォーマンスのノードがどの程度悪い状態なれば動的スニッチが他のレプリカを優先するかを制御します。値0.2は、そのノードの応答時間が最高パフォーマンスのノードよりも20%低下するまで、Cassandraが静的スニッチ値を継続して使用することを意味します。このしきい値に達するまで、受信した要求は最も近いレプリカ(スニッチで決定される)に静的にルーティングされます。このパラメーターの値が0より大きく、read_repair_chanceが1.0未満である場合、キャッシュ容量はノード全体で最大化されます。
dynamic_snitch_reset_interval_in_ms
(デフォルト:600000ミリ秒)すべてのノード・スコアをリセットする時間間隔(ミリ秒単位)。これにより不良ノードが回復できます。
dynamic_snitch_update_interval_in_ms
(デフォルト:100ミリ秒)スニッチがノード・スコアを計算する間隔。スコアの計算はCPUに負担がかかるので、この間隔を減らす際には注意してください。
hints_flush_period_in_ms
(デフォルト:10000)内部バッファーからディスクにヒントをフラッシュする頻度を設定します。
hints_directory
(デフォルト:$CASSANDRA_HOME/data/hints)ヒントを保存するディレクトリーを設定します。
hinted_handoff_enabled
(デフォルト:true)ヒンテッド・ハンドオフを有効または無効にします。データ・センターごとにデータ・センター・リストを追加できるようにします。例:hinted_handoff_enabled:DC1,DC2.ヒントは、利用不能だったノードを対象に書き込みをリプレイする必要があることを示します。Cassandraがヒントをコーディネーター・ノードのヒント・ファイルに書き込む場所。

関連情報: ヒンテッド・ハンドオフ:書き込みパス中のリペア

hinted_handoff_disabled_datacenters
(デフォルト:なし)ヒンテッド・ハンドオフを実行しないデータ・センターのブラックリストを指定します。データ・センターごとに、データ・センター・リストを追加できるようにします。例:hinted_handoff_disabled_datacenters:- DC1 - DC2.

関連情報: ヒンテッド・ハンドオフ:書き込みパス中のリペア

hinted_handoff_throttle_in_kb
(デフォルト:1024)配信スレッドあたりの最大スロットル(キロバイト/秒)。 この速度は、クラスター内のノードの数に比例して低下します。たとえば、クラスター内に2つのノードがある場合、各配信スレッドで最大速度が使用されます。3つある場合は、2つのノードが同時にヒントを配信することが期待されているため、各ノードは最大値の半分にスロットリングされます。
max_hint_window_in_ms
(デフォルト:10800000ミリ秒[3時間])応答しないノードに対してヒントが生成される最大時間。この時間の経過後は、そのノードが復帰して応答するまで、新しいヒントは生成されません。復帰後にノードが再度ダウンすると、新しい間隔がスタートします。この設定により、ノードがオンラインに復帰したときに、突然リソースを要求し、クラスター内の残りのノードが大量のヒンテッド書き込みをリプレイしようとするのを防止できます。

関連情報: 障害の検知と復旧

max_hints_delivery_threads
(デフォルト:2)ヒントの配信に使用するスレッド数。複数データ・センター・デプロイの場合、データ・センター間の受け渡しは一般的に低速のため、この数を増やすことを検討してください。
max_hints_file_size_in_mb
(デフォルト:128)1つのヒント・ファイルの最大サイズ(メガバイト単位)。
batchlog_replay_throttle_in_kb
(デフォルト:1024KB/秒)合計最大スロットル。スロットリングは、クラスター内のノード数に比例して低くなります。

要求スケジューラーのプロパティ

受信するクライアント要求の、定義されたポリシーに基づく処理を設定します。ノードの負荷が過大で要求を取りこぼしている場合には、これらのプロパティを使用する必要があります。要求の優先順位付けはせずに、ノードを増やすことを推奨します。

request_scheduler
(デフォルト:org.apache.cassandra.scheduler.NoScheduler)受信したクライアント要求を、定義されたポリシーに基づいて処理するスケジューラーを定義します。このスケジューラーは、複数のキースペースを含む単一ノード・クラスターで、クライアント要求をスロットルするのに役立ちます。このパラメーターは厳密にクライアントからの要求に対するもので、ノード間通信には影響しません。有効な値は、以下のとおりです。
  • org.apache.cassandra.scheduler.NoScheduler

    スケジューリングは行われません。

  • org.apache.cassandra.scheduler.RoundRobinScheduler

    request_scheduler_idプロパティごとに個別のキューを持つノードに対するクライアント要求のラウンド・ロビン。

  • RequestSchedulerインターフェイスを実装するJavaクラス。
request_scheduler_id
(デフォルト:keyspaceスケジューリングを行う対象となる要求の識別子。有効な値は、現時点ではkeyspaceのみです。「weights」を参照してください。
request_scheduler_options
(デフォルト:無効request_schedulerの構成オプションを定義するプロパティのリストを含みます。
  • throttle_limit

    クライアントあたりの転送中の要求の数。この上限を超える要求は、実行中の要求が完了するまで、キューに入れられます。推奨値は((concurrent_reads + concurrent_writes)× 2)です。

  • default_weight:(デフォルト:1)

    RoundRobinの1サイクル中に処理される要求の数。

  • weights:(デフォルト:Keyspace:1)

    キースペースのリストを指定します。request_scheduler_idに基づいて、RoundRobinの1サイクル中に処理される要求の数を設定します。

Thriftインターフェイスのプロパティ

古いクライアント向けの旧式のAPIです。Cassandraに対するAPIとしては、CQLの方がシンプルで優れています。

thrift_framed_transport_size_in_mb
(デフォルト:15)Thrift用のフレーム・サイズ(最大のフィールド長)。フレームはアプリケーションが挿入する行の全体または行の一部です。
thrift_max_message_length_in_mb
(デフォルト:16)Thriftメッセージの最大長(メガバイト単位)で、すべてのフィールドとThriftの内部オーバーヘッドが含まれます(フレームごとに1バイトのオーバーヘッド)。メッセージ長は通常、バッチと連動して使用します。長さが24以上のフレームは、4つの挿入を収容でき、各挿入は24バイトです。必要なメッセージ長は24+24+24+24+4(フレーム数)以上となります。

セキュリティのプロパティ

サーバーとクライアントのセキュリティを設定します。

authenticator
(デフォルト:AllowAllAuthenticator)認証のバックエンド。 ユーザーを識別するためのIauthenticatorを実装します。使用可能なオーセンティケーターは以下のとおりです。
  • AllowAllAuthenticator

    認証を無効にして、チェックを行いません。

  • PasswordAuthenticator

    system_auth.credentialsテーブルに格納されているユーザー名とハッシュ化されたパスワードでユーザーを認証します。 デフォルトの1を使用していて、1つのレプリカを含むノードが停止した場合、system_authキースペースはレプリケートされていないため、クラスターにログインできなくなります。

関連情報: 内部認証

internode_authenticator
(デフォルト:有効ノード間の認証バックエンド。org.apache.cassandra.auth.AllowAllInternodeAuthenticatorを実装して、ピア・ノードからの接続を許可または禁止します。
authorizer
(デフォルト:AllowAllAuthorizer)権限管理のバックエンド。アクセスを制限しパーミッションを付与するIAuthenticatorを実装します。使用可能なオーソライザーは以下のとおりです。
  • AllowAllAuthorizer

    権限管理を無効にし、すべてのユーザーのどのようなアクションも許可します。

  • CassandraAuthorizer

    system_auth.permissionsテーブルにパーミッションを格納します。 デフォルトの1を使用していて、1つのレプリカを含むノードが停止した場合、system_authキースペースはレプリケートされていないため、クラスターにログインできなくなります。

関連情報: オブジェクト・パーミッション

role_manager
(デフォルト:CassandraRoleManagerIRoleManager を実装して、ロール間の付与やメンバーシップを維持する認証および権限管理バックエンドの一部。Cassandraには、構成しなくてもすぐに利用でき、system_authキースペースにロール情報を格納するorg.apache.cassandra.auth.CassandraRoleManagerがあります。IRoleManagerのほとんどの機能には認証ログインが必要なので、構成されたIAuthenticatorで実際に認証を実装しない限り、この機能の大部分は使用できません。CassandraRoleManagerではsystem_authキースペースにロール・データが格納されます。ロール・マネージャーを使用する場合は、system_authキースペースのレプリケーション係数を増やしてください。
roles_validity_in_ms
(デフォルト:2000)パーミッションの呼び出しは、オーソライザーにより異なりますが、負荷の大きい操作になる場合があるので、この設定を使うことで柔軟性が得られます。ロール・キャッシングの有効期間。無効にするには、0に設定します。認証セッションで付与されたロールは、AuthenticatedUserにキャッシングされ、ここに指定された期間を過ぎると、(非同期)再読み込みができるようになります。AllowAllAuthenticatorでは自動的に無効になります。
roles_update_interval_in_ms
(デフォルト:2000)有効な場合は、ロール・キャッシュの更新間隔。デフォルトはroles_validity_in_msと同じ値になります。この間隔を過ぎると、キャッシュ・エントリーを更新できるようになります。次回アクセス時には、非同期の再読み込みがスケジュールされ、完了するまで古い値に戻ります。roles_validity_in_msがゼロではない場合、こちらもゼロ以外の値でなければなりません。
permissions_validity_in_ms
(デフォルト:2000)キャッシュ内のパーミッションが有効として維持される期間。CassandraAuthorizerなどオーソライザーにより異なりますが、パーミッションのフェッチはリソースを多く消費する場合があります。この設定は、0に設定した場合や、AllowAllAuthorizerが設定されている場合は無効です。

関連情報: オブジェクト・パーミッション

permissions_update_interval_in_ms
(デフォルト:permissions_validity_in_msと同じ値) パーミッション・キャッシュの更新間隔(有効な場合)。この間隔を過ぎると、キャッシュ・エントリーを更新できるようになります。次回アクセス時には、非同期の再読み込みがスケジュールされ、完了するまで古い値に戻ります。permissions_validity_in_ms を使用する場合は、このプロパティをゼロ以外にしなければなりません。
server_encryption_options
ノード間の暗号化を有効または無効にします。キーを生成して、適切なキーストアの場所とトラストストアの場所およびパスワードを指定する必要があります。有効なカスタムの暗号化オプションは現在ありません。使用可能なオプションは以下のとおりです。
  • internode_encryption:(デフォルト:none)認証、キー交換、およびデータ転送の暗号化にTLS_RSA_WITH_AES_128_CBC_SHA暗号化スイートを使用するノード間通信の暗号化を有効または無効にします。(連邦情報処理標準)FIPS 140準拠モードで実行している場合は、DHE/ECDHE暗号を使用してください。使用可能なノード間オプションは以下のとおりです。
    • all

      すべてのノード間通信を暗号化します。

    • none

      暗号化は行いません。

    • dc

      データ・センター間のトラフィックを暗号化します(サーバーのみ)。

    • rack

      ラック間のトラフィックを暗号化します(サーバーのみ)。

  • keystore:(デフォルト:conf/.keystore

    Java Secure Socket Extension(JSSE)との使用に適しているJava keystore(JKS)の場所。これはSecure Sockets Layer(SSL)とTransport Layer Security(TLS)の各プロトコルのJava版です。このキーストアには送信メッセージの暗号化に使用されるプライベート・キーが含まれます。

  • keystore_password:(デフォルト:cassandra

    キーストア用のパスワード。

  • truststore:(デフォルト:conf/.truststore

    リモート・サーバーの認証に必要な信頼できる証明書を含むトラストストアの場所。

  • truststore_password:(デフォルト:cassandra

    トラストストア用のパスワード。

これらのオプションで使用するパスワードは、キーストアおよびトラストストアの生成時に使用したパスワードと一致する必要があります。これらのファイルの生成手順については、「JSSEで使用するキーストアの作成」を参照してください。

高度な設定は以下のとおりです。

  • protocol:(デフォルト:TLS
  • algorithm:(デフォルト:SunX509
  • store_type:(デフォルト:JKS
  • cipher_suites:(デフォルト:TLS_RSA_WITH_AES_128_CBC_SHATLS_RSA_WITH_AES_256_CBC_SHA
  • require_client_auth:(デフォルト:false

    証明書の認証を有効または無効にします。

関連情報: ノード間の暗号化

client_encryption_options
クライアントとノード間の暗号化を有効または無効にします。キーを生成して、適切なキーストアの場所とトラストストアの場所およびパスワードを指定する必要があります。有効なカスタムの暗号化オプションは現在ありません。使用可能なオプションは以下のとおりです。
  • enabled:(デフォルト:false

    有効にするには、trueに設定します。

  • keystore:(デフォルト:conf/.keystore

    Java Secure Socket Extension(JSSE)との使用に適しているJava keystore(JKS)の場所。これはSecure Sockets Layer(SSL)とTransport Layer Security(TLS)の各プロトコルのJava版です。このキーストアには送信メッセージの暗号化に使用されるプライベート・キーが含まれます。

  • keystore_password:(デフォルト:cassandra

    キーストア用のパスワード。これは、キーストアおよびトラストストアの生成時に使用したパスワードと一致する必要があります。

  • require_client_auth:(デフォルト:false

    証明書の認証を有効または無効にします(Cassandra 1.2.3以降で使用可能)。

  • truststore:(デフォルト:conf/.truststore

    require_client_authがtrueの場合に設定します。

  • truststore_password<truststore_password>

    require_client_authがtrueの場合に設定します。

高度な設定は以下のとおりです。

  • protocol:(デフォルト:TLS
  • algorithm:(デフォルト:SunX509
  • store_type:(デフォルト:JKS
  • cipher_suites:(デフォルト:TLS_RSA_WITH_AES_128_CBC_SHATLS_RSA_WITH_AES_256_CBC_SHA

関連情報: クライアントとノード間の暗号化

ssl_storage_port
(デフォルト:7001)暗号化された通信用のSSLポート。encryption_optionsで有効にしていない限り使用されません。
native_transport_port_ssl
(デフォルト:9142)Cassandra 3.0以降では、暗号化のために追加の専用ポートを指定することができます。クライアント暗号化が有効で、native_transport_port_sslが無効の場合、native_transport_port(デフォルト:9042)ですべてのトラフィックが暗号化されます。暗号化されていないトラフィックと暗号化されているトラフィックの両方を使用するには、native_transport_port_sslを有効にします。
cassandra-env.shファイルの場所は、インストールのタイプによって異なります。
パッケージ・インストール /etc/cassandra/cassandra-env.sh
tarボール・インストール install_location/conf/cassandra-env.sh
cassandra-env.ps1の場所:
Windowsインストール C:\Program Files\DataStax Community\apache-cassandra\conf\cassandra-env.ps1