Назад | Перейти на главную страницу

Проверка работоспособности для обнаружения мастера redis из балансировщика нагрузки google tcp

Я пытаюсь настроить внутренний балансировщик нагрузки TCP Google. Группа экземпляров за этим lb состоит из процессов redis-server, прослушивающих порт 6379. Из этих экземпляров redis только один является главным.

Проблема: Добавить проверку работоспособности TCP для обнаружения мастера redis и заставить lb перенаправлять весь трафик только на мастер redis.

Подходить: Добавлена ​​проверка работоспособности TCP для порта 6379. Для отправки команды role чтобы обработать redis-server и проанализировать ответ, я использую дополнительные параметры, указанные в проверке работоспособности. Пожалуйста, проверьте скриншот Вот.

Результат: Проверка работоспособности у всех не работает. Если я удалю необязательные параметры запроса / ответа, проверка работоспособности начнется для всех.

Отладка:

  1. Подключился к lb с помощью netcat и выдал команду role, он отправляет ответ, начиная с *3(для мастера) и *5(для раба) как и ожидалось.
  2. Вы вошли в экземпляр и остановили процесс redis-server. Началось прослушивание порта 6379 с помощью nc -l -p 6379 чтобы проверить, что именно получено на стороне экземпляра при проверке работоспособности. Он действительно получает role\r\n.
  3. После шага 2 перезапустил redis-server и запустил MONITOR в redis-cli, чтобы посмотреть журнал команд, полученных этим процессом. Здесь нет журнала role. Это означает, что экземпляр получает данные (role\r\n) через tcp, но не получен процессом redis-cli (согласно MONITOR команда) или что-то еще происходит. Пожалуйста помоги.