通过 cqlsh 使用 docker 远程访问 cassandra 4.0.1
Remote access to cassandra 4.0.1 using docker via cqlsh
我的环境:
- Windows 10 家
- WSL2
- Cassandra 4.0.1:官方 Docker 图片
Docker 命令:
docker run --name cassandra-node-0 -p 7000:7000 -p 7001:7001 -p 7199:7199 -p 9042:9042 -p 9160:9160 -e CASSANDRA_CLUSTER_NAME=MyCluster -e CASSANDRA_ENDPOINT_SNITCH=GossipingPropertyFileSnitch -e CASSANDRA_DC=datacenter1 -e CASSANDRA_BROADCAST_ADDRESS=192.168.1.101 -d cassandra
CQLSH 命令:
docker run -it -e CQLSH_HOST=$(docker inspect --format='{{ .NetworkSettings.IPAddress}}' cassandra-node-0) --name cassandra-client --entrypoint=cqlsh cassandra
我尝试在同一台电脑的 WSL2 中使用 ubuntu 中的 cqlsh 连接 cassandra 节点。
我没有更改所有 *.yaml 文件,只使用 Docker Env。
当我将节点的 docker 网络 ip 插入到 CQLSH_HOST 时,cqlsh 成功连接节点。
但是,当我插入我的私有 ip,public ip 或 127.0.0.1 时,cqlsh 被拒绝连接到节点。
当来自不同网络的节点连接时,这显示了相同的问题。
我想我缺少一些设置 Docker Env.
我缺少什么设置?
[更新] 我在防火墙中添加了一些端口转发规则但同样的问题。
[更新 2] docker ps -a
结果:
0.0.0.0:7000-7001->7000-7001/tcp, :::7000-7001->7000-7001/tcp, 0.0.0.0:7199->7199/tcp, :::7199->7199/tcp, 0.0.0.0:9042->9042/tcp, :::9042->9042/tcp, 0.0.0.0:9160->9160/tcp, :::9160->9160/tcp
尝试在 运行 Cassandra 时添加 --hostname
和 --network
。例如:
$ docker run --rm -d
--name cassandra-node-0
--hostname cassandra-node-0
--network cassandra-node-0
您会发现通过添加以下内容可以更轻松地通过 cqlsh 进行连接:
--network cassandra-node-0
-e CQLSH_HOST=cassandra-node-0
到您的 docker run
命令。干杯!
我的环境:
- Windows 10 家
- WSL2
- Cassandra 4.0.1:官方 Docker 图片
Docker 命令:
docker run --name cassandra-node-0 -p 7000:7000 -p 7001:7001 -p 7199:7199 -p 9042:9042 -p 9160:9160 -e CASSANDRA_CLUSTER_NAME=MyCluster -e CASSANDRA_ENDPOINT_SNITCH=GossipingPropertyFileSnitch -e CASSANDRA_DC=datacenter1 -e CASSANDRA_BROADCAST_ADDRESS=192.168.1.101 -d cassandra
CQLSH 命令:
docker run -it -e CQLSH_HOST=$(docker inspect --format='{{ .NetworkSettings.IPAddress}}' cassandra-node-0) --name cassandra-client --entrypoint=cqlsh cassandra
我尝试在同一台电脑的 WSL2 中使用 ubuntu 中的 cqlsh 连接 cassandra 节点。
我没有更改所有 *.yaml 文件,只使用 Docker Env。
当我将节点的 docker 网络 ip 插入到 CQLSH_HOST 时,cqlsh 成功连接节点。
但是,当我插入我的私有 ip,public ip 或 127.0.0.1 时,cqlsh 被拒绝连接到节点。
当来自不同网络的节点连接时,这显示了相同的问题。
我想我缺少一些设置 Docker Env.
我缺少什么设置?
[更新] 我在防火墙中添加了一些端口转发规则但同样的问题。
[更新 2] docker ps -a
结果:
0.0.0.0:7000-7001->7000-7001/tcp, :::7000-7001->7000-7001/tcp, 0.0.0.0:7199->7199/tcp, :::7199->7199/tcp, 0.0.0.0:9042->9042/tcp, :::9042->9042/tcp, 0.0.0.0:9160->9160/tcp, :::9160->9160/tcp
尝试在 运行 Cassandra 时添加 --hostname
和 --network
。例如:
$ docker run --rm -d
--name cassandra-node-0
--hostname cassandra-node-0
--network cassandra-node-0
您会发现通过添加以下内容可以更轻松地通过 cqlsh 进行连接:
--network cassandra-node-0
-e CQLSH_HOST=cassandra-node-0
到您的 docker run
命令。干杯!