我通过运行以下命令来设置 Cassandra 容器:这将从 docker hub 拉取 Cassandra 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:最新的 cqlsh 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:在异步 Client._connect (/app/node_modules/cassandra-driver/lib/ 的 ControlConnection.init (/app/node_modules/cassandra-driver/lib/control-connection.js:203:13) 无法解析主机client.js:513:5) { name: 'NoHostAvailableError', info: '表示由于没有主机可用或驱动程序无法访问而无法执行查询时出现错误。', message: '无法解析主机',内部错误:{}
我对 Cassandra 或 Docker 没有太多经验,所以我不确定为什么我的应用程序没有连接到数据库,也许是端口没有对传入请求开放,但我不知道如何检查或者改变它。