Docker-контейнер (mysqld-exporter) не может получить доступ к другому Docker-контейнеру (mysql) на одном сервере
В моей (упрощенной) настройке у меня есть 2 Сервера, A и B (и другие, которые ведут себя как B), и мой локальный компьютер. На каждом из серверов mysql
база данных и mysqld-exporter
Прометей-экспортер должен работать как докер-контейнер. Контейнеры не связаны, но общаются через сеть через открытый порт.
Серверы управляются инструментом и поэтому содержат одинаковые версии программ с одинаковыми настройками, такими как порты, сетевое имя докера. Разница заключается в именах хостов, 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
как переменная окружения, на сервере A
, B
и локально подключиться к серверу A
, Теперь контейнер работает и подключается к серверу А, как и ожидалось, с моей локальной машины и с сервера. B
, но все же не из A
, Поэтому я предполагаю, что база данных работает нормально (не перегружена).
По каким причинам docker-контейнер не работает на компьютере A
? У меня заканчиваются идеи, что искать.
Если какая-либо необходимая информация отсутствует, пожалуйста, дайте мне знать!
РЕДАКТИРОВАТЬ:
Под "рукой" я имею в виду команду docker docker run -d -p 9104:9104 -e DATA_SOURCE_NAME="USERNAME:PASSWORD@(SERVER_URL:MYSQL_PORT)/" prom/mysqld-exporter:v0.10.0
выполняется в консоли, которая работает для подключения к A из B и localhost, но не A.
Как объяснено, URL-адрес сервера также должен работать на сервере A, поскольку B и localhost используют один и тот же URL-адрес для подключения к базе данных.