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 соответствующим образом.
Дайте мне знать, если вы нашли другие способы достижения вышеуказанного.