В настоящее время на нашем сервере работает несколько виртуальных машин с VMWare. Три из этих виртуальных машин работают под управлением Docker Swarm и имеют несколько служб / контейнеров, которые подключаются к MariaDB. Эта база данных установлена на другой виртуальной машине, а не в контейнере docker.
В журналах базы данных мы находим следующие предупреждения:
3389 [Warning] Aborted connection 3389 to db: '<db>' user: '<user>' host: '<ip>' (Got timeout reading communication packets)
Мы можем видеть это, когда сервис от узла 1 связывается с базой данных, база данных имеет 10 соединений с IP-адресом узла 1. Когда затем служба из узла 2 связывается с базой данных, все соединения с узлом 1 немедленно сбрасываются.
Наши службы используют Spring Boot 2. Мы запускаем Docker версию 18.09.7 в Ubuntu 18.04.2.
Что мы пробовали:
- с использованием «extra_hosts» в нашем docker -создать файл для связи с базой данных через DNS-имя, а не IP-адрес. Это ничего не изменило.
- с использованием "endpoint_mode: dnsrr" в нашем файле compose. Это не позволило нам открыть порты в нашем контейнере, что нам абсолютно необходимо.
- изменив настройку sysctl на каждом из хостов, чтобы увеличить доступные сокеты и ускорить повторное использование этих сокетов. Это ничего не изменило.
Docker создать файл (на самом деле он содержит гораздо больше сервисов, похожих на этот, у всех одинаковая проблема с базой данных):
version: "3.7"
services:
ovinto-api:
image: <private_registry>/example-api:example-dev
hostname: example-api
ports:
- 8203:8090
deploy:
resources:
limits:
memory: 768M
reservations:
memory: 256M
replicas: 1
update_config:
order: start-first
networks:
- example-network
extra_hosts:
- "example-mongodb-dev:<ip>"
- "example-mysql-dev:<ip>"
- "example-old-dev:<ip>"
- "example-rabbitmq-dev:<ip>"
- "example-redis-dev:<ip>"
- "example-swarm-dev:<ip>"
- "example-swarm-dev:<ip>"
- "example-swarm-dev:<ip>"
networks:
example-api:
driver: overlay
example-network:
driver: overlay
Кто-нибудь когда-либо имел эту проблему раньше? Или у вас есть представление о том, что может дать нам этот вопрос? Любой совет приветствуется