cassandra 节点可以高度便携吗?
Can cassandra nodes be highly portable?
环境:
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 地址或自动更改的动态地址?
我认为在那种情况下,驱动程序将收到一个协议事件,这将使驱动程序刷新集群的拓扑结构。只要节点的 IP 在 system.peers
table 中是最新的,即您在节点的 cassandra.yml 上更新 broadcast_rpc_address
/ rpc_address
/ listen_address
] 驱动程序应该能够注意到旧 IP 不再位于 table(这将删除旧主机)并且有一个新 IP(这将添加一个新主机)。
如果控制连接无法重新连接到本地元数据缓存中的任何 IP(例如,如果所有节点都关闭并同时更改其 IP 地址),则驱动程序将无法重新连接。 There's this open ticket 只要用户提供主机名作为联系点(以及 DNS 解析 returns 更新后的 IP)即可解决此问题。
环境:
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 地址或自动更改的动态地址?
我认为在那种情况下,驱动程序将收到一个协议事件,这将使驱动程序刷新集群的拓扑结构。只要节点的 IP 在 system.peers
table 中是最新的,即您在节点的 cassandra.yml 上更新 broadcast_rpc_address
/ rpc_address
/ listen_address
] 驱动程序应该能够注意到旧 IP 不再位于 table(这将删除旧主机)并且有一个新 IP(这将添加一个新主机)。
如果控制连接无法重新连接到本地元数据缓存中的任何 IP(例如,如果所有节点都关闭并同时更改其 IP 地址),则驱动程序将无法重新连接。 There's this open ticket 只要用户提供主机名作为联系点(以及 DNS 解析 returns 更新后的 IP)即可解决此问题。