Отказался от соединения с Redis Master Slave с Springboot - PullRequest
0 голосов
/ 16 февраля 2019

У меня есть главный и подчиненный порты 3824 (ведущий) и 3825 (ведомый).Тем не менее, когда я выключаю мастер, операция чтения выдает исключение соединения, отклоненное.Ниже моя конфигурация.Как я могу гарантировать, что даже если я убью хозяина, я все равно буду читать от раба.Где я ошибся.

@Bean
public RedisConnectionFactory redisFactory() {

LettuceClientConfiguration config = LettuceClientConfiguration.builder().readFrom(ReadFrom.SLAVE_PREFERRED).buld();
RedisStandaloneConfiguration serverConfig = new RedisStandaloneConfiguration("localhost",3825);
    LettuceConnectionFactory fact = new LettuceConnectionFactory(serverConfig, config);
    return fact;
}

1 Ответ

0 голосов
/ 16 февраля 2019

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

Redis Sentinel при передаче на RedisSentinelConfiguration, действующей какмост между вашим приложением и узлами Redis Master-Slave, работающими как в группе серверов.

Он будет в основном выступать в качестве поставщика конфигурации.Если происходит аварийное переключение, Sentinels сообщит о новом адресе

Spring Data Redis Support Sentinel Support :

/**
 * Lettuce
 */
@Bean
public RedisConnectionFactory lettuceConnectionFactory() {
  RedisSentinelConfiguration sentinelConfig = new RedisSentinelConfiguration()
  .master("mymaster")
  .sentinel("127.0.0.1", 26379)
  .sentinel("127.0.0.1", 26380);
  return new LettuceConnectionFactory(sentinelConfig);
}

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...