cassandra节点是否具有高度可移植性?

neekobn8  于 2021-06-10  发布在  Cassandra
关注(0)|答案(1)|浏览(379)

环境:

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地址或自动更改的动态地址?

knsnq2tg

knsnq2tg1#

我认为在这种情况下,驱动程序将收到一个协议事件,该事件将使驱动程序刷新集群的拓扑结构。只要节点的ip在中是最新的 system.peers 表,即更新 broadcast_rpc_address / rpc_address / listen_address 在节点的cassandra.yml上,驱动程序应该能够注意到旧ip不再在该表中(这将删除旧主机),并且有一个新ip(这将添加一个新主机)。
如果控制连接无法重新连接到本地元数据缓存上的任何ip(例如,如果所有节点同时关闭并更改其ip地址),则驱动程序将无法重新连接。只要用户提供主机名作为联系点(并且dns解析返回更新的IP),这个开放的票证就可以解决这个问题。

相关问题