Как правильно подключить приложение Node.js к узлу Cassandra? - PullRequest
1 голос
/ 10 июня 2019

У меня есть два узла Cassandra, размещенные на двух IP. Теперь, когда я подключаюсь к одному из этих узлов через cassandra-driver в Node.js из Windows, я получаю ошибки типа «время ожидания соединения» и «узел недоступен». Однако я могу подключиться к этим узлам через 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 друг с другом (в том числе и из удаленных сетей).

1 Ответ

1 голос
/ 10 июня 2019

Если вы используете публичный IP-адрес для удаленного доступа к кластеру, ваши настройки неверны.

Эта таблица может помочь вам определить правильные IP-адреса в scylla.yaml:

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

НЕ используйте Ec2Snitch, если вы не используете AWS. Таблица просто справочная.

...