我正在使用 helenus 在使用cassandra驱动程序的nodejs中开发一个应用程序。 版本的helenus 0.6.10 。
这是 app.js 。
var helenus = require('helenus');
var pool = new helenus.ConnectionPool({
hosts: ['localhost:9160'],
keyspace: 'test_dev',
user: '',
password: ''
});
pool.connect(function(err, keyspace) {
if (err) throw err;
console.log('Listening on port 3000....');
});
pool.on('error', function(err) {
if (err) throw err;
});
当我们调用 pool.connect 时,它会在回调中抛出以下错误。
错误名称:“HelenusNoAvailableNodesException”
错误消息:“无法连接到任何节点”
当我完成故障排除问题时。我发现Connection.prototype.use方法中的onDescribe方法正在抛出“NotFoundException”的错误。
我做错了什么?任何帮助。
答案 0 :(得分:3)
首先检查您的Cassandra版本。如果您运行的是Cassandra 1.2或更高版本,那么您应该使用the Datastax NodeJS Driver。确实没有任何理由在1.2或更高版本中使用Thrift,因为CQL的性能和功能大大超过了Thrift。此外,虽然Thrift服务器仍可供使用,但没有给予开发工作。
如果您完全确定需要使用Thrift,请首先确保密钥空间存在。 Helenus需要一个密钥空间来连接,所以如果密钥空间不存在,它将无法连接到任何节点。如果密钥空间存在,则运行:
nodetool statusthrift
如果它显示running
以外的任何内容,请运行nodetool enablethrift
然后重试。
如果正在运行thrift,那么我会检查cassandra.yaml
中配置的接口。 rpc_address
应与您从客户端连接的接口匹配。如果您不确定界面,则只需将其设置为0.0.0.0
。 rpc_port
应为9160
。更改cassandra.yaml
中的任何设置后,您需要在群集中的每个节点上重新启动cassandra服务。