繁体   English   中英

将 Cassandra 容器连接到应用程序 Web 容器失败 - 错误:202 连接到节点

[英]Connect the Cassandra container to application web container failed - Error: 202 Connecting to Node

所以,我创建了两个 docker 的图像,我想用 docker composer 将一个连接到另一个。 第一个镜像是 Cassandra 3.11.11(来自官方的 hub docker),另一个是我自己用 9.0.54 版的 tomcat 和我的应用程序 spring boot 创建的。

我运行下面的 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 boot 显示以下错误。 它发生了,因为 myapp 的容器无法连接到 Cassandra 的容器。

2021-10-15 15:12:14.240 警告 1 --- [ s0-admin-1] cdodiccontrol。 ControlConnection:[s0] 连接到节点时出错(endPoint=127.0.0.1:9042,hostId=null,hashCode=47889c49),尝试下一个节点(ConnectionInitException:[s0|control|connecting...] 协议初始化请求,步骤 1( OPTIONS): 发送请求失败 (io.netty.channel.StacklessClosedChannelException) )

我究竟做错了什么?

编辑

这是关于 cassandra 图像的 nodetool 状态:

[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 的 DB 图像与 Web 应用程序图像连接起来。 连接微服务就不一样了。 我试图将 127.0.0.0(在 cassandra.yaml 内)更改为 0.0.0.0(仅用于测试)并且错误仍然存​​在。 我认为我的 docker-compose.yml 中肯定缺少某些东西。 然而,我不知道是什么。

最后我发现了错误。 就我而言,我需要修复docker-compose.yml文件,添加 Cassandra 和 Tomcat 的端口。 在我的 application.properties(spring boot 配置文件)中,我更改了集群的名称。

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

应用程序配置:

# CASSANDRA (CassandraProperties)
cassandra.cluster = Test Cluster 
cassandra.contactpoints=${CASSANDRA_HOST}

这个问题帮助我解决了我的问题: Accessing docker container mysql databases

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM