По документации они советуют команда монитора. Но это снижает производительность на 50% для всей системы, и как мне это сделать? Что делать, используя SSH, пока я ничего не вижу?
Скажем, у меня есть 3 сервера: 1 с мастером Redis, 1 с подчиненным Redis и один с моим веб-сайтом, запрашивающим мастер Redis.
Как я могу с сервера моего веб-сайта принять решение о переходе на подчиненное устройство, отправив SLAVEOF NO ONE
команда?
Моим первым шагом было бы поставить какую-то проверку тайм-аута с помощью простого пинга, просто чтобы убедиться, что сервер в сети. Но конкретно для Redis я понятия не имею.
Вы можете подключиться с проверяющего узла с помощью Redis API и отправить команду redis под названием «ping».
Это скажет вам, отвечает ли он. Однако вы также должны быть уверены, что разговариваете с мастером, поэтому я бы рекомендовал запустить команду info, чтобы получить эту информацию. Если они оба не работают, узел отключен.
Однако я бы также посоветовал вам не всегда предполагать, что один и тот же узел является главным при каждой попытке подключения. Используя информацию от обоих, вы можете быть более уверены в разговоре с мастером, когда захотите.
Частично это означает, что нужно быть готовым к тому, чтобы понять, кто встал, а кто нет.
Или, в зависимости от вашего использования, вы можете подумать о twemproxy от хороших людей из твиттера. Или программный балансировщик нагрузки, такой как balance.