1

我有两个 Cassandra 节点托管在两个 IP 上。现在,当我从 Windows 通过 Node.js 中的 cassandra-driver 连接到其中一个节点时,我收到“连接超时”和“主机无法访问”类型的错误。但是,我可以从网络外部通过 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(也可以从远程网络)。

4

1 回答 1

2

如果您使用公共 IP 远程访问集群,则您的配置不正确。

此表可能会帮助您找出 scylla.yaml 中的正确 IP:

https://docs.scylladb.com/operating-scylla/procedures/cluster-management/ec2_dc/#ec2-configuration-table

除非您在 AWS 上,否则不要使用 Ec2Snitch。该表仅供参考。

于 2019-06-10T18:01:58.390 回答