Connect the Cassandra container to application web container failed - Error: 202 Connecting to Node
Connect the Cassandra container to application web container failed - Error: 202 Connecting to Node
所以,我创建了两个 docker 的图像,我想用 docker 作曲家将一个连接到另一个。第一张图片是 Cassandra 3.11.11(来自官方中心 docker),另一张是我自己用 tomcat 版本 9.0.54 和我的应用程序 spring boot.[=15 创建的=]
我运行下面的docker-compose.ylm连接两个容器,其中cassandra:latest 是 cassandra 的图像,centos7-tomcat9-myapp
是我的应用程序网络的图像。
version: '3'
services:
casandra:
image: cassandra:latest
myapp:
image: centos7-tomcat9-myapp
depends_on:
- casandra
environment:
- CASSANDRA_HOST=cassandra
我 运行 启动应用程序网络图像的命令行:docker run -it --rm --name fe3c2f120e01 -p 8888:8080 centos7-tomcat9-app
.
在控制台日志中 spring 引导显示以下错误。它发生了,因为 myapp 的容器无法连接到 Cassandra 的容器。
2021-10-15 15:12:14.240 WARN 1 --- [ s0-admin-1]
c.d.o.d.i.c.control.ControlConnection : [s0] Error connecting to
Node(endPoint=127.0.0.1:9042, hostId=null, hashCode=47889c49), trying
next node (ConnectionInitException: [s0|control|connecting...]
Protocol initialization request, step 1 (OPTIONS): failed to send
request (io.netty.channel.StacklessClosedChannelException))
我做错了什么?
编辑
这是关于 cassandra 图像的节点工具状态:
[root@GDBDEV04 cassandradb]# docker exec 552d359d177e nodetool status
Datacenter: datacenter1
=======================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
-- Address Load Tokens Owns (effective) Host ID Rack
UN 172.18.0.3 84.76 KiB 16 100.0% 685b6e0a-13c2-4d41-ba99-f3b0fa94477c rack1
编辑 2
我需要将 Cassandra 的数据库图像与 Web 应用程序图像连接起来。连接微服务是不同的。我试图将 127.0.0.0(在 cassandra.yaml 内)更改为 0.0.0.0(仅用于测试),但错误仍然存在。我认为我的 docker-compose.yml 中肯定缺少某些东西。但是,我不知道是什么。
终于找到错误了。就我而言,我需要修复添加 Cassandra 和 Tomcat 端口的 docker-compose.yml
文件。在我的 application.properties(spring 引导配置文件)中,我更改了集群的名称。
Docker-compose.yml:
version: '3'
services:
cassandra:
image: cassandra:latest
ports:
- "9044:9042"
myapp:
image: centos7-tomcat9-myapp
ports:
-"8086:8080"
depends_on:
- cassandra
environment:
- CASSANDRA_HOST=cassandra
Application.config :
# CASSANDRA (CassandraProperties)
cassandra.cluster = Test Cluster
cassandra.contactpoints=${CASSANDRA_HOST}
这个问题帮我解决了我的问题:
所以,我创建了两个 docker 的图像,我想用 docker 作曲家将一个连接到另一个。第一张图片是 Cassandra 3.11.11(来自官方中心 docker),另一张是我自己用 tomcat 版本 9.0.54 和我的应用程序 spring boot.[=15 创建的=]
我运行下面的docker-compose.ylm连接两个容器,其中cassandra:latest 是 cassandra 的图像,centos7-tomcat9-myapp
是我的应用程序网络的图像。
version: '3'
services:
casandra:
image: cassandra:latest
myapp:
image: centos7-tomcat9-myapp
depends_on:
- casandra
environment:
- CASSANDRA_HOST=cassandra
我 运行 启动应用程序网络图像的命令行:docker run -it --rm --name fe3c2f120e01 -p 8888:8080 centos7-tomcat9-app
.
在控制台日志中 spring 引导显示以下错误。它发生了,因为 myapp 的容器无法连接到 Cassandra 的容器。
2021-10-15 15:12:14.240 WARN 1 --- [ s0-admin-1] c.d.o.d.i.c.control.ControlConnection : [s0] Error connecting to Node(endPoint=127.0.0.1:9042, hostId=null, hashCode=47889c49), trying next node (ConnectionInitException: [s0|control|connecting...] Protocol initialization request, step 1 (OPTIONS): failed to send request (io.netty.channel.StacklessClosedChannelException))
我做错了什么?
编辑
这是关于 cassandra 图像的节点工具状态:
[root@GDBDEV04 cassandradb]# docker exec 552d359d177e nodetool status
Datacenter: datacenter1
=======================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
-- Address Load Tokens Owns (effective) Host ID Rack
UN 172.18.0.3 84.76 KiB 16 100.0% 685b6e0a-13c2-4d41-ba99-f3b0fa94477c rack1
编辑 2 我需要将 Cassandra 的数据库图像与 Web 应用程序图像连接起来。连接微服务是不同的。我试图将 127.0.0.0(在 cassandra.yaml 内)更改为 0.0.0.0(仅用于测试),但错误仍然存在。我认为我的 docker-compose.yml 中肯定缺少某些东西。但是,我不知道是什么。
终于找到错误了。就我而言,我需要修复添加 Cassandra 和 Tomcat 端口的 docker-compose.yml
文件。在我的 application.properties(spring 引导配置文件)中,我更改了集群的名称。
Docker-compose.yml:
version: '3'
services:
cassandra:
image: cassandra:latest
ports:
- "9044:9042"
myapp:
image: centos7-tomcat9-myapp
ports:
-"8086:8080"
depends_on:
- cassandra
environment:
- CASSANDRA_HOST=cassandra
Application.config :
# CASSANDRA (CassandraProperties)
cassandra.cluster = Test Cluster
cassandra.contactpoints=${CASSANDRA_HOST}
这个问题帮我解决了我的问题: