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

Redis и HAProxy - обновленные настройки конфигурации?

Установлено 2 экземпляра Redis, один из которых является мастером. Это работает замечательно и без головной боли.

Теперь я пытаюсь заставить мои узлы HAProxy / keepalived обрабатывать какое-то аварийное переключение.

1) Возможно ли это - настроить один узел как главный, а другой как резервный? Вот что я делаю со своими узлами MySQL:

        server 192.168.32.33 192.168.32.33:3306 check backup
        server 192.168.32.34 192.168.32.34:3306 check

2) Если да, то есть ли обновленная документация по этому поводу? Я следил за документацией в блоге HAProxy, как указано ниже:

Статья ServerFault: Redis sentinel + отказоустойчивость HAProxy

Но узлы отображаются как неработающие, хотя я могу использовать их через интерфейс командной строки и другие клиенты:

снимок сбойных узлов Redis в веб-интерфейсе прокси HA

Используя CLI, если я введу команды в tcp-check, ответы будут соответствовать ожидаемым возвратам в conf. (примечание: у нас еще не включена аутентификация на узлах Redis).

Вот мой haproxy.cfg - начиная с последней строки моего раздела MySQL

        server 192.168.32.34 192.168.32.34:3306 check 

defaults REDIS
        mode tcp
        timeout connect  4s
        timeout server  30s
        timeout client  30s

frontend ft_redis
        bind *:6379 name redis
        default_backend bk_redis

backend bk_redis
        option tcp-check
        tcp-check send PINGrn
        tcp-check expect string +PONG
        tcp-check send info replicationrn
        tcp-check expect string role:master
        tcp-check send QUITrn
        tcp-check expect string +OK
        server Site2DB3 192.168.32.36:6379 check inter 1s
        server Site1DB3 192.168.22.36:6379 check inter 1s

Также убедитесь, что вы избегаете пробелов после отправки tcp-check, например:

tcp-check send info\ replication\r\n
PINGrn

должен прочесть

PING\r\n

То же самое для других сообщений tcp-check. Вы отправляете PINGrn вместо того PING\r\n, недопустимая команда, которая вызовет ошибку и приведет к сбою проверки UP.

Для REDIS с аутентификацией добавьте следующее:

tcp-check send AUTH\ xxx_xxx\r\n