2017-03-14 3 views
1

Datastax C/C++ドライバには、負荷分散制御の一環としてブラックリストフィルタ機能があります。Datastax Cassandra C/C++ドライバcass_cluster_set_blacklist_filtering機能

https://docs.datastax.com/en/developer/cpp-driver/2.5/topics/configuration/

私は何かが欠けている場合、私を修正しますが、私の理解では、CQLクライアントがブラックリストに載ったホストに接続できないということです。

私はC/C++ドライバV2.5および以下のコードブロックを使用してマルチノードクラスタに接続しようとしている:このコードブロックでは

CassCluster* cluster = cass_cluster_new(); 
CassSession* session = cass_session_new(); 
const char* hosts = "192.168.57.101"; 
cass_cluster_set_contact_points(cluster, hosts); 
cass_cluster_set_blacklist_filtering(cluster, hosts); 
CassFuture* connect_future = cass_session_connect(session, cluster); 

CQLクライアントが接続しようとされているが、あるホストをブラックリストに設定されます。ただし、CQLクライアントはこのホストに接続しているようで、クエリを実行します。上記のコードブロックに何か問題がありますか?もしそうでなければ、これは期待された振る舞いですか?マルチノードクラスタで他のピアとの接続を確立するため、動作が異なりますか?

ご協力いただければ幸いです。あなたが唯一の接触点を供給しているので

は、IPアドレスは、クラスタへの制御接続を確立するために使用されていることを、事前

答えて

0

でいただきありがとうございます。その制御接続が確立され、ピアテーブルが読み取られてクラスタ内で利用可能な他のノードが決定されると、それらの他のノードに接続が確立されます。この時点で、すべてのクエリは、最初の/ブラックリストに登録された連絡先ではなく、他のノードにルーティングされます。ただし、最初の接点への接続は、クラスタへの制御接続のままになります。

ドライバの内部で何が起こっているのかをよく知るには、ドライバのログを有効にすることができます。ここでは、コンソール経由でログを有効にする例を示します。

あなたはノードと同じではありませんクラスタに異なる接触点を供給することができブラックリストにされたノード上の余分な接続を低減するために
void on_log(const CassLogMessage* message, void* data) { 
    fprintf(stderr, "%u.%03u [%s] (%s:%d:%s): %s\n", 
    (unsigned int) (message->time_ms/1000), 
    (unsigned int) (message->time_ms % 1000), 
    cass_log_level_string(message->severity), 
    message->file, message->line, message->function, 
    message->message); 
} 

/* Log configuration *MUST* be done before any other driver call */ 
cass_log_set_level(CASS_LOG_TRACE); 
cass_log_set_callback(on_log, NULL); 

(またはノード)がブラックリストに登録されます。

+0

ありがとうございます。ブラックリストポリシーはC/C++ドライバでサポートされています。 C/C++ドライバやその他の言語ドライバでサポートされているホワイトリストポリシーもあります。 C/C++ドライバのホワイトリストポリシーでは、クライアントはホワイトリストに含まれていなくてもノードに接続しますが、ホワイトリストホストにはすべてのデータを格納します(ブラックリストと同じ方法で動作します)。ホワイトリストのPythonドライバのポリシーでは、クライアントはホワイトリストに含まれていないノードに接続しません。だから、私は、異なる言語のdatastaxドライバは、ホワイトリストポリシーの異なる実装を持っていることを前提としています。 –

+0

@MariosBrahoあなたが正しいです、pythonドライバはホワイトリストホストを尊重し、ホストへの接続を確立しません。あなたがそれを追跡したいなら、私はDataStax C/C++ Jiraボード上のチケットを作成しました。 https://datastax-oss.atlassian.net/browse/CPP-447。 – Fero

関連する問題