次のコマンドを実行して Cassandra コンテナーをセットアップします。これにより、Cassandra Docker イメージが Docker ハブからプルされ、Cassandra でコンテナーが起動されます
- docker network create 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 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 の経験があまりないので、アプリが DB に接続していない理由がわかりません。おそらくポートが着信要求に対して開かれていないためですが、どのように確認すればよいかわかりません。またはそれを変更します。