Docker容器(mysqld-exporter)无法访问一台服务器上的其他docker容器(mysql)

Docker容器(mysqld-exporter)无法访问一台服务器上的其他docker容器(mysql)

在我的(简化)设置中,我有 2 个服务器,A 和 B(以及其他行为类似于 B 的服务器)和我的本地计算机。在每个服务器上,-databasemysqlmysqld-exporterprometheus-exporter 应该作为 docker 容器运行。容器没有链接,而是通过打开的端口通过网络进行通信。

服务器由工具管理,因此包含相同版本的程序和相同的配置,如端口、docker 网络名称。区别在于主机名、ip 地址和其他特定于服务器的内容。

问题是,mysqld-exporter服务器上A生成日志消息:(level=error msg="Error pinging mysqld: dial tcp SERVER_IP_ADDRESS:3306: getsockopt: connection timed out" source="mysqld_exporter.go:268"其中 SERVER_IP_ADDRESS 是服务器的 IP),而导出器B工作正常。

我还尝试使用 手动创建容器,docker run并在服务器 上设置DATA_SOURCE_NAME环境变量AB并在本地连接到服务器A。 现在,容器可以正常工作,并按预期从我的本地计算机和服务器 连接到服务器 A B,但仍然不能从 连接到服务器AA 。 因此,我认为数据库工作正常(没有超载)。

docker-container 在机器上无法运行的原因是什么A?我不知道该寻找什么。

如果缺少任何必要的信息,请告诉我!

编辑:

我说的“手动”是指docker run -d -p 9104:9104 -e DATA_SOURCE_NAME="USERNAME:PASSWORD@(SERVER_URL:MYSQL_PORT)/" prom/mysqld-exporter:v0.10.0在控制台中执行的 docker 命令,它可以从 B 和本地主机连接到 A,但不能连接到 A。

如上所述,服务器 URL 也应该在服务器 A 上起作用,因为 B 和本地主机使用相同的 url 连接到数据库。

相关内容