2016-09-22 90 views
0

Cassandra在远程计算机上作为服务运行,但在同一网络中运行。我还创建了一个与Cassandra环境进行通信的.net程序。使用用户名和密码将C#发送给Cassandra服务

我能当它不是与下面的连接字符串服务运行与卡桑德拉沟通:

private void Connect() 
    { 
     cluster = Cluster.Builder().WithCredentials(username, password).AddContactPoint("192.168.30.104").Build(); 
     session = cluster.Connect("core_meter"); 
    } 

但是,当我尝试连接到卡桑德拉时,其作为一种服务,我得到运行以下错误:

An unhandled exception of type 'Cassandra.NoHostAvailableException' occurred in Cassandra.dll

Additional information: None of the hosts tried for query are available (tried: 192.168.30.104:9042)

我不确定是否必须在我的.yaml文件中更改任何内容,然后才能使用用户名和密码访问服务。 这里是YAML文件:https://www.dropbox.com/s/wbrexlarkjrvlrm/cassandra.yaml?dl=0

编辑:当我没有一个用户名和密码与服务通信我可以与服务通信(我总是可以通过命令提示符下执行通信),但是当我使用一个用户名和密码它不再工作了。

+0

在Windows上为“Listening Ports”检查“Resource Monitor”或在Linux上检查两个实例上的“netstat -tnlp”,并检查9042是否显示在localhost上或192.168.30.104 – Sreekar

+0

如果我是正确的,你看到这个错误,你有在本地主机上运行的Cassandra:9042 – Sreekar

+0

@Sreekar我打开服务器上的9042端口。另外,如果它没有用户名或密码,我可以与服务进行通信。对不起,没有注意到你是下面的同一个人;) – Proliges

回答

2

在我看来,你的服务和单个可执行文件使用不同的 yaml配置文件。检查你的环境变量和你的文件。也看看DataStax documentation

+0

不,因为当我使用服务(没有用户名和密码),我可以与它沟通,并在我的数据库中插入行。我可以用单个可执行文件查看这些行。他们是一样的。 – Proliges

+0

@Proliges xmas79说的是对的。您在通过网络正确公开服务方面存在问题,这似乎正在发生,因为它使用具有listen_address作为本地主机的不同版本的yaml文件。数据似乎是正确的,因为数据目录和提交日志对于服务和单个可执行文件都是相同的 – Sreekar

+0

好的,那么我在哪里可以找到该服务的这个秘密yaml文件?如果我删除用户名和密码,为什么我可以与服务进行通信?为什么我必须更改这个.yaml文件才能使服务工作(而不是另一个)?对我来说没有任何意义,因为我不应该能够进行远程连接,所以会有另一个.yaml文件设置为localhost。 @Sreekar – Proliges

相关问题