使用DataStax C#驱动程序时故障转移不适用于Cassandra

伪君王

我在Azure中设置了两个节点,并且尝试与C#驱动程序连接时进行故障转移。使用cqlsh以及在OpsCenter中,我的节点似乎通信良好。

var contact = "publicipforfirstnode";
_cluster = Cassandra.Cluster.Builder().AddContactPoint(contact).Build();
_session = _cluster.Connect("demo");

我最初连接第一个节点的公共IP。这很好。但是,在配置中,我使用了由虚拟网络分配的内部网络IP,例如10.1.0.4、10.1.0.5等。我将它们设置为每个节点的listen_address和broadcast_rpc_address。即使我在配置中使用内部IP,也可以与公共IP连接。我有一个特殊的防火墙规则,该规则允许我从公用IP上的特定计算机进行连接。但是,为了避免用于内部节点通信的防火墙规则,我将节点放在同一虚拟网络上,不需要任何额外的工作。

在我的第一个节点出现故障之前,这似乎很棒。然后,它使用内部IP尝试第二个节点。

我收到一个错误:所有主机都尝试查询(第一个节点的公共IP),(第二个节点的内部IP)

但是由于我是从不在虚拟网络中的计算机连接的,因此无法访问此内部ip。我的应用程序将不在内部网络中,因此这似乎是一个问题。

不使用内部ips会迫使我设置身份验证和/或我宁愿不必执行的特殊防火墙规则。有什么方法可以强制C#驱动程序使用公共ip并允许节点在内部ip上进行通信?除非您有多个区域,否则建议使用内部ips是最佳做法。

乔尔格贝格

broadcast_rpc_address驱动程序使用在cassandra.yaml文件中配置的IP连接到它们。

对于您的情况,如果要使用公共IP地址与驱动程序连接,则应将设置broadcast_rpc_address为公共IP地址。

您可以在驱动程序中启用跟踪功能,以查看幕后情况:

// Specify the minimum trace level you want to see
Cassandra.Diagnostics.CassandraTraceSwitch.Level = TraceLevel.Info;
// Add a standard .NET trace listener
Trace.Listeners.Add(new ConsoleTraceListener());

从文档

  • listen_address:Cassandra绑定到的IP地址或主机名,用于连接到其他Cassandra节点。
  • broadcast_rpc_address:广播到驱动程序和其他Cassandra节点的RPC地址不能将其设置为0.0.0.0。如果为空,则将其设置为rpc_address或rpc_interface的值。如果rpc_address或rpc_interface设置为0.0.0.0,则必须设置此属性。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

无法使用DataStax C#驱动程序从Cassandra获取值

如何使用 C# Datastax 驱动程序删除 Cassandra 上的表?

使用DataStax C#驱动程序处理Cassandra中的所有节点

在使用Datastax Cassandra驱动程序时是否重新使用PreparedStatement?

使用 Datastax Cassandra 驱动程序时出现无效类型错误

Datastax Cassandra Java驱动程序的Accessor是否使用分页?

Datastax Java Cassandra驱动程序:使用WHERE的多个AND语句?

Nodejs - Apache Cassandra(使用 Datastax 驱动程序)

Datastax C#驱动程序中的Cassandra timeuuid

无法使用 Cassandra Datastax Java 驱动程序连接到 Cassandra 节点之一

使用Datastax Java驱动程序以JSON查询行

在Datastax Python驱动程序中使用Thrift协议

如何使用Datastax Java驱动程序有效地使用批写入Cassandra?

如何使用datastax驱动程序创建Cassandra连接池

使用datastax驱动程序检索有关Cassandra集群数据中心的信息

如何使用带有Datastax Java驱动程序的CQL向Cassandra添加任意列?

Cassandra:使用DataStax Java驱动程序选择一系列TimeUUID

如何使用DataStax Java驱动程序设置Cassandra客户端到节点的加密?

使用Datastax Java驱动程序无法通过Cassandra的UDT密钥检索

Datastax Node.js Cassandra驱动程序何时使用映射器与查询

Cassandra使用datastax cassandra读取操作错误

无法使用 Datastax DevCenter 连接到 Cassandra

使用datastax cassandra映射器的NoSuchMethodException

使用Amazon Elastic IP的Cassandra Datastax Enterprise

如何在Cassandra中使用Datastax Java驱动程序有效地使用准备好的语句?

在MGO驱动程序中更新查询,可与bson.M一起使用,但不适用于定制结构

使用Cassandra的datastax Java驱动程序中的别名可链接便捷方法选择特定列以及avg和max

使用Datastax驱动程序3.6的Cassandra分页:不支持空分页状态和获取大小

使用适用于SQL Server的新ODBC驱动程序连接到LocalDB