Я настраиваю приложение Spring Boot 3 (с использованием Gradle и Java 17) с Redis Sentinel и клиентом Lettuce (нереактивным, с RedisTemplate).
Наша инфраструктурная группа предоставила установку Redis Sentinel (1 узел) с главным устройством и репликой, а также выделенным пользователем и паролем (+ACL). Однако при запуске приложения мы сталкиваемся с ошибкой проверки работоспособности.
PoolException: Could not get a resource from the pool
RedisConnectionException: Unable to connect to redis-sentinel://test:****@?sentinelMasterId=&timeout=3s
RedisCommandExecutionException: NOPERM User test has no permissions to run the 'sentinel|replicas' command.
Команда инфраструктуры подтверждает, что они намеренно ограничили эту команду, поскольку считают, что она служит реактивной цели, когда они обнаружили ошибку, которая не была исправлена в последних версиях...
Они также предложили настроить Lettuce так, чтобы она не использовала эту команду. Это правда?
Мой вопрос: Как настроить клиент Lettuce в нереактивном приложении Spring Boot для работы без необходимости разрешения SENTINEL REPLICAS? Существуют ли определенные настройки, такие как стратегия ReadFrom или альтернативный метод конфигурации, которые позволяют избежать этой команды?
Я уверен, что это стандартное поведение как в реактивном, так и в нереактивном режимах Lettuce, и вы не можете обойтись без этой команды.
Моя конфигурация: я использую стандартную конфигурацию RedisSentinelConfiguration для настройки LettuceConnectionFactory и ЧитатьFrom.Master.
final var factory = new LettuceConnectionFactory(sentinelConfig, lettuceClientConfiguration);
factory.setShareNativeConnection(false);
factory.setValidateConnection(false); --> false validate,
Подробнее здесь: https://stackoverflow.com/questions/797 ... n-user-lac