cassandra.yaml構成ファイル
cassandra.yamlファイルは、DataStax Enterpriseの主要な構成ファイルです。
- パッケージ・インストールおよびInstaller-Services:/etc/dse/cassandra
- tarボール・インストールおよびInstaller-No Services:installation_location/resources/cassandra/conf
構文
各セクションのプロパティで、主要な設定にはスペースが含まれていないため、そのセクションの各エントリーの前にスペースを少なくとも2つ入力する必要があります。YAML構文に従います。
分類
構成プロパティを以下の各セクションにグループ分けしました。
- クイック・スタート
クラスターを構成するために必要な最小限のプロパティ。
- 使用頻度の高いもの
DataStax Enterpriseの構成時に頻繁に使用されるプロパティ。
- パフォーマンスの調整
コミット・ログ、コンパクション、メモリー、ディスクI/O、CPU、読み取り、書き込みを含むパフォーマンスとシステム・リソースの活用を調整します。
- 高度な設定
上級ユーザー用のプロパティまたは使用頻度の低いプロパティ。
- セキュリティ
DSE Unified Authentication(DSE統合認証)には、認証、権限管理、ロール管理の各機能が用意されています。DSE Unified Authentication(DSE統合認証)を有効にするには、dse.yamlで追加の構成が必要です。「DSE Unified Authentication(DSE統合認証)の構成」を参照してください。
- 連続ページング 継続的にページをクライアントにプッシュする際のメモリー、スレッド、間隔を構成するプロパティ。
クイック・スタート・プロパティ
クラスターを構成するために必要な最小限のプロパティ。
関連情報: ワークロードの種類別に単一データ・センターを初期化する および「ワークロードの種類別に複数のデータ・センターを初期化する」。
- cluster_name
- デフォルト:Test Cluster。クラスターの名前。この設定により、論理クラスター内のノードが別のクラスターに参加するのを防ぎます。クラスター内のすべてのノードが同じ値を持つ必要があります。
- listen_address
- デフォルト:localhost。データベースがこのノードを他のノードに接続するためにバインドするIPアドレスまたはホスト名。警告:さまざまなユース・ケースの適切な設定は以下のとおりです。
- 絶対に、listen_addressを0.0.0.0に設定しないでください。
- 同じノード上で、listen_addressとlisten_interfaceの両方に値を設定しないでください。
- 単一ノード・インストール:以下のいずれかを実行します。
- このプロパティをコメントアウトします。ノードが適切に構成されている場合(ホスト名、名前の解決など)、データベースはInetAddress.getLocalHost()を使用してシステムからローカル・アドレスを取得します。
- 設定はデフォルトの
localhost
のままにします。
- マルチ・ノード・インストールのノード:このプロパティをそのノードのIPアドレスまたはホスト名に設定するか、listen_interfaceを設定します。
- パブリックとプライベートのインターフェイス間で自動切り替えをサポートしているEC2環境内の、マルチ・ネットワーク・インストールまたはマルチ・データ・センター・インストールのノード:
listen_address
をノードのIPアドレスまたはホスト名に設定するか、listen_interfaceを設定します。 - 2つの物理ネットワーク・インターフェイスを持ち、Ec2MultiRegionSnitchを使用して複数のAmazon EC2リージョンにデプロイされているマルチ・データ・センター・インストールまたはクラスターのノード:
listen_address
をこのノードのプライベートIPまたはホスト名に設定するか、listen_interfaceを設定します(ローカル・データ・センター内の通信用)。- broadcast_addressを2番目のIPまたはホスト名に設定します(データ・センター間通信用)。
- listen_on_broadcast_addressを
true
に設定します。 - このノードがシード・ノードの場合、ノードのパブリックIPアドレスまたはホスト名をシード・リストに追加します。
- パブリックIPファイアウォールでstorage_portまたはssl_storage_portを開きます。
- listen_interface
- デフォルト:eth0。注。他のノードに接続するためにデータベースがバインドするインターフェイス。インターフェイスは1つのアドレスのみに対応していなければなりません。IPの別名使用はサポートされていません。同じノード上で、listen_addressと
listen_interface
の両方に値を設定しないでください。
デフォルトのディレクトリー
インストール時にデフォルトのディレクトリーのいずれかを変更した場合は、以下のプロパティを新しい場所に設定します。rootアクセス権があることを確認します。
- cdc_raw_directory
- CDCログが格納されるディレクトリー。デフォルトの場所:
- パッケージ・インストールおよびInstaller-Services:/var/lib/cassandra/cdc_raw
- tarボール・インストールおよびInstaller-No Services:/var/lib/cassandra/cdc_raw
Change Data Captureログが格納されるディレクトリー。
- commitlog_directory
- コミット・ログが格納されているディレクトリー。デフォルトの場所: /var/lib/cassandra/commitlog
書き込みパフォーマンスを最適化するには、コミット・ログを、データ・ファイル・ディレクトリーとは別のディスク・パーティションに置くか(理想的には)、別の物理デバイスに置いてください。コミット・ログは追加書き込み専用なので、この目的にはHDDが適しています。
- data_file_directories
- テーブル・データが格納されるディレクトリーの場所(SSTable内)。データベースは、構成されているコンパクション・ストラテジの細分性に応じて、データをその場所全体に均等に分散します。デフォルトの場所は、/var/lib/cassandra/dataです。
実稼働環境では、DataStaxはRAID 0およびSSDを推奨しています。
- saved_caches_directory
- テーブル・キーと行キャッシュが格納されるディレクトリーの場所。すべてのインストールで、saved_cachesディレクトリーのデフォルトの場所は/var/lib/cassandra/saved_cachesです。
使用頻度の高いプロパティ
DataStax Enterpriseの構成時に頻繁に使用されるプロパティ。
ノードを初めて起動する前に、慎重に要件を評価する必要があります。
一般的な初期化プロパティ
- commit_failure_policy
- デフォルト:stop。ディスクのコミット障害に関するポリシー:
- die
ゴシップとThriftを停止してJVMを強制終了し、ノードが置き換えられるようにします。
- stop
ゴシップとThriftを停止して、JMXを使用した調査は可能なまま、そのノードを実質的に停止状態にします。
- stop_commit
書き込みを禁止し、コミット・ログを停止し、読み取りを継続します。
- ignore
致命的なエラーを無視し、バッチ処理を失敗にします。
- die
- prepared_statements_cache_size_mb
- デフォルト:auto。ヒープの1/256と10 MBのいずれか大きい方に設定されます。ネイティブ・プロトコルのプリペアド・ステートメント・キャッシュの最大サイズ。注: 指定した値が大きすぎると、GCが長時間実行され、メモリー不足エラーになる可能性があります。ヒープに対して小さい値になるようにしてください。文のプリペアを繰り返すと、パフォーマンス・ペナルティーをもたらします。
- thrift_prepared_statements_cache_size_mb
- デフォルト:auto。ヒープの1/256と10 MBのいずれか大きい方に設定されます。Thriftプリペアド・ステートメント・キャッシュの最大サイズ。Thriftを使用しない場合は空白のままにします。 注: 指定した値が大きすぎると、GCが長時間実行され、メモリー不足エラーになる可能性があります。ヒープに対して小さい値になるようにしてください。文のプリペアを繰り返すと、パフォーマンス・ペナルティーをもたらします。
- disk_optimization_strategy
- デフォルト:disabled。注 ディスク読み取りを最適化するストラテジ。使用可能な値:ssdまたはspinning。
- disk_failure_policy
- デフォルト:stop。データベースがディスク障害にどのように応答するのかを設定します。推奨設定:stopまたはbest_effort。有効な値:
- die
すべてのファイル・システム・エラーまたは1つのSSTableエラーに対してゴシップとThriftを終了し、JVMを強制終了して、ノードが置き換えられるようにします。
- stop_paranoid
1つのSSTableエラーの場合でもゴシップとThriftを停止します。
- stop
ゴシップとThriftを停止して、そのノードを実質的な停止状態にしておきます。ただし、JMXを使用して調査は行えます。
- best_effort
障害が発生したディスクの使用を停止し、使用可能な残りのSSTableに基づいて要求に応答します。これは、整合性レベルがONEの場合に古いデータを取得する可能性があります。
- ignore
致命的なエラーを無視し、要求を失敗にします。すべてのファイル・システム・エラーが記録され、それ以外は無視されます。
関連情報:「Handling Disk Failures In Cassandra 1.2」ブログおよびJBODを使用した単一ディスク障害からの復旧。
- die
- endpoint_snitch
- デフォルト:DseSimpleSnitch。IEndpointSnitchインターフェイスを実装しているクラスに設定します。データベースでは、ノードを探す際や要求をルーティングする際にスニッチを使用します。
- DseSimpleSnitch
開発用デプロイにのみ、適しています。近接度はDSEワークロードによって決定され、個々のデータ・センター内にトランザクション・ノード、Analyticsノード、Searchノードを配置します。データ・センターやラックの情報は認識しません。
- GossipingPropertyFileSnitch
実稼働環境で推奨します。ローカル・ノードのラックとデータ・センターをcassandra-rackdc.propertiesファイルで読み取り、ゴシップを介してこれらの値を他のノードに伝搬します。PropertyFileSnitchから移行するには、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-topology.propertiesファイルの場所は、インストールのタイプによって異なります。パッケージ・インストールInstaller-Servicesインストール
/etc/dse/cassandra/cassandra-topology.properties tarボール・インストールInstaller-No Servicesインストール
installation_location/resources/cassandra/conf/cassandra-topology.properties - PropertyFileSnitch
ラックとデータ・センターにより近接度を決定します。これらはcassandra-topology.propertiesファイルで明示的に構成されています。
- Ec2Snitch
1つのリージョンのEC2デプロイで使用します。リージョンとアベイラビリティー・ゾーンの情報をAmazon EC2 APIから読み込みます。リージョンはデータ・センターとして扱われ、アベイラビリティー・ゾーンはラックとして扱われ、プライベートIPアドレスのみを使用します。このため、複数のリージョンでは機能しません。
- Ec2MultiRegionSnitch
パブリックIPをbroadcast_addressとして使用することでリージョン間の接続を可能にします。つまり、パブリックIPに対してseedアドレスも設定し、storage_portまたはssl_storage_portをパブリックIPのファイアウォール上で開く必要があります。リージョン内トラフィックのために、接続が確立した後はプライベートIPに切り替わります。
- RackInferringSnitch
ラックとデータ・センターにより近接度を決定します。これらの場所は、ノードのIPアドレスのそれぞれ3番目と2番目のオクテットに対応していると見なされます。カスタム・スニッチ・クラスを作成する例として適しています(これがデプロイ規則に合っている場合を除く)。
- GoogleCloudSnitch
Google Cloud Platformの1つ以上のリージョンにデプロイする場合に使用します。リージョンはデータ・センターとして扱われ、アベイラビリティー・ゾーンはデータ・センター内のラックとして扱われます。すべての通信は、同じ論理ネットワーク内のプライベートIPアドレスを介して行われます。
- CloudstackSnitch
Apache Cloudstack環境でCloudstackSnitchを使用します。
関連情報: スニッチ
- DseSimpleSnitch
- rpc_address
- デフォルト:localhost。クライアント接続用のリッスン・アドレス(Thrift RPCサービスとネイティブ・トランスポート)。有効な値:
- 設定なし:
ノードに構成されているホスト名構成を使用してアドレスを解決します。未設定の場合、ホスト名は/etc/hostname、/etc/hosts、またはDNSを使用してこのノードのIPアドレスに解決されます。
- 0.0.0.0:
すべての構成済みインターフェイスをリッスンします。broadcast_rpc_addressを0.0.0.0以外の値に設定する必要があります。
- IPアドレス
- hostname
関連情報:ネットワーク
- 設定なし:
- rpc_interface
- デフォルト:eth1。注クライアント接続用のリッスン・アドレス。インターフェイスは1つのアドレスのみに対応していなければなりません。IPの別名使用はサポートされていません。「rpc_address」を参照してください。
- rpc_interface_prefer_ipv6
- デフォルト:false。インターフェイスにipv4アドレスとipv6アドレスがある場合、デフォルトでは最初のipv4アドレスが使用されます。trueに設定すると、最初のipv6アドレスが使用されます。
- seed_provider
- クラスター内のコンタクト・ポイントに指定されているホストのアドレス。参加するノードは-seedsリスト内のいずれかのノードに接続し、リングのトポロジーを学習します。
- class_name(デフォルト:org.apache.cassandra.locator.SimpleSeedProvider)
シード・ロジックを処理するクラス。カスタマイズできますが、通常は必要ありません。
- -seeds(デフォルト:127.0.0.1) gossipが、クラスターに追加する新しいノードをブートストラップするために使用するIPアドレスのコンマ区切りリスト。クラスターに複数のノードが含まれる場合、リストをデフォルト値からいずれかのノードのIPアドレスに変更する必要があります。重要: 保守タスクが増え、ゴシップのパフォーマンスが低下するため、すべてのノードをシード・ノードにすることは推奨しません。ゴシップの最適化は重要ではありませんが、シード・リストを小さくすることを推奨します(データ・センターあたり約3つのノード)。
関連情報: ワークロードの種類別に単一データ・センターを初期化する および「ワークロードの種類別に複数のデータ・センターを初期化する」。
- class_name(デフォルト:org.apache.cassandra.locator.SimpleSeedProvider)
- enable_user_defined_functions
- デフォルト:false。ユーザー定義関数(UDF)はサーバー側で実行されるため、セキュリティ上のリスクを伴います。UDFは、悪意のあるコードの実行を阻止するためにサンドボックスで実行されます。UDFはデフォルトで無効になっています。
- enable_scripted_user_defined_functions
- デフォルト:false。
enable_user_defined_functions
がtrueの場合、Java UDFは常に有効です。language javascript
や、任意のカスタムJSR-223プロバイダーでUDFを使用するには、このオプションを有効にします。enable_user_defined_functions
がfalseの場合、このオプションによる影響はありません。
一般的なコンパクション設定
- compaction_throughput_mb_per_sec
- デフォルト:16。インスタンス全体にわたって、1秒あたり指定したMB数までコンパクションを抑制します。データベースのデータの挿入が高速であるほど、SSTableの数を低く維持するためにはより高速でコンパクションする必要があります。推奨値は書き込みスループット速度の16~32倍です(MB/秒)。この値を0に設定すると、コンパクションのスロットルが無効になります。
関連情報: コンパクションの構成
- compaction_large_partition_warning_threshold_mb
- デフォルト:100。データベースは、コンパクションのパーティションが設定値よりも大きくなると、警告をログに記録します。
一般的なmemtable設定
一般的なディスク設定
- concurrent_reads
- デフォルト:32。注 ワークロードがメモリーに収まるデータ量を超えると、読み取り時にディスクからデータをフェッチする際にボトルネックが発生します。concurrent_readsを(16 × ドライブ数)に設定すると、操作のキューをスタック内で低く保つことでOSとドライブが順序を変更できるようになります。デフォルトの設定は、論理ボリューム・マネージャー(LVM)によって管理されるドライブとRAIDドライブの両方に適用されます。
- concurrent_writes
- デフォルト:32。注DataStax Enterpriseでの書き込みがI/Oバウンドになることはほとんどないため、理想的な同時書き込みの数は、ノードのCPUコア数に依存します。推奨値は8 × CPUコア数です。
- concurrent_counter_writes
- デフォルト:32。注 カウンターの書き込みは、インクリメントと書き戻しを行う前に、現在の値を読み取ります。推奨値は(16 × ドライブ数)です。
- concurrent_materialized_view_writes
- デフォルト:32。同時マテリアライズド・ビューの書き込み数の上限。各マテリアライズド・ビュー書き込みに読み取りが関与しているため、この上限を同時読み取り数と同時書き込み数のどちらか少ない方に設定します。
一般的な自動バックアップ設定
- incremental_backups
- デフォルト:false。スナップショットを最後に取得した後に更新されたデータをバックアップします。これを有効にすると、データベースはローカルにフラッシュまたはストリームされた各SSTableへのハードリンクを、対応するキースペース・データの backupsサブディレクトリーに作成します。これらのリンクの削除は、オペレーターの判断で行います。
関連情報: インクリメンタル・バックアップの有効化
- snapshot_before_compaction
- デフォルト:false。各コンパクションの前に行うスナップショットの取得を有効または無効にします。スナップショットは、データ形式に変更がある場合のデータのバックアップに役立ちます。データベースは古いスナップショットを自動的にクリーンアップしないため、このオプションの使用には注意してください。
関連情報: コンパクションの構成
一般的な障害検知設定
- phi_convict_threshold
- デフォルト:8。注 障害検知機能の感度を指数スケールで調整します。通常、この設定を調整する必要はありません。
関連情報: 障害検知と復旧について
パフォーマンス調整のプロパティ
コミット・ログ、コンパクション、メモリー、ディスクI/O、CPU、読み取り、書き込みを含むパフォーマンスとシステム・リソースの活用を調整します。
コミット・ログの設定
- commitlog_sync
- デフォルト:periodic。データベースがミリ秒単位で書き込みを確認応答するために使用する方法。
- commitlog_sync_period_in_ms
- デフォルト:10000。コミット・ログをディスクに同期させる頻度を制御します。周期的同期は即座に認識されます。
- commitlog_sync_batch_window_in_ms
- デフォルト:disabled。注 データベースが同期を実行する前に、他の書き込みを待つ時間を制御します。この方法が有効な場合、ディスクに書き込みのfsyncが行われるまで、書き込みは確認応答されません。
- commitlog_segment_size_in_mb
- デフォルト:32。個々のコミット・ログ・ファイル・セグメントのサイズ。コミット・ログ・セグメントは、すべてのデータがSSTableにフラッシュされた後、アーカイブしたり、削除したり、再利用したりできます。このデータには、システム内の各テーブルからのコミット・ログ・セグメントが含まれる可能性があります。ほとんどのコミット・ログ・アーカイブの場合、通常はデフォルトのサイズで十分ですが、しかし細分性を上げたい場合は、8または16 MBが妥当です。
デフォルトでは、max_mutation_size_in_kbは、commitlog_segment_size_in_kbの半分に設定されています。
関連情報: コミット・ログ・アーカイブの構成
- max_mutation_size_in_kb
- デフォルト:commitlog_segment_size_in_mbの½。
ミューテーションのサイズがこの値を上回る場合、そのミューテーションは拒否されます。コミット・ログ・セグメントのサイズを大きくする前に、そのミューテーションが予想よりも大きくなっている理由を調査してください。コミット・ログ・セグメント・サイズを大きくする修正には制限があるため、アクセス・パターンとデータ・モデルに根本的な問題がないか確認してください。
制約事項:max_mutation_size_in_kb
が明示的に設定されている場合、commitlog_segment_size_in_mb
をmax_mutation_size_in_kb / 1024のサイズの2倍以上に設定する必要があります。上記の「commitlog_segment_size_in_mb」を参照してください
- commitlog_compression
- デフォルト:disabled。コミット・ログを圧縮する場合に使用する圧縮方式。有効な値:LZ4、Snappy、Deflate。このプロパティの値が設定されていない場合、コミット・ログは圧縮されずに書き込まれます。
- cdc_total_space_in_mb
- デフォルト:4096と、
cdc_raw_directory
が存在するドライブの合計容量の1/8の合計。注 容量がこの値を超えると、データベースはCDCが有効になっているテーブルを含むミューテーションでWriteTimeoutException
をスローします。生のCDCログの解析と、解析後のログの削除は、CDCCompactor(コンシューマー)が行います。 - cdc_free_space_check_interval_ms
- デフォルト:250。注
cdc_raw
の上限に達し、CDCCompactorの実行が遅れるか、バック・プレッシャーが発生すると、cdcを追跡するテーブルに新しい空き領域を使用できるようになったかどうかを確認するためにこの間隔でチェックします。 - commitlog_total_space_in_mb
- デフォルト:32ビットJVMでは32、64ビットJVMでは8192。注 コミット・ログに使用される合計容量。すべてのコミット・ログで使用している合計容量がこの値を超えると、データベースは次に最も近い倍数のセグメントへの切り上げを行い、最も古いコミット・ログ・セグメントのmemtableをディスクにフラッシュし、コミット・ログからこれらのログ・セグメントを削除します。これによって起動時にリプレイされるデータ量が削減され、更新頻度の低いテーブルがコミット・ログ・セグメントをいつまでも維持し続けるのを防ぎます。
commitlog_total_space_in_mb
が小さい場合、あまりアクティブでないテーブルのフラッシュ・アクティビティーが増えることになります。関連情報: memtableのしきい値の構成
- gc_log_threshold_in_ms
- デフォルト:200。INFOレベルのログ・メッセージのしきい値。ロギングを最小化するように調整します。
コンパクションの設定
関連情報: コンパクションの構成
- concurrent_compactors
- デフォルト:ディスクの数とコアの数のいずれか小さい方(CPUコアあたりの最小値は2、最大値は8)。注 1つのノードで同時に実行できる同時コンパクション・プロセスの数。アンチエントロピー・リペア用の検証コンパクションは含まれません。同時コンパクションでは、1回の時間のかかるコンパクション中に小さいSSTableが累積する数を制限することにより、読み取りと書き込みが混在するワークロードでの読み取りパフォーマンスを維持しやすくなります。データ・ディレクトリーがSSDでサポートされている場合は、この値をコアの数まで増やしてください。コンパクションの実行が遅すぎる、または速すぎる場合は、まず、compaction_throughput_mb_per_secを調整してください。注: 同時接続コンパクター数を増やすと、特にSTCSでは同時コンパクションは並列処理されるため、コンパクションに使用可能なディスク領域をさらに使用することになります。この構成値を大きくする前に、十分なディスク領域を使用できることを確認します。
- sstable_preemptive_open_interval_in_mb
- デフォルト:50。コンパクション・プロセスで、コンパクションの書き込みが完全に終わる前にSSTableが開かれ、以前のSSTAbleに書き込まれた範囲の代わりに使用されます。この設定は、ページ・キャッシュのチャーンを減らし、ホット行をホットに維持することによって、SSTable間の読み取りの転送がスムーズに行われるよう支援します。
memtableの設定
- memtable_allocation_type
- デフォルト:heap_buffers。データベースがmemtableメモリーの割り当てと管理に使用する方法。
- heap_buffers
オンヒープNIO(ノンブロッキングI/O)バッファー。
- offheap_buffers
オフヒープ(直接)NIOバッファー。
- offheap_objects
ネイティブのメモリー。NIOバッファーのヒープ・オーバーヘッドをなくします。
- heap_buffers
- memtable_cleanup_threshold(廃止予定)
- デフォルト:1/(memtable_flush_writers + 1))。注 自動memtableフラッシュで使用する割合。データベースではmemtable_heap_space_in_mbをmemtable_offheap_space_in_mbに追加し、その合計とmemtable_cleanup_thresholdを乗算してMB単位で容量を算出します。フラッシュされていないすべてのmemtableが使用しているメモリーの合計容量がこの容量を上回ると、データベースは最大のmemtableをディスクにフラッシュします。
たとえば、memtable_heap_space_in_mbとmemtable_offheap_space_in_mbの合計が1000、memtable_cleanup_thresholdが
0.50
のノードを考えてみます。memtable_cleanupの容量は、500
MBです。このノードにはMemtable A(150MB)とMemtable B(350MB)の2つのmemtableがあります。いずれかのmemtableが増えると、使用する合計容量が500MBを越え、データベースはMemtable Bをディスクにフラッシュします。memtable_cleanup_thresholdの値が大きくなると、フラッシュのサイズも大きくなり、その回数が少なくなって、コンパクション・アクティビティーも減る可能性がありますが、同時フラッシュ・アクティビティーも減るため、書き込み負荷が大きい状態でディスクの飽和状態を維持するのが困難になる可能性があります。
このセクションでは、memtable_flush_writersの回数に基づいて割合を計算する際に使用される数式について説明します。cassandra.yamlのデフォルト値は
0.11
で、ノードに多数のディスクがある場合や、ノードのmemtable_flush_writersを8
に設定している場合に適しています。他の例を挙げると、ノードが単一のSSDを使用している場合、memttable_cleanup_thresholdの値は、memtable_flush_writersの最小値2
に基づいて、0.33
と計算されます。 - file_cache_size_in_mb
- デフォルト:ヒープの1/4と512の小さい方。SSTableの読み取りバッファーに使用する合計メモリー。
- buffer_pool_use_heap_if_exhausted
- デフォルト:disabled。注 SSTableバッファー・プールを使い果たし(バッファー・プールが最大メモリーのfile_cache_size_in_mbを超えた場合)、これ以降はバッファーをキャッシュせず、要求に応じて割り当てる場合に、オンヒープ・メモリーとオフヒープ・メモリーのどちらを割り当てるかを示します。
- memtable_flush_writers
- デフォルト:ディスクの数とコアの数のいずれか小さい方(最小値は2、最大値は8)。注 memtableフラッシュ書き込みスレッドの数。これらのスレッドはディスクI/Oによってブロックされ、ブロックされている間、それぞれがmemtableをメモリーに保持します。データ・ディレクトリーでSSDを利用できる場合は、この設定をコアの数まで増やしてください。
キャッシュとインデックスの設定
- column_index_size_in_kb
- デフォルト:64。パーティション内の行インデックスの細分性。巨大な行については、この設定値を小さくするとシーク時間が改善されます。キー・キャッシュを使用する場合は、この設定を大きくし過ぎないように注意してください。キー・キャッシュに負担がかかりすぎます。行のサイズが明確にわからない場合は、デフォルト設定が適しています。
- index_summary_capacity_in_mb
- デフォルト:ヒープサイズの5%[空]。注 SSTableインデックス・サマリーの固定メモリー・プール・サイズ(MB)。すべてのインデックス・サマリーのメモリー使用量がこの制限値を超えると、読み取り速度の低い任意のSSTableがインデックス・サマリーを縮小して、この制限を満たします。これはベスト・エフォート型のプロセスです。極限状況では、データベースがこのメモリー量よりも多くの容量を使用する場合があります。
- index_summary_resize_interval_in_minutes
- デフォルト:60。インデックス・サマリーのサンプリングを行う間隔。サンプリングは、固定サイズのプールからSSTableに直近の読み取り速度に比例してメモリーを再割り当てするために定期的に行われます。無効にするには、-1に設定します。この設定では、既存のインデックス・サマリーが現在のサンプリング・レベルのままになります。
ディスクの設定
- stream_throughput_outbound_megabits_per_sec
- デフォルト:200。注 ノードのすべての送信ストリーミング・ファイル転送のスループットを抑制します。データベースは、ブートストラップまたはリペア時のデータ・ストリーミングで、ほとんどの場合シーケンシャルI/Oを行いますが、これはネットワーク接続を飽和させ、クライアント(RPC)のパフォーマンスを低下させる場合があります。
- inter_dc_stream_throughput_outbound_megabits_per_sec
- デフォルト:200。注 データ・センター間のすべてのストリーミング・ファイル転送と、stream_throughput_outbound_megabits_per_secで構成されているネットワーク・ストリーム・トラフィックを抑制します。
- streaming_keep_alive_period_in_secs
- デフォルト:disabled。注 この間隔でノードが送信するキープアライブ・メッセージを指定します。2回のキープアライブ・サイクルでキープアライブ・メッセージを受信しない場合、ストリーム・セッションは失敗します。
- trickle_fsync
- デフォルト:false。trueに設定すると、fsyncはオペレーティング・システムに対しtrickle_fsync_interval_in_kbに設定された間隔でダーティ・バッファーを強制的にフラッシュするように指示します。このパラメーターを有効にすると、突発的なダーティ・バッファーのフラッシュによって読み取りレイテンシーに影響が及ぶのを回避できます。SSDを使用している場合は推奨されますが、HDDの場合には推奨されません。
- trickle_fsync_interval_in_kb
- デフォルト:10240。fsyncのサイズ(キロバイト)。
高度なプロパティ
上級ユーザー用のプロパティまたは使用頻度の低いプロパティ。
高度な初期化プロパティ
- auto_bootstrap
- デフォルト:true。この設定はデフォルトの構成からは削除されました。この設定により、シードでない新しいノードが適切なデータを自動的に自身に移行します。データのないフレッシュなクラスターを初期化する場合は、auto_bootstrap: falseを追加します。
関連情報: ワークロードの種類別に単一データ・センターを初期化する および「ワークロードの種類別に複数のデータ・センターを初期化する」。
- batch_size_warn_threshold_in_kb
- デフォルト:64。マルチ・パーティション・バッチ・サイズがこの値を上回ると、警告メッセージがログに記録されます。注意: このしきい値を上げると、ノードが不安定になる可能性があります。
- batch_size_fail_threshold_in_kb
- デフォルト:640。バッチのサイズがこの設定値を超えると、バッチは失敗します。デフォルト値は
batch_size_warn_threshold_in_kb
の10倍の値です。 - unlogged_batch_across_partitions_warn_threshold
- デフォルト:10。LOGGEDタイプでないバッチがこの制限値よりも多くのパーティションにまたがっている場合、WARNメッセージがログに記録されます。パーティション数のデフォルト値は10です。
- cdc_enabled
- デフォルト:false。ノードごとにChange Data Capture(CDC)機能を有効または無効にします。この設定により、書き込みパスの割り当て拒否で使用されるロジックが変更されます(標準:拒否しない、cdc:cdc_raw_directoryで容量が制限されている場合にCDCが有効になっているテーブルを含むミューテーションを拒否する)。重要: バージョンが混在しているクラスターではCDCを有効にしないでください。すべてのノードをDataStax Enterprise 5.1にアップグレードしてからクラスターを有効にして再起動してください。
- broadcast_address
- デフォルト:listen_address。注このノードがマルチ・リージョンEC2デプロイのネットワーク外の他のノード、またはリージョン全体の他のノードにブロードキャストするために使用するパブリックIPアドレス。このプロパティをコメントアウトした場合、ノードはlisten_addressと同じIPアドレスまたはホスト名を使用します。ノードは、単一ノードまたは単一データ・センター・インストール、あるいはプライベート通信とパブリック通信の自動切り替えをサポートしているEC2ベースのネットワークでは、個別のbroadcast_addressを必要としません。複数の物理ネットワーク・インターフェイスを持つノードや、すべてのノードがそれぞれのプライベートIPアドレスを使用して他のノードにアクセスできるとは限らないその他のトポロジーのノードには、個別にlisten_addressとbroadcast_addressを設定する必要があります。特殊な構成については、listen_addressの説明を参照してください。
- listen_on_broadcast_address
- デフォルト:false。このノードが複数の物理ネットワーク・インターフェイスを使用している場合、broadcast_addressに一意のIPアドレスを設定し、
listen_on_broadcast_address
をtrueに設定します。これにより、ノードが両方のインターフェイスで通信できるようになります。Amazon EC2のように、パブリック・ネットワークとプライベート・ネットワーク間で自動的にルーティングするネットワーク上にノードがある場合は、このプロパティをfalseに設定します。
構成の詳細については、listen_addressの説明を参照してください。
- initial_token
- デフォルト:1(無効)。個々のノードがリング空間で厳密に1つの連続する範囲を所有する、トークンごとに1つのノードが提供されるアーキテクチャーの場合はこのプロパティを設定します。このプロパティの設定はnum_tokensに優先します。
- num_tokens
- (デフォルト:1、無効)仮想ノード・トークン・アーキテクチャーの場合、このプロパティを設定します。この仮想ノード(vnode)に割り当てるトークン範囲数を決定します。1~128の数字を使用し、
1
を指定するとvnodeが無効になります。トークン番号がデータ・センター内のノード間で変わる場合、vnodeロジックはデータ・センター内の他のノードに比例して範囲の数を割り当てます。一般的に、すべてのノードが同じ能力のハードウェアを持っている場合、各ノードは同じnum_tokens
値になります。- ランダム選択アルゴリズム: 注: DataStaxは、ランダム選択アルゴリズム法を推奨しません。代わりに、割り当てアルゴリズムを使用してください。トークン範囲をランダムに割り当てます。
num_token
値が大きいと、データとワークロードが均一に分散される確率が増加します。以下の表では、トークン範囲をランダムに割り当てる際の推奨設定を説明します。データ・センターのタイプ vnode(トークン)の数 トランザクションのみ 128 DSE Analyticsのみ 128 SearchAnalyticsワークロードでは、DSE Searchで推奨される8個のvnodeを使用します。
DSE Searchのみ 8 allocate_tokens_for_local_replication_factorをデータ・センターのキースペースのレプリケーション係数に設定します。
DSE Graph 128 DSE Graph(DSE Searchと併用する場合) 8 - 割り当てアルゴリズム:目標とするキースペース・レプリケーション係数を使用して、ワークロード・バランスを最適化する割り当てアルゴリズムを使用して、トークン範囲を割り当てます。allocate_tokens_for_local_replication_factorを設定すると有効になります。DataStaxでは、トークン数を8に設定してワークロードをノード間に約10%の差異で分散させることを推奨しています。
注: データ・センター内の他のノードはすべて、単一トークン・アーキテクチャー、ランダム・アルゴリズムのvnodeアーキテクチャー、または割り当てアルゴリズムのvnodeアーキテクチャーのうち、いずれかの同じトークン・アーキテクチャーを使用する必要があります。 - ランダム選択アルゴリズム:
- allocate_tokens_for_local_replication_factor
-
vnodeを既存のクラスターに追加する場合や、新しいデータ・センターでノードを設定する場合、データ・センター内のキースペースの目標とするレプリケーション係数(RF)に設定します。RFの推奨されるアルゴリズムによる割り当てと、このノードの
num_tokens
をトリガーします。割り当てアルゴリズムは、指定されているRFに対して、データ・センター内のノードにレプリケートされる負荷を最適化するようにトークンを選択しようとします。各ノードに割り当てられる負荷は、vnodeの数の比率に近くなります。「仮想ノード(vnode)の構成」を参照し、設定手順については、「既存のクラスターへのvnodeの追加」または「クラスターへのデータ・センターの追加」を参照してください。
注: 割り当てアルゴリズムは、Murmur3PartitionerパーティショナーとRandomPartitionerパーティショナーでのみサポートされています。Murmur3Partitionerは、新しいDSEクラスター用のデフォルトのパーティション分割ストラテジであり、新しいクラスターではほとんどの場合に適しています。 - パーティショナー
- デフォルト:org.apache.cassandra.dht.Murmur3Partitioner。クラスター内のすべてのノードに行を(パーティション・キー別に)配布するクラスを設定します。クラス・パス内にあるものであれば、独自のものも含めて、任意のIPartitionerを使用できます。新しいクラスターについては、デフォルトのパーティショナーを使用してください。後方互換性を維持するため、DataStax Enterpriseには以下のパーティショナーが用意されています。
- RandomPartitioner
- ByteOrderedPartitioner(廃止予定)
- OrderPreservingPartitioner(廃止予定)
関連情報: パーティショナー
- storage_port
- デフォルト:7000。ノード間通信用のポート。
- tracetype_query_ttl
- デフォルト:86400。クエリー・プロセスのログ記録中に使用されるさまざまなトレース・タイプのTTL。
- tracetype_repair_ttl
- デフォルト:604800。リペア・プロセスのログ記録中に使用されるさまざまなトレース・タイプのTTL。
高度な自動バックアップの設定
- auto_snapshot
- デフォルト:true。キースペースのTRUNCATEを行う前やテーブルを削除する前に、データのスナップショットを取得するかどうかを指定します。データ喪失を回避するために、DataStaxではデフォルトの設定を使用することを強く推奨します。auto_snapshotをfalseに設定すると、TRUNCATEまたは削除の際にデータが失われます。
キー・キャッシュと行のグローバル・プロパティ
テーブルの作成時または変更時に、キャッシング・パラメーターの設定により、そのテーブルのキー・キャッシュ(パーティション・キー・キャッシュ)または行キャッシュを有効または無効にすることができます。その他の行とキー・キャッシュの調整と構成のオプションは、グローバル(ノード)レベルで設定されます。データベースはこれらの設定を使用し、全体のワークロードと特定のテーブル使用量に基づいて、ノードの各テーブルに対して自動的にメモリーを分配します。これらのキャッシュを保存する期間もグローバルに構成できます。
関連情報:キャッシュの構成
- key_cache_keys_to_save
- デフォルト:disabled。すべてのキーが保存されます。注 キー・キャッシュから保存するキーの数。
- key_cache_save_period
- デフォルト:14400。(4時間)キャッシュにキーを保存する期間(秒)。キャッシュはsaved_caches_directoryに保存されます。キャッシュを保存するとコールド・スタート速度が大幅に改善され、I/Oに与える影響も比較的小さくなります。
- key_cache_size_in_mb
- デフォルト:空。メモリー内のキー・キャッシュの最大サイズのグローバル・キャッシュ設定(すべてのテーブル)。値を設定しない場合、キャッシュは使用可能なヒープの5%と100MBのいずれか小さい方に設定されます。無効にするには、0に設定します。
関連情報: 「nodetool setcachecapacity」、「キャッシングの有効化と構成」。
- column_index_cache_size_in_kb
- デフォルト:2。データベースがパーティション・キー・キャッシュ内に格納するパーティションのすべてのインデックス・エントリーの合計サイズのしきい値。パーティションのすべてのインデックス・エントリーの合計サイズがこの容量を上回ると、このパーティションのエントリーはパーティション・キー・キャッシュに配置されなくなります。この制限により、大きなパーティションのインデックス・エントリーがパーティション・キー・キャッシュ(key_cache_size_in_mbで制御されます)内のすべての容量を消費するのを防ぎます。
- row_cache_class_name
- デフォルト:disabled。注 使用する行キャッシュ・プロバイダーのクラス名。有効な値:
OHCProvider
(完全オフヒープ)またはSerializingCacheProvider
(一部オフヒープ)。 - row_cache_keys_to_save
- デフォルト:disabled。すべてのキーが保存されます。注 行キャッシュから保存するキーの数。
- row_cache_size_in_mb
- デフォルト:0。無効にするには、0に設定します。メモリー内の行キャッシュの最大サイズ。行キャッシュを使用するとkey_cache_size_in_mbよりも時間を節約できますが、行全体が含まれるため多くの容量を使用します。行キャッシュは、ホット行か、または静的行のみで使用してください。サイズを減らすと、起動時に最もホットなキーが読み込まれないことがあります。
- row_cache_save_period
- デフォルト:0。無効にするには、0に設定します。行をキャッシュに保存する期間(秒)。キャッシュはsaved_caches_directoryに保存されます。この設定は、row_cache_size_in_mbで説明したとおり、用法が限られています。
カウンター・キャッシュのプロパティ
カウンター・キャッシュは、ホットなカウンター・セルのカウンター・ロックの競合を軽減させるのに役立ちます。RF = 1の場合、カウンター・キャッシュのヒットがあると、データベースは全体を書き込む前に読み取りをスキップします。RF > 1の場合も、カウンター・キャッシュのヒットがあるとロック保持期間が短縮されるため、ホットなカウンター・セルの更新に役立ちますが、読み取り全体をスキップすることはできません。ローカルな(クロック、カウント)カウンター・セルのタプルのみがメモリー内に保持され、カウンター全体は保持されないため、比較的負担が少なくて済みます。
- counter_cache_size_in_mb
- デフォルト値:空。注 値を設定しない場合、ヒープの最小値2.5%と50メガバイト(MB)の小さい方が使用されます。お使いのシステムでカウンター削除を実施し、小さいgc_grace_secondsを使用する場合は、カウンター・キャッシュを無効にしてください。無効にするには、0に設定します。
- counter_cache_save_period
- デフォルト:7200。(2時間)データベースがカウンター・キャッシュを保存するまでの期間(キーのみ)。データベースはキャッシュをsaved_caches_directoryに保存します。
- counter_cache_keys_to_save
- デフォルト値:disabled。注 カウンター・キャッシュから保存するキーの数。このプロパティが無効になっている場合、すべてのキーが保存されます。
トゥームストーンの設定
パーティションの内部または各パーティションにわたってスキャンを実行するとき、トゥームストーンをコーディネーターに返せるように、トゥームストーンがメモリー内に維持されている必要があります。コーディネーターがトゥームストーンを使用することで、削除済みの行について他のレプリカが確実に認識できるようになります。大量のトゥームストーンを生成するワークロードは、パフォーマンス問題の原因となり、サーバーのヒープを使い果たしてしまうことがあります。「Cassandraのアンチパターン:キューと、キューに似たデータセット」を参照してください。この影響を理解した上でスキャンするトゥームストーンの数を増やす場合にのみ、これらのしきい値を調整してください。StorageServiceMBeanを使用して、実行中にもこれらのしきい値を調整できます。
関連情報:Cassandraのアンチパターン:キューと、キューに似たデータセット
- tombstone_warn_threshold
- デフォルト:1000。クエリーがこの数字より多くのトゥームストーンをスキャンした場合に警告が生成されます。
- tombstone_failure_threshold
- デフォルト:100000。クエリーがこの数字より多くのトゥームストーンをスキャンした場合、クエリーが中断されます。
ネットワーク・タイムアウトの設定
- aggregated_request_timeout_in_ms
- コーディネーターが集計された読み取り操作の完了を待つ時間(ミリ秒)。たとえば、
SELECT COUNT(*), MIN(x)
です。デフォルト:120000。 - cas_contention_timeout_in_ms
- デフォルト:1000。コーディネーターが、共通の行に対する他の操作と競合するCAS(compare-and-set)操作をリトライし続ける時間(ミリ秒)。この時間内にコーディネーターが操作を完了できない場合、操作は中断されます。
- counter_write_request_timeout_in_ms
- デフォルト:5000。タイムアウトする前に、コーディネーターがカウンターの書き込み操作の完了を待つ時間(ミリ秒)。
- range_request_timeout_in_ms
- デフォルト:10000。タイムアウトする前に、コーディネーターがシーケンシャル・スキャンまたはインデックス・スキャンの完了を待つ時間(ミリ秒)。
- read_request_timeout_in_ms
- デフォルト:5000。タイムアウトする前に、コーディネーターが読み取り操作の完了を待つ時間(ミリ秒)。
- request_timeout_in_ms
- デフォルト:10000。その他のさまざまな操作のデフォルトのタイムアウト値。
関連情報:ヒンテッド・ハンドオフ:書き込みパス中のリペア。
- slow_query_log_timeout_in_ms
- デフォルト:500。ノードがスロー・クエリーのログへの記録を開始するまでの時間。クエリーがこの値を上回ると、スロー・クエリーを示す集計されたログ・メッセージが生成されます。無効にするには、0に設定します。
- truncate_request_timeout_in_ms
- デフォルト:60000。タイムアウトする前に、コーディネーターがTRUNCATE(テーブルから全データを削除)操作の完了を待つ時間(ミリ秒)。デフォルト値を大きくすると、データを削除する前にスナップショットを取得することができます。auto_snapshotが無効の場合(非推奨)、この時間を短縮できます。
- write_request_timeout_in_ms
- デフォルト:2000。タイムアウトする前に、コーディネーターが書き込み操作の完了を待つ時間(ミリ秒)。
関連情報:ヒンテッド・ハンドオフ:書き込みパス中のリペア。
ノード間の設定
- cross_node_timeout
- デフォルト:false。(要求のタイムアウトを正確に測定するための)ノード間での操作タイムアウト情報の交換を有効または無効にします。このプロパティが無効になっている場合、レプリカはコーディネーターによって要求がレプリカに即座に転送されたと見なします。このため、過負荷の状況では、すでにタイムアウトしている要求を処理する余分な時間が必要になります。注意: このプロパティを有効にする前に、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
関連情報: TCP設定
- internode_recv_buff_size_in_bytes
- デフォルト:空。注 ノード間呼び出し用の受信ソケット・バッファー・サイズ(バイト)。
- internode_compression
- デフォルト:dc。ノード間のトラフィックを圧縮するかどうかを制御します。有効な値:
- all
すべてのトラフィックを圧縮します。
- dc
データ・センター間のトラフィックのみ圧縮します。
- none
圧縮しません。
- all
- inter_dc_tcp_nodelay
- デフォルト:false。データ・センター間の通信用に、このプロパティを有効にするか、tcp_nodelayを無効にします。このプロパティが無効になっている場合、ネットワークはサイズが大きいネットワーク・パケットを少数、送信します。これはTCPプロトコルのオーバーヘッドを低減します。ただし、
inter_dc_tcp_nodelay
を無効にすると、データ・センターを横断する応答がブロックされ、レイテンシーが増加する場合があります。
ネイティブ転送(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と似ていますが、このプロパティは次の点が異なります。
- native_transport_max_threadsのデフォルトは128ですが、rpc_max_threadsのデフォルトはunlimitedです。
- 対応するnative_transport_min_threadsがありません。
- ネイティブ・トランスポート・スレッドがアイドル状態になると、30秒後に停止します。
- native_transport_max_frame_size_in_mb
- デフォルト:256。許可されるフレーム・サイズの最大値。これよりも大きいフレーム(要求)は無効として拒否されます。
- native_transport_max_concurrent_connections
- デフォルト:-1。同時クライアント接続の最大数。デフォルト値の-1は、無制限を意味します。
- native_transport_max_concurrent_connections_per_ip
- デフォルト:-1。ソースIPアドレスごとの同時クライアント接続の最大数。デフォルト値の-1は、無制限を意味します。
RPC(リモート・プロシージャ・コール)の設定
クライアント接続の構成と調整のための設定です。
- broadcast_rpc_address
- デフォルト:空。注 ドライバーやその他のノードにブロードキャストするRPCアドレス。0.0.0.0に設定することはできません。空白にすると、rpc_addressまたはrpc_interfaceが使用されます。rpc_addressまたはrpc_interfaceが0.0.0.0に設定されている場合、このプロパティを設定する必要があります。
- rpc_port
- デフォルト:9160。クライアント接続用のThriftポート。
- start_rpc
- デフォルト:true。Thrift RPCサーバーを有効または無効にします。
- rpc_keepalive
- デフォルト:true。クライアント接続に対するキープアライブを有効または無効にします(RPCまたはネイティブ)。
- rpc_max_threads
- デフォルト:unlimited。注 選択したRPCサーバー(rpc_server_type)にかかわらず、rpc_max_threadsにより、RPCスレッド・プール内の最大同時要求数が決定します。パラメーターsyncを使用している場合(「rpc_server_type」を参照)、接続可能なクライアントの数もこのプロパティで決定します。クライアント接続数が多いと、スレッド・スタックにメモリーを過剰に使用する原因になります。クライアント側で接続をプールすることを強く推奨します。rpc_max_threadsを設定しておくと、挙動が不適切なクライアントに対する安全対策になります。スレッド数が最大数に達すると、クライアントが接続解除するまで追加の接続はブロックされます。
- rpc_min_threads
- デフォルト:unlimited。注 リモート・プロシージャー・コールに対する最小スレッド・プール・サイズ。
- rpc_recv_buff_size_in_bytes
- デフォルト:空。注 リモート・プロシージャー・コールに対する受信ソケット・バッファー・サイズ。
- rpc_send_buff_size_in_bytes
- デフォルト:空。注 リモート・プロシージャー・コールに対する送信ソケット・バッファー・サイズ(バイト)。
- rpc_server_type
- デフォルト:sync。RPCサーバー向けに3つの選択肢があります。
sync
とhsha
のパフォーマンスはほぼ同じですが、メモリー使用量はhsha
の方が小さくなります。- sync:(デフォルト:Thrift接続あたり1つのスレッド。)
クライアント数が非常に大きい場合、メモリーが制限要因になります。64ビット JVMの場合、スレッドあたりの最小スタック・サイズは180KBで、仮想メモリーの使用量に対応しています。物理メモリーは、スタック・スペースの使用量によっては制限される場合があります。
- hsha: 半分同期、半分非同期(half synchronous, half asynchronous)です。すべてのThriftクライアントは、クライアント数によって変化しない少数のスレッドを使用して非同期で処理されます。このメカニズムは、多くのクライアントに対応してスケールします。RPC要求は同期的です(アクティブな要求あたり1つのスレッド)。注: このオプションを選択した場合、rpc_max_threadsのデフォルト値(unlimited)を変更する必要があります。
- 独自のRPCサーバー
サーバー・インスタンスを作成できる、o.a.c.t.TServerFactoryの完全修飾されたクラス名を指定する必要があります。
- sync:(デフォルト:Thrift接続あたり1つのスレッド。)
高度な障害検知の設定
パフォーマンスが低下しているコンポーネントや故障しているコンポーネントに対処するための設定です。
- gc_warn_threshold_in_ms
- デフォルト:1000。GCがこの間隔よりも長く一時停止すると、WARNレベルでログに記録されます。(デフォルトでは、GCが200 msよりも長く一時停止するとINFOレベルでログに記録されます。)
追加情報:ロギングの構成。
- otc_coalescing_strategy
- デフォルト:DISABLED。サポートされているストラテジは、FIXED、MOVINGAVERAGE、TIMEHORIZON、DISABLEDです。VMに適していますが、他の環境ではパフォーマンスはそれほど高くありません。OutboundTcpConnection(otc)ストラテジには以下の特長があります。
- メッセージ・スループットを高める(2倍以上)。
- ソケットから読み取る際に1回の往復で複数のメッセージを処理する。
- すべてのタスク送信作業を同時に実行する。
- コンテキストの切り換えを減らす。
- ネットワーク・メッセージ処理のキャッシュの適合性を高める。
- otc_coalescing_window_us
- デフォルト:disabled。注 結合を待機する時間(マイクロ秒)。固定ストラテジでは、最初のメッセージを受信してから結合されるメッセージと共に送信されるまでの時間です。移動平均では、結合されるメッセージが平均して着信していなければならない最大待機時間と期間です。
- otc_coalescing_enough_coalesced_messages
- デフォルト:disabled。注 メッセージ数のしきい値。この値を上回る場合、メッセージを結合しないでください。この値は2より大きく、128未満である必要があります。
- back_pressure_enabled
- デフォルト:false。コーディネーターが、レプリカに送信される各ミューテーションに、指定されたバック・プレッシャー・ストラテジを適用します。
- back_pressure_strategy
-
back_pressure_strategy: - class_name: org.apache.cassandra.net.RateBasedBackPressure parameters: - high_ratio: 0.90 factor: 5 flow: FAST
デフォルト:RateBasedBackPressure。新しいストラテジを追加するには、org.apache.cassandra.net.BackpressureStrategyを実装し、
Map<String, Object>
を受け入れるパブリック・コンストラクターを指定します。- RateBasedBackPressure
受信したミューテーション応答と送信したミューテーション要求の比率。
- high_ratio
送信したミューテーションがこの値を下回ると、受信速度に応じて速度制限され、速度制限は係数に従い減少します(以下で説明します)。この値を上回ると、速度制限は係数に従い増加します。
- factor
1~10の数字。速度制限を増減します。
- flowデフォルト:FAST。速度制限を適用するフロー速度。
- FAST - 最も高速のレプリカ速度に速度制限されます。
- SLOW - 最も低速のレプリカ速度に速度制限されます。
- RateBasedBackPressure
- max_value_size_in_mb
- デフォルト:256。注 SSTableの値の最大サイズ。しきい値を上回ると、SSTable破損を検知して、SSTableに破損のマークを付けます。
- dynamic_snitch_badness_threshold
- デフォルト:0.1。低パフォーマンスのノードからクライアント要求を別のノードに動的にルーティングするためのパフォーマンスしきい値。具体的には、低パフォーマンスのノードの状態がどの程度悪化すると動的スニッチが他のレプリカを優先するかを制御します。値を0.2にすると、そのノードの応答時間が最高パフォーマンスのノードよりも20%低下するまで、データベースが静的スニッチ値を継続して使用します。このしきい値に達するまで、受信した要求は最も近いレプリカ(スニッチで決定される)に静的にルーティングされます。read_repair_chanceテーブル・プロパティの値が0~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
などです。ヒントは、利用不能だったノードを対象に書き込みをリプレイする必要があることを示します。コーディネーター・ノードのヒント・ファイルにヒントが書き込まれます。関連情報: ヒンテッド・ハンドオフ:書き込みパス中のリペア
- hinted_handoff_disabled_datacenters
- デフォルト:空。ヒンテッド・ハンドオフを実行しないデータ・センターのブラックリスト。特定のデータ・センターでヒンテッド・ハンドオフを無効にするには、その名前をリストに追加します。例を次に示します。
hinted_handoff_disabled_datacenters: - DC1 - DC2
などです。関連情報: ヒンテッド・ハンドオフ:書き込みパス中のリペア
- hinted_handoff_throttle_in_kb
- デフォルト:1024。配信スレッドあたりの最大トラフィック量(キロバイト/秒)。この速度は、クラスター内のノードの数に比例して低下します。たとえば、クラスター内に2つのノードがある場合、各配信スレッドで最大速度が使用されます。3つある場合は、2つのノードが同時にヒントを配信することが予想されるため、各ノードは最大値の半分に抑制します。注: この制限を適用すると、internode_compressionまたはhints_compressionが有効になっている場合でも、圧縮されていないヒント・サイズに基づいてヒント送信率が計算されます。
- max_hint_window_in_ms
- デフォルト:10800000。(3時間)応答しないノードに対してヒントが生成される最大時間。この時間の経過後は、そのノードが復帰して応答するまで、新しいヒントは生成されません。復帰後にノードが再度ダウンすると、新しい間隔が開始されます。この設定により、ノードがオンラインに復帰したときに、突然リソースを要求し、クラスター内の残りのノードが大量のヒンテッド書き込みをリプレイしようとするのを防止できます。
関連情報: 障害検知と復旧について
- max_hints_delivery_threads
- デフォルト:2。ヒントの配信に使用するスレッド数。マルチ・データ・センター・デプロイの場合、データ・センター間の受け渡しは一般的に低速のため、この数を増やすことを検討してください。
- max_hints_file_size_in_mb
- デフォルト:128。1つのヒント・ファイルの最大サイズ(メガバイト)。
- hints_compression
- デフォルト:LZ4Compressor。ヒント・ファイルの圧縮形式。サポートされている圧縮形式は、LZ、Snappy、Deflateです。圧縮形式を指定しない場合、ヒント・ファイルは圧縮されません。
- batchlog_replay_throttle_in_kb
- デフォルト:1024。ヒントのリプレイ用の合計最大スロットル(KB/秒)。スロットリングは、クラスター内のノード数に比例して低くなります。
要求スケジューラーのプロパティ
受信するクライアント要求の、定義されたポリシーに基づく処理を設定します。ノードの負荷が過大で要求を取りこぼしている場合には、DataStaxでは、これらのプロパティを使用して要求の優先順位付けをするのではなく、ノードを追加することを推奨します。
- request_scheduler
- デフォルト:org.apache.cassandra.scheduler.NoScheduler。受信したクライアント要求を、定義されているポリシーに基づいて処理するスケジューラー。このスケジューラーは、複数のキースペースを含む単一ノード・クラスターで、クライアント要求をスロットルするのに役立ちます。このパラメーターは厳密にクライアントからの要求に対するもので、ノード間通信には影響しません。有効な値:
- org.apache.cassandra.scheduler.NoScheduler
スケジュールは行われません。
- org.apache.cassandra.scheduler.RoundRobinScheduler
request_scheduler_idプロパティごとに個別のキューを持つノードに対するクライアント要求のラウンド・ロビンが使用されます。
- RequestSchedulerインターフェイスを実装するJavaクラスが使用されます。
- org.apache.cassandra.scheduler.NoScheduler
- request_scheduler_id
- デフォルト:keyspace。注 スケジューラーのアクティビティのスコープ。有効な値は、現時点ではkeyspaceのみです。
- request_scheduler_options
- デフォルト:NoScheduler。request_schedulerの構成オプションを定義するプロパティのリスト。
Thriftインターフェイスのプロパティ
古いクライアント向けの旧式のAPIです。データベースに対するAPIとしては、CQLの方がシンプルで優れています。
- thrift_framed_transport_size_in_mb
- デフォルト:15。Thrift用のフレーム・サイズ(最大フィールド長)。フレームはアプリケーションが挿入する行の全体または行の一部です。
セキュリティのプロパティ
DSE Advanced Security(DSE拡張セキュリティ)は、意図的な攻撃やユーザー・エラーによる潜在的な危険に対してDataStax Enterprise(DSE)データベースを強化します。構成プロパティには、認証と権限管理、パーミッション、ロール、転送中のデータと保存されたデータの暗号化、データ監査が含まれます。DSE Unified Authentication(DSE統合認証)には、認証、権限管理、ロール管理の各機能が用意されています。DSE Unified Authentication(DSE統合認証)を有効にするには、dse.yamlで追加の構成が必要です。「DSE Unified Authentication(DSE統合認証)の構成」を参照してください。
- authenticator
- デフォルト:com.datastax.bdp.cassandra.auth.DseAuthenticator。認証のバックエンド。サポートされているオーセンティケーターは、Kerberos、LDAP、内部認証など、複数の認証スキームを持つ外部認証用のDseAuthenticatorのみです。DseAuthenticator以外のオーセンティケーターは、廃止予定であり、サポートされていません。他のオーセンティケーターを使用する場合、一部のセキュリティ機能が正常に動作しない場合があります。
- internode_authenticator
- デフォルト:enabled。注 ノード間の認証バックエンド。org.apache.cassandra.auth.AllowAllInternodeAuthenticatorを実装して、ピア・ノードからの接続を許可または禁止します。
- authorizer
- デフォルト:com.datastax.bdp.cassandra.auth.DseAuthorizer。権限管理のバックエンド。DseAuthorizer以外のオーソライザーはサポートされていません。DseAuthorizerは、DSE固有のリソースに関する、強化されたパーミッション管理機能をサポートしています。DseAuthorizer以外のオーソライザーは廃止予定であり、サポートされていません。他のオーソライザーを使用している場合、一部のセキュリティ機能が正常に動作しない場合があります。
- role_manager
- デフォルト:com.datastax.bdp.cassandra.auth.DseRoleManager。DSE Role Manager(DSEロール・マネージャー)は、CassandraRoleManagerによってサポートされているLDAPロールと内部ロールをサポートしています。ロール・オプションは、dse_security keyspaceに格納されます。DSE Role Manager(DSEロール・マネージャー)を使用する場合は、dse_securityキースペースのレプリケーション係数を大きくしてください。DseAuthorizer以外のロール・マネージャーは廃止予定であり、サポートされていません。他のロール・マネージャーを使用している場合、一部のセキュリティ機能が正常に動作しない場合があります。
- roles_validity_in_ms
- デフォルト:2000。ロール・キャッシュの有効期間。無効にするには、0に設定します。ユーザーに割り当てられているロールのリストをキャッシュする時間を指定します。ユーザーは、直接割り当てられたり、継承(別のロールに付与されたロール)したりすることで、複数のロールを持つ場合があります。ロール階層の複雑さ、ロール変更に対する許容範囲、環境内のノード数、クラスターのアクティビティー・レベルなどに基づいて、この設定を調整します。
- roles_update_interval_in_ms
- デフォルト:2000。ロール・キャッシュの更新間隔を有効にします。デフォルトは
roles_validity_in_ms
と同じ値になります。この間隔を過ぎると、キャッシュ・エントリーを更新できるようになります。次回アクセス時に、非同期の再読み込みがスケジュールされ、再読み込みが完了するまで古い値が返されます。roles_validity_in_ms
がゼロではない場合、こちらもゼロ以外の値でなければなりません。 - credentials_validity_in_ms
- デフォルト:2000。キャッシュ内の認証情報が有効と見なされる期間(ミリ秒)。このキャッシュは、提供されているIAuthenticatorのPasswordAuthenticator実装と厳密に対応しています。別のIAuthenticator実装が構成されている場合、このキャッシュは使用されず、これらの設定は影響しません。
- credentials_update_interval_in_ms
- デフォルト:credentials_validity_in_msと同じ値。この間隔を過ぎると、キャッシュ・エントリーを更新できるようになります。キャッシュへの次のアクセス時に、キャッシュの非同期再読み込みがスケジュールされます。このキャッシュの再読み込みが完了するまで、キャッシュは古い値を返します。
credentials_validity_in_msがゼロ以外の場合、このプロパティもゼロ以外でなければなりません。
- permissions_validity_in_ms
- デフォルト:2000。パーミッションのフェッチはリソースを多く消費する場合があります。パーミッシヨン・クエリーがパフォーマンスに及ぼす影響を管理するために、キャッシュ内のパーミッションが有効と見なされる期間(ミリ秒)を定義します。セキュリティの許容範囲に合わせてキャッシュの有効期間を設定します。このキャッシュは、標準認証と行レベル・アクセス制御(RLAC)キャッシュに使用されます。キャッシュが完全に有効なのは短い期間です。
- permissions_update_interval_in_ms
- デフォルト:permissions_validity_in_msと同じ値。標準認証キャッシュと行レベル・アクセス制御(RLAC)キャッシュの更新間隔を設定します。この間隔を過ぎると、キャッシュ・エントリーを更新できるようになります。次回アクセス時に、非同期の再読み込みがスケジュールされ、再読み込みが完了するまで古い値が返されます。permissions_validity_in_ms がゼロ以外の場合、roles_update_interval_in_msもゼロ以外でなければなりません。
- permissions_cache_max_entries
- デフォルト:1000。標準認証キャッシュと行レベル・アクセス制御(RLAC)キャッシュで保持されるエントリーの最大数。デフォルト値1000の場合、RLACパーミッション・キャッシュは最大で1000のエントリーを保持でき、標準認証キャッシュも最大で1000のエントリーを保持できます。このオプションは両方のキャッシュに適用されます。行レベルのパーミッションの設定も行う場合にパーミッション・キャッシュのサイズを指定するには、以下の式を使用します。
このオプションがcassandra.yamlに含まれていない場合は手動で入力します。「DSE Unified Authentication(DSE統合認証)の有効化」を参照してください。numRlacUsers * numRlacTables + 100
- server_encryption_options
- ノード間の暗号化を構成します。有効にする場合、キーを生成して、適切なキーの場所とトラストストアの場所およびパスワードを指定する必要があります。カスタムの暗号化オプションはサポートされていません。使用可能なオプションは以下のとおりです。
- internode_encryption:デフォルト:なし。認証、キー交換、およびデータ転送の暗号化にTLS_RSA_WITH_AES_128_CBC_SHA暗号化スイートを使用するノード間通信の暗号化を有効または無効にします。(連邦情報処理標準)FIPS 140準拠モードで実行している場合は、TLS_DHE_RSA_WITH_AES_128_CBC_SHAなど、DHE/ECDHE暗号を使用してください。使用可能なノード間オプションは以下のとおりです。
- all
すべてのノード間通信を暗号化します。
- none
暗号化は行いません。
- dc
データ・センター間のトラフィックを暗号化します(サーバーのみ)。
- rack
ラック間のトラフィックを暗号化します(サーバーのみ)。
- all
- 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_SHA
- TLS_RSA_WITH_AES_256_CBC_SHA
- TLS_DHE_RSA_WITH_AES_128_CBC_SHA
- TLS_DHE_RSA_WITH_AES_256_CBC_SHA
- TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
- TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
- require_client_auth:デフォルト:false。
証明書の認証を有効または無効にします
- require_endpoint_verification:デフォルト:false。
ホスト名の検証を有効または無効にします。
- internode_encryption:デフォルト:なし。認証、キー交換、およびデータ転送の暗号化にTLS_RSA_WITH_AES_128_CBC_SHA暗号化スイートを使用するノード間通信の暗号化を有効または無効にします。(連邦情報処理標準)FIPS 140準拠モードで実行している場合は、TLS_DHE_RSA_WITH_AES_128_CBC_SHAなど、DHE/ECDHE暗号を使用してください。使用可能なノード間オプションは以下のとおりです。
- client_encryption_options
- クライアントとノード間の暗号化を有効または無効にします。キーを生成して、適切なキーの場所とトラストストアの場所およびパスワードを指定する必要があります。現時点で、DataStax Enterpriseに使用できるカスタムの暗号化オプションはありません。使用可能なオプションは以下のとおりです。
- enabled:デフォルト:false。
クライアント暗号化を有効にするには、trueに設定します。
- optional:デフォルト:false。
クライアント暗号化が有効な場合は、セキュアでない接続を使用できます。
- 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。
証明書の認証を有効または無効にします
- truststore:デフォルト:conf/.truststore。
require_client_authがtrueの場合、このプロパティを設定します。
- truststore_password:デフォルト:cassandra
require_client_authがtrueの場合に設定します。
詳細設定は以下のとおりです。
- protocol:デフォルト:TLS。
- algorithm:デフォルト:SunX509。
- store_type:デフォルト:JKS。
- cipher_suites:サポートされている暗号:
- TLS_RSA_WITH_AES_128_CBC_SHA
- TLS_RSA_WITH_AES_256_CBC_SHA
- TLS_DHE_RSA_WITH_AES_128_CBC_SHA
- TLS_DHE_RSA_WITH_AES_256_CBC_SHA
- TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
- TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
- enabled:デフォルト:false。
- transparent_data_encryption_options
- 後方互換性を維持するためにのみ、DataStax Enterpriseはこのオプションをサポートしています。DSEを使用する場合、dse.yamlでデータ暗号化オプションを構成してください。「透過的なデータ暗号化」を参照してください。
TDEプロパティは以下のとおりです。
cassandra.yamlファイルの場所は、インストールのタイプによって異なります。パッケージ・インストールInstaller-Servicesインストール
/etc/dse/cassandra/cassandra.yaml tarボール・インストールInstaller-No Servicesインストール
installation_location/resources/cassandra/conf/cassandra.yaml - enabled:(デフォルト:false)
- chunk_length_kb:(デフォルト:64)
- cipher:オプションは以下のとおりです。
- AES
- CBC
- PKCS5Padding
- key_alias:テスト:1
- iv_length:16注: iv_lengthは、デフォルトのcassandra.yamlファイルでコメントアウトされています。cipherにAESを設定した場合のみ、コメント解除します。値は16(バイト)でなければなりません。
- key_provider:
- class_name:org.apache.cassandra.security.JKSKeyProvider
parameters:
- keystore:conf/.keystore
- keystore_password:cassandra」のパスワード
- store_type:JCEKS
- key_password: cassandra」のパスワード
- class_name:org.apache.cassandra.security.JKSKeyProvider
- ssl_storage_port
- デフォルト:7001。暗号化された通信用のSSLポート。encryption_optionsで有効にしていない限り使用されません。
- native_transport_port_ssl
- デフォルト:9142。クライアント暗号化が有効で、native_transport_port_sslが無効の場合、native_transport_port(デフォルト:9042)ですべてのトラフィックが暗号化されます。暗号化されていないトラフィックと暗号化されているトラフィックの両方を使用するには、native_transport_port_sslを有効にします。
連続ページング
- continuous_paging
- クライアントが要求した場合、ページをクライアイントに連続してプッシュします。以下のパラメーターで制御します。
- メモリーの最大使用量。デフォルト:60 x 4 x 8 = 1920 MB(max_concurrent_sessions x max_session_pages x max_page_size_mb)。
- スレッドの最大数。
- ローカル・クエリーの最大期間。
ガイダンス:- クライアントがソケットから読み取っていない場合、プロデューサー・スレッドはmax_session_pagesをプリペアした後、最大でmax_client_wait_time_msまでブロックされます。
- memtableとSSTableが連続ページング・クエリーで使用されるため、memtableのフラッシュとコンパクションを行うことができずSSTableを削除できない最大期間を定義できます。
最大期間 = max_client_wait_time_ms + max_local_query_time_ms
- テーブルの書き込みワークロードが高く、連続ページング要求がある場合は、max_local_query_time_msとmax_client_wait_time_msの調整を検討してください。
- スレッドがセッションより少ない場合(max_threads < max_concurrent_sessions)、他のセッションがスワップアウトされるまでセッションを実行できません。
- 分散クエリー(CL > ONEまたは非ローカル・データ)は各ページの後にスワップアウトされますが、CL = ONEのローカル・クエリーはmax_local_query_time_msの経過後にスワップアウトされます。
- クライアントのページの読み取り速度が遅い場合は、max_client_wait_time_msを調整して遅延を大きくしてください。
パラメーター:
- max_concurrent_sessions
デフォルト:60。同時セッションの最大数。この値を超えてセッションが追加されると拒否され、追加できないことを示すエラーが発生します。
- max_session_pages
デフォルト:4。各セッションでバッファー可能なページの最大数。
- max_page_size_mb
デフォルト:8。ページの最大サイズ(MB)。個々のCQL行がこの値より大きい場合、ページはこの値より大きくなる可能性があります。
- max_client_wait_time_ms
デフォルト:20000。クライアントがソケットから読み取るのをサーバーが待っている最大待機時間。この時間を超えると、セッションは中止され、クライアントはエラーを受信します。max_client_wait_time_msに設定した値が小さすぎると、クライアント側でエラーが発生する場合があります。
- max_local_query_time_ms
デフォルト:5000。ローカルの連続クエリーを実行する最大時間。この値を超えると、セッションはスワップアウトされ、再スケジュールされます。スワップと再スケジュールにより、リソースが解放されてmemtableがフラッシュされるのを防ぎ、max_threads < max_concurrent_sessionsの場合の妥当性が確保されます。
- max_threads
デフォルト:24。連続ページング・セッション専用のスレッド数。
パッケージ・インストールInstaller-Servicesインストール |
/etc/dse/cassandra/cassandra-env.sh |
tarボール・インストールInstaller-No Servicesインストール |
installation_location/resources/cassandra/conf/cassandra-env.sh |
パッケージ・インストールInstaller-Servicesインストール |
/etc/dse/dse.yaml |
tarボール・インストールInstaller-No Servicesインストール |
installation_location/resources/dse/conf/dse.yaml |