【问题标题】:How to connect to specific cassandra node only如何仅连接到特定的 cassandra 节点
【发布时间】:2018-07-22 23:04:03
【问题描述】:

我在同一个数据中心有两个 docker cassandra 容器节点充当 node1 和 node2。

我的目标是让我的 java 应用程序始终连接到 node1,并且我的临时手动查询应该只从 node2 返回(不应该有任何节点间数据通信)

通常我可以使用 cqlsh 在 container1 或 container2 上执行读/写查询。如果我使用 cqlsh 在 container1 上触发一些查询,它是否总是从同一个容器(node1)返回数据,或者它也可能在内部路由到另一个节点?

我知道协调节点会与对等节点进行数据请求,如果 RF=2 和 2 节点集群会发生什么情况,协调节点本身是否能够提供数据?

这里,RF=2,节点=2,一致性=ONE

【问题讨论】:

    标签: cassandra cassandra-2.0 cassandra-3.0


    【解决方案1】:

    我之前已经设置了集群来将 OLTP 与 OLAP 分开。这样做的方法是将您的节点分成不同的逻辑数据中心。

    所以 node1 应该在 cassandra-rackdc.properties 中将其本地数据中心放在“dc1”中。

    dc=dc1
    rack=r1
    

    同样,node2 应该放入它自己的数据中心,“dc2”。

    dc=dc2
    rack=ra
    

    那么您的键空间定义将如下所示:

    CREATE KEYSPACE stackoverflow
      WITH REPLICATION={'class':'NetworkTopologyStrategy','dc1':'1','dc2':'1'};
    

    我的目标是让我的 java 应用程序始终连接到 node1

    在您的 Java 代码中,您应该指定“dc1”作为您的默认数据中心,就像我在此示例中所做的那样:

    String dataCenter = "dc1";
    
    Builder builder = Cluster.builder()
                    .addContactPoints(nodes)
                    .withQueryOptions(new QueryOptions().setConsistencyLevel(ConsistencyLevel.LOCAL_ONE))
                    .withLoadBalancingPolicy(new TokenAwarePolicy(
                                                new DCAwareRoundRobinPolicy.Builder()
                                                .withLocalDc(dataCenter).build()))
                    .withPoolingOptions(options);
    

    这将使您的 Java 应用程序“粘”到数据中心“dc1”中的所有节点,或者在本例中仅为 node1。同样,当您 cqlsh 进入 node2 时,您的即席查询应该“粘”到“dc2”中的所有节点。

    注意:在此配置中,您没有高可用性。如果 node1 出现故障,您的应用将不会跳转到 node2。

    【讨论】:

    • 还可以创建白名单策略以仅连接到 1 个节点并为每个节点创建一个 Cluster 对象。或者,可以构建自己的 LoadBalancingPolicy 来包装其他人并检查 Statement 是否是您创建的一个实例(扩展 StatementWrapper 并使用包含主机名的字段)。然后您可以将主机与查询一起传递,它只会直接命中那个。
    • 在 Cassandra 前面架起负载均衡器可不是个好主意。
    • 完美解释!!是否需要在 cassandra.yaml 文件中更新两个 DC 的种子 ip?
    • @Sathish 它不需要它,不。您应该能够使用您之前使用的任何种子节点策略。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-23
    • 2019-08-31
    • 1970-01-01
    • 2014-12-12
    • 2016-12-08
    • 2020-07-12
    相关资源
    最近更新 更多