DSE Advanced Replicationの使用
DSE Advanced Replicationの開始、停止、構成などの操作。
DSE Advanced Replicationの開始、停止、構成などの操作。
- DSE Advanced Replicationを開始する
- DSE Advanced Replicationを停止する
- グローバル設定を構成する
- チャネル設定を構成する
- ドライバーのパスワードを暗号化する
- データ挿入方法
DSE Advanced Replicationを開始する
DSE Advanced Replicationを開始して使用する前に、エッジ・クラスターおよびハブ・クラスターに、ユーザーのキースペースおよびテーブルを作成する必要があります。
- dse.yamlファイルで、レプリケーションを有効にします。ファイルの最後で、
advanced_replication_options
のすべてのエントリーのコメントを解除し、enabled: true
を設定します。# Advanced Replication configuration settings advanced_replication_options: enabled:true
- ローリング再起動を実行します。他のノードがオンラインで稼働し続けている状態で、エッジ・クラスターのノードを1つずつ再起動します。
DSE Advanced Replicationを無効にする
- レプリケーションを無効にするために、dse.yamlファイルを編集します。
advanced_replication_options
セクションで、enabled: false
を設定します。# Advanced Replication configuration settings advanced_replication_options: enabled:false
- ローリング再起動を実行します。他のノードがオンラインで稼働し続けている状態で、エッジ・クラスターのノードを1つずつ再起動します。
- DSE Advanced Replication用に使用されたデータを消去するために、次のキースペースを削除します。
cqlsh> drop table dse_system.advrep_conf; cqlsh> drop table dse_system.advrep_table_conf; cqlsh> drop keyspace advrep;
グローバル設定を構成する
グローバル設定は、エッジ・クラスター全体に適用されます。これらのグローバル設定は、自動作成されるCQLテーブルdse_system.advrep_confに保存されます。
cqlsh>INSERT INTO dse_system.advrep_conf (conf_key, conf_val) VALUES ('edge_replication', 'true');
dse advrep edge conf ...認証情報を複数の方法で提供できます。「認証情報」を参照してください。
下の表は、構成キー、そのデフォルト値、および変更を認識するためにエッジ・ノードの再起動が必要かどうかを示します。グローバル設定を変更するには構成キーを使用します。 グローバル設定は、エッジ・クラスター全体に適用されます。これらのグローバル設定は、自動作成されるCQLテーブルdse_system.advrep_confに保存されます。
構成キー | デフォルト値 | 説明 | 再起動の必要 |
---|---|---|---|
hub-ip-addresses | none | 必須。Cassandraドライバーを使用してハブ・クラスターに接続するために使用する、IPアドレスのコンマ区切りリスト。 | なし |
hub-port | none | ハブ・クラスターのノードを接続する、デフォルト以外のポートを指定します。 デフォルト以外のポートを指定するには、次のようにします。
dse advrep edge conf --hub-port 9999 Set replication config hub_port from None to 9999デフォルト以外のポートを削除するには、次のようにします。 dse advrep edge remove-conf --hub-port |
あり |
debug-output | False | レプリケーション・ログに関する内部デバッグ出力を印刷します。 | なし |
cql-refresh-row-limit | |||
driver-allow-remote-dcs-for-local-cl | False | 複数のデータ・センターを持つハブ・クラスターについて自動フェイルオーバーを有効にする場合、trueに設定します。driver-consistency-levelパラメーターの値は、LOCAL_ONEまたはLOCAL_QUORUMでなければなりません。 | あり |
driver-compression | lz4 | エッジからハブへのデータの送信のためにドライバーが使用する圧縮アルゴリズム。サポートされる値は、lz4およびsnappyです。 | あり |
driver-connect-timeout | 15000 | サーバーに接続するためにドライバーが待機する時間(ミリ秒)。 | なし |
driver-connections | 32 | Cassandraドライバーが作成する接続の数。 | あり |
driver-connections-max | 256 | Cassandraドライバーが作成する接続の最大数。 | あり |
driver-consistency-level | ONE | ハブへのデータのレプリケーションのための文を実行するときに、ドライバーが使用する整合性レベル。有効なCassandra整合性レベル、ANY、ONE、TWO、THREE、QUORUM、ALL、LOCAL_QUORUM、EACH_QUORUM、SERIAL、LOCAL_SERIAL、またはLOCAL_ONEを指定します。 | なし |
driver-local-dc | なし | 複数のデータ・センターを持つハブ・クラスターの場合、ローカルと見なすデータ・センターの名前を明示的に定義できます。通常は、エッジ・クラスターに最も近いデータ・センターです。この値は、複数のデータ・センターを持つクラスターにのみ使用されます。 | あり |
driver-pwd | none | 接続するために、ユーザーおよびパスワードがハブで必要な場合の、ドライバーのパスワード。 注: デフォルトでは、ドライバーのユーザー名およびパスワードはプレーン・テキストです。DataStaxでは、CQLテーブルに追加する前にドライバーのパスワードを暗号化することを推奨します。
|
あり |
driver-read-timeout | 15000 | サーバーからの応答を読み取るためにドライバーが待機する時間(ミリ秒)。 | なし |
driver-used-hosts-per-remote-dc | 0 | 複数のデータ・センターを持つハブ・クラスターについての自動フェイルオーバーを使用するには、データ・センター認識ラウンド・ロビン・ポリシー(DCAwareRoundRobinPolicy)が使用可能と見なす、リモート・データ・センターごとのホストの数を定義する必要があります。 | あり |
driver-user | none | 接続するために、ユーザーおよびパスワードがハブで必要な場合の、ドライバーのユーザー名。 | あり |
edge-id | なし | エッジ・クラスターおよびそのクラスターからのすべての挿入を識別します。edge-idの自動データ追加が発生するには、ハブのプライマリ・キーにもedge-idがあることが必要です。 | なし |
edge-id-col-name | edge-id | 更新の一環としてedge idを挿入するために、リモート・テーブルで使用するカラム。更新されているテーブルにこのカラムが存在しない場合、edge idの値は無視されます。 | なし |
edge-replication | False | trueである場合は、レプリケーションが開始します。falseでありレプリケーションが実行中である場合は、レプリケーションが停止します。レプリケーション・ログはそのまま残ります。 | なし |
invalid-message-log | SYSTEM_LOG | 無効なメッセージが破棄された場合に適用するロギング・ストラテジを以下のいずれかから選択します。 SYSTEM_LOG:CQLクエリーおよびエラー・メッセージを、ハブのシステム・ログに記録します。 TABLE_LOG:CQLクエリーおよびエラー・メッセージを、ハブのdse_advrep.advrep_invalid_messages_log Cassandraテーブルに保存します。 NONE:ロギングを実行しません。 「無効なメッセージの管理」を参照してください。 |
なし |
invalid-message-max-retries | 15 | 無効なメッセージを破棄してレプリケーション・ログから削除するまでに、リトライする最大回数。 | なし |
replication-log-audit-log-enabled | false | 監査ログを保存するかどうかを指定します。 | あり |
replication-log-audit-log-file | /tmp/advrep_rl_audit.log | 監査ログ・ファイルのファイル名プレフィックス・テンプレートを指定します。gzipを使用して圧縮した場合は、ファイル名に.gzが追加されます。 | あり |
replication-log-audit-log-file-gzipped | true | gzip圧縮を使用して監査ログ出力ファイルを圧縮する場合に指定します。 | あり |
replication-log-audit-log-file-rotate-time-max-lifespan-mins | 0 |
監査ログ・ファイルの最大有効期間を指定します。周期的に、ログ・ファイルがローテートされたとき、次の場合に監査ログ・ファイルがパージされます。
|
あり |
replication-log-audit-log-file-rotate-time-mins | 60 | 監査ログ・ファイルをローテートする時間間隔を指定します。ローテーションでは、ローテートされたファイルに、[0]から始まって増加するログ・カウンター.[logcounter]が追加されます。ローテーションを無効にするには、0に設定します。 | あり |
replication-log-buckets | 512:128:DAYS:1 | メッセージが書き込まれるバケットの数量および可用性を定義します。 num_random_buckets:num_time_buckets:time_unit:num_time_unit num_random_bucketsおよびnum_time_bucketsの値は、2の累乗に丸められます。 メッセージはレプリケーション・バケットに書き込まれます。バケットの行は、時間バケットにより決定されます。各バケットはtime_unit * num_time_unitです。一度に存在するバケットの数はnum_time_bucketsです。 メッセージは、メッセージの時刻に基づいてシーケンシャルに書き込まれます。1つの時間バケットには、特定の期間のメッセージを含めることができます。また、num_time_buckets * time_unit * num_time_unitより前の期間のメッセージを含めることもできます。 時間ベースの行では、バケットのクラスター化を最小化し、パフォーマンスを向上させ、エッジ・クラスターのノードへのバランスの取れた分散を維持するために、実際の時間バケットがランダムに選択されます。 |
なし |
replication-max-permits | 5000 | レプリケーションに使用できる許可の最大数。 Cassandraドライバーに送信される同時操作の数の制限を許可します。メッセージをハブに送信する前に、許可を取得する必要があります。 | あり |
replication-min-permits | 100 | レプリケーションに使用できる許可の最小数。 | あり |
replication-permit-timeout-ms | 2000 | 許可がない場合、許可を取得するためにレプリケーション・チャネルが待機する最大時間。スロー・トラックにより送信されるメッセージにのみ適用されます。 | あり |
replication-permits-tuning-delta-percentage | 20 | 許可が再調整されるまでの時間間隔(ミリ秒)を指定します。 | なし |
replication-permits-tuning-window-ms | 60000 | 許可が再調整されるまでの時間間隔(ミリ秒)を指定します。 | なし |
replication-timeouts-lower-bound-ratio | 3 | 「タイムアウトした要求/要求総数」の割合がこの割合より小さい場合、使用可能な許可の数がデルタにより自動的に増加されます。 | なし |
replication-timeouts-upper-bound-ratio | 15 | 「タイムアウトした要求/要求総数」の割合がこの割合より大きい場合、使用可能な許可の数がデルタにより自動的に減少されます。 | なし |
replog-consumer-buffer | 100000 | 1つのノードがレプリケーション・ログから一度に読み取るメッセージの数。パフォーマンスを向上させるには、低いメモリー使用率、少ないレプリケーション・パフォーマンスとなるように、この構成値を減少させます。 | あり |
slow-track-min-bandwidth-percentage | 10 | スロー・トラックを使用してメッセージを送信するために使用できる許可の最小保証割合。 | あり |
dse advrep edge list-conf次のように表示されます。
field | value
--------------------------------------------------
debug_output | true
driver_connections | 16
replog_consumer_buffer | 20000
replication_log_audit_log_enabled | true
rep_channel_permits | 30000
hub_ip_addresses | 10.200.241.156
remote_logging_ipaddress | 10.200.164.72
edge_replication | true
driver_connections_max | 256
チャネル設定を構成する
CREATE TABLE dse_system.advrep_table_conf (
keyspace_name text,
table_name text,
edge_id text,
edge_id_col_name text,
enabled boolean,
hub_keyspace_name text,
hub_table_name text,
priority int,
truncate_timestamp timestamp,
PRIMARY KEY (keyspace_name, table_name)
)
cqlsh> select * from dse_system.advrep_table_conf;次のように表示されます。
keyspace_name | table_name | edge_id | edge_id_col_name | enabled | hub_keyspace_name | hub_table_name | ...
---------------+------------+---------+------------------+---------+-------------------+----------------+-...
foo | bar | null | null | True | foo | bar | ...
(1 rows)
dse advrep edge channel ...認証情報を複数の方法で提供できます。「認証情報」を参照してください。
カラム名 | 説明 |
---|---|
keyspace-name | レプリケートするテーブルのエッジにあるキースペース。 |
table-name | レプリケートするエッジにあるテーブル名。 |
enabled | trueに設定されている場合は、このテーブルのレプリケーションが開始します。falseに設定されている場合は、このテーブルからメッセージがレプリケーション・ログに保存されることはありません。 |
hub-keyspace-name | レプリケートされるテーブルのハブにあるキースペース。 |
hub-table-name | レプリケートされるテーブルのハブにあるテーブル名。 |
priority | メッセージは優先順位DESCによりマークされます。 |
edge-id | advrep_confメタデータで定義されるedge-idをオーバーライドするためのプレースホルダー。 |
edge-id-col-name | advrep_confメタデータで定義されるedge-id-col-nameをオーバーライドするためのプレースホルダー。 |
truncate-timestamp | このタイムスタンプより古い、このチャネルのレプリケーション・ログのデータのTRUNCATEを行います。TRUNCATEされたデータはレプリケートされません。 |
dse advrep edge channel status次のように表示されます。
keyspace_name | table_name | edge_id | edge_id_col_name | enabled | hub_keyspace_name | hub_table_name | priority | truncate_timestamp
--------------------------------------------------------------------------------------------------------------------------------------
advrep | loki | | | True | advrep | loki | 2 | None
advrep | thor | | | True | advrep | thor | 1 | None
ドライバーのパスワードを暗号化する
- dse.yamlファイルで、次の操作を行います。
- config_encryption_activeプロパティがfalseであることを確認します。
config_encryption_active:false
- conf_driver_password_encryption_enabledプロパティにより、ドライバーのパスワード暗号化を有効にします。
conf_driver_password_encryption_enabled:true
- system_key_directoryプロパティにより、システム・キーを保存するディスク上の場所を定義します。
デフォルト値は/etc/dse/confです。system_key_directory:/etc/dse/conf
- config_encryption_key_nameプロパティにより、暗号化キーがシステム・キーとして生成されることを指定します。
config_encryption_key_name:system_key
- config_encryption_activeプロパティがfalseであることを確認します。
- システム・キーを生成します。サーバー内:
dsetool createsystemkey cipher strength system_key_file
サーバー外:dsetool createsystemkey cipher strength system_key_file -kmip=kmip_groupname
例:dsetool createsystemkey 'AES/ECB/PKCS5Padding' 128 system_key_file
system_key_fileは、生成されたシステム・キー・ファイルの一意のファイル名です。createsystemkeyを参照してください。結果: グローバル暗号化キーは、dse.yamlファイルのsystem_key_directoryで指定されている場所に作成できます。このデフォルトのグローバル暗号化キーは、system_key_fileサブプロパティが指定されていない場合に使用されます。
- 返された値をコピーします。
- エッジ・クラスターの任意のノードでdseコマンドを使用し、DSE Advanced Replication環境用に暗号化されたパスワードを設定します。
dse advrep edge conf --driver-pwd "Sa9xOVaym7bddjXUT/eeOQ==" --driver-user "username"
- dse.yamlで、conf_driver_password_encryption_enabledプロパティをtrueに設定します。
conf_driver_password_encryption_enabled:true
- dseを起動します。
データ挿入方法
DataStax Enterpriseクラスターにデータを挿入するにはいくつかの方法があります。DSE Advanced ReplicationはCassandraトリガーに依存しているため、通常のパスによるデータ挿入がサポートされています。Cassandraトリガーを使用しない方法では、データ・レプリケーションは発生しません。
- CQLの挿入(cqlsh、標準的なCassandraドライバーを使用するアプリケーションを含む)
- CSVファイルからのコピー
- Solr HTTPまたはCQL
- Spark saveToCassandra
- コンパクト・ストレージ用に定義されたテーブル
- Sstableloader(Cassandraバルク・ローダー)
- バックアップからのOpsCenter復元
- Spark bulkSaveToCassandra
Installer-Services | /etc/dse/dse.yaml |
パッケージ・インストール | /etc/dse/dse.yaml |
Installer-No Services | install_location/resources/dse/conf/dse.yaml |
tarボール・インストール | install_location/resources/dse/conf/dse.yaml |