Я настроил контейнер Cassandra, выполнив следующие команды: Это вытянет образ Cassandra docker из концентратора docker и запустит контейнер с сетью Cassandra
- docker создать cassandra- net
- docker run --name my-cassandra --network cassandra- net -d cassandra: latest
- docker run --name my- cassandra-1 --network cassandra- net -d -e CASSANDRA_SEEDS = my-cassandra cassandra: latest
- docker run -it --rm --network cassandra- net cassandra: latest cql sh my-cassandra
Затем создано пространство ключей
CREATE KEYSPACE user_keyspace WITH REPLICATION = {'class': 'SimpleStrategy', 'replication_factor': 3};
В котором есть таблица пользователей.
Мой node.js код:
const cassandra = require('cassandra-driver');
var contactPoints = ['my-cassandra:9042'];
const client = new cassandra.Client({
contactPoints: contactPoints,
localDataCenter: 'datacenter1',
keyspace: 'user_keyspace'
});
client.connect(function (err) {
if (err) {
console.log('Error in connnection: ', err); return;
}
console.log('Cassandra connected');
});
Произошла ошибка при подключении
NoHostAvailableError: Хост не может быть разрешено в ControlConnection.init (/app/node_modules/cassandra-driver/lib/control-connection.js:203:13) в asyn * 104 0 * Client._connect (/app/node_modules/cassandra-driver/lib/client.js:513:5) {name: 'NoHostAvailableError', info: 'Представляет ошибку, когда запрос не может быть выполнен из-за отсутствия хоста доступны или могут быть достигнуты драйвером. ', сообщение:' Не удалось разрешить ни одного хоста ', innerErrors: {}
У меня нет большого опыта работы с Cassandra или Docker, поэтому я не конечно, почему мое приложение не подключается к БД, возможно, что-то такое, что порты не открыты для входящих запросов, но я не знаю, как это проверить или изменить.