Mysql-Proxy не отказывает (?)

Это первый раз, когда я использую MySQL-прокси, и я испытываю странное поведение, которое мне было интересно, если сообщество решило это раньше.

У меня mysql-proxy (0.8.2), работающий на Amazon linux (в ec2), подключенный к 2 серверам mysql. Мой клиент Java может подключиться к прокси и балансировка нагрузки работает нормально.

Моя проблема заключается в следующем: у меня есть клиент, который подключен (через прокси-сервер) к серверу А. Он прекрасно работает, пока я не протестирую отработка отказа. Когда я закрываю сервер A и клиент пытается выполнить простую команду вставки (для уже установленного соединения), я ожидал, что прокси перенаправит запрос на сервер B. Однако я получаю это исключение:

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Сбой линии связи.

Клиент в этом случае - программа Java, использующая mysql-connector-java-5.1.17-bin.jar

Есть идеи как решить это или я что-то здесь упускаю?

1 ответ

Вот обновление по этому вопросу, на случай, если некоторые другие имеют такую ​​же проблему.

Кажется, что MySQL-прокси проверяет состояние на внутреннем сервере, когда клиент подключается к нему. Он не выполняет никаких keepalive\heartbeat с DB. Я пытался заставить такое поведение, используя сценарии lua, но с треском провалился.

Потенциальной альтернативой может быть использование HAProxy и включение xinted mysqlchecks. Я не пробовал это лично. Мы, вероятно, в конечном итоге создадим клиент прокси-соединения, который обернет java.sql.Connection и будет взаимодействовать с mysql-proxy соответствующим образом.

Дайте мне знать, если вы нашли другие способы достижения вышеуказанного.

Другие вопросы по тегам