如何将 Node.js 应用程序正确连接到 Cassandra 节点?
How to connect Node.js app properly to Cassandra node?
我在两个 IP 上托管了两个 Cassandra 节点。现在,当我从 Windows 通过 Node.js 中的 cassandra-driver 连接到其中一个节点时,我收到了 'connection timed out' 和 'host unreachable' 类错误。但是,我可以通过 CQLSH 从它们的网络外部连接到这些节点。
我是不是做错了什么?这是示例代码。
var cassandra = require('cassandra-driver');
var uuid = require('uuid')
var client = new cassandra.Client({ contactPoints: ['(PUBLIC IP Here) X.X.X.X:9042'], localDataCenter: 'datacenter1', keyspace: 'ksks' });
function getAllPersons() {
var query = 'SELECT * FROM person';
return new Promise((resolve, reject) => {
client.connect(function (err) {
if (err) return console.error(err);
else {
client.execute(query, function (err, result) {
if(err) {
reject([])
}
else {
if(result.rows.length) {
resolve(result.rows);
}
else {}
reject([])
}
});
}
});
});
}
在 cassandra.yaml 中,我有这些值:
listen_address: 10.0.0.4
native_transport_port: 9042
rpc_address: 10.0.0.4
rpc_port: 9160
api_port: 10000
api_address: 10.0.0.4
我需要改变什么?节点工作正常,可以相互进行 CQLSH(也来自远程网络)。
如果您使用 public IP 远程访问集群,则您的配置不正确。
这个 table 可能会帮助您找出 scylla.yaml 中的正确 IP:
https://docs.scylladb.com/operating-scylla/procedures/cluster-management/ec2_dc/#ec2-configuration-table
除非您在 AWS 上,否则请勿使用 Ec2Snitch。 table 只是一个参考。
我在两个 IP 上托管了两个 Cassandra 节点。现在,当我从 Windows 通过 Node.js 中的 cassandra-driver 连接到其中一个节点时,我收到了 'connection timed out' 和 'host unreachable' 类错误。但是,我可以通过 CQLSH 从它们的网络外部连接到这些节点。
我是不是做错了什么?这是示例代码。
var cassandra = require('cassandra-driver');
var uuid = require('uuid')
var client = new cassandra.Client({ contactPoints: ['(PUBLIC IP Here) X.X.X.X:9042'], localDataCenter: 'datacenter1', keyspace: 'ksks' });
function getAllPersons() {
var query = 'SELECT * FROM person';
return new Promise((resolve, reject) => {
client.connect(function (err) {
if (err) return console.error(err);
else {
client.execute(query, function (err, result) {
if(err) {
reject([])
}
else {
if(result.rows.length) {
resolve(result.rows);
}
else {}
reject([])
}
});
}
});
});
}
在 cassandra.yaml 中,我有这些值:
listen_address: 10.0.0.4
native_transport_port: 9042
rpc_address: 10.0.0.4
rpc_port: 9160
api_port: 10000
api_address: 10.0.0.4
我需要改变什么?节点工作正常,可以相互进行 CQLSH(也来自远程网络)。
如果您使用 public IP 远程访问集群,则您的配置不正确。
这个 table 可能会帮助您找出 scylla.yaml 中的正确 IP:
https://docs.scylladb.com/operating-scylla/procedures/cluster-management/ec2_dc/#ec2-configuration-table
除非您在 AWS 上,否则请勿使用 Ec2Snitch。 table 只是一个参考。