cassandra 节点可以高度便携吗?

Posted

技术标签:

【中文标题】cassandra 节点可以高度便携吗?【英文标题】:Can cassandra nodes be highly portable? 【发布时间】:2020-03-08 15:04:34 【问题描述】:

环境:

Nodes: 5
Replication: 5
Consistency: 1

代码:

using System;
using Cassandra;

    namespace CassandraSelectTest
    
        class Program
        
            static void Main(string[] args)
            
                var cluster = Cluster.Builder()
                .AddContactPoints("192.168.0.18","192.168.0.21","192.168.0.22","192.168.0.23","192.168.0.24")
                .WithPort(9042)
                .Build();

                var session = cluster.Connect("test_keyspace");

                var results = session.Execute("SELECT * FROM test_table");

                foreach(var result in results)
                
                    Console.WriteLine(result.GetValue<string>("col1"));
                

                Console.WriteLine($"Finished");
                Console.ReadKey();
            
        
    

问题:

理想情况下,某些节点需要高度便携,这导致节点的 IP 地址在其位于不同位置时会发生变化,然后在返回其原始位置时会更改回其正常 IP 地址。这种情况每周发生几次。


问题:

是否可以将单个节点配置为具有多个 IP 地址或自动更改的动态地址?

【问题讨论】:

【参考方案1】:

我认为在这种情况下,驱动程序将收到一个协议事件,该事件将使驱动程序刷新集群的拓扑。只要节点的 IP 在system.peers 表中是最新的,即您在节点的 cassandra.yml 上更新 broadcast_rpc_address / rpc_address / listen_address,驱动程序应该能够注意到旧 IP 不是在该表中更长的时间(这将删除旧主机)并且有一个新 IP(这将添加一个新主机)。

如果控制连接无法重新连接到本地元数据缓存中的任何 IP(例如,如果所有节点同时关闭并更改其 IP 地址),则驱动程序将无法重新连接。 There's this open ticket 只要用户提供主机名作为联系点(DNS 解析返回更新的 IP),就会解决此问题。

【讨论】:

> (你在节点的 cassandra.ym 上更新 broadcast_rpc_address / rpc_address / listen_address)所以如果 1 个节点的 IP 地址发生变化,我是否必须在所有节点上更新 cassandra.yml 文件节点,还是仅 1 个更改其 IP 地址的单个节点? 如果任何其他节点具有旧 IP 地址,您将需要更新 cassandra.yaml 中的种子列表。如果您在该列表中有可访问的其他 IP,这不是硬性要求 我提到的具体设置是针对其 IP 发生变化的单个节点,但就像 Carlos 所说,如果该节点也用作其他节点的 yml 文件中的种子,那就另当别论了。跨度> 我认为在这种情况下我需要一个不同的分布式数据库。有什么建议吗? 您是否有可能使用主机名并让 DNS 将这些主机名解析为正确的 IP?在这种情况下,我认为您不必更改 cassandra.yaml 文件。

以上是关于cassandra 节点可以高度便携吗?的主要内容,如果未能解决你的问题,请参考以下文章

Cassandra 更新无法正常工作

Cassandra 数据模型

Cassandra 简介

JAVA操作cassandra数据库

Cassandra Scaling:为多节点 Cassandra DB 使用通用挂载是个好主意吗?

Cassandra 分页在并发插入时的行为方式