• Русский
  • Как получить доступ к экземпляру Sentinel

    Настоящее руководство демонстрирует, как установить соединение с экземплярами Redis Sentinel, используя стандартные библиотека клиента. В примерах представлены детали конфигурации для go-redis, Jedis, Lettuce и Redisson. Для получения дополнительных вариантов клиентов обратитесь к Соединение с Redis API библиотеками клиентов.

    Содержание

    Требования к аутентификации

    Экземпляры Redis Sentinel реализуют следующие варианты аутентификации:

    • Аутентификация по паролю: При настройке с паролем все клиентские соединения должны предоставлять действительные учетные данные
    • Доступ без пароля: Если опция Установить пароль отключена во время создания экземпляра, клиенты могут подключаться без аутентификации
    Лучшие практики безопасности

    Для производственных сред настоятельно рекомендуется реализовать аутентификацию по паролю для защиты ваших данных. Обратитесь к Управление пользователями для получения подробных инструкций по настройке и поддержанию безопасных учетных данных.

    Справочная информация о конечных точках подключения

    Доступ во внутреннем кластере

    Для приложений, развернутых в одном и том же кластере Kubernetes, доступны внутренние конечные точки доступа через вкладку Метод доступа в разделе Доступ внутри кластера.

    ПараметрОписание
    Адрес соединенияИмя сервиса Kubernetes и комбинации портов для Redis Sentinel.

    Для доступа из внешнего кластера

    Для приложений, подключающихся извне окружения Kubernetes, внешние конечные точки доступа доступны, если они настроены во время создания экземпляра. Эти конечные точки можно найти на вкладке Метод доступа в разделе Доступ извне кластера.

    ПараметрОписание
    Адрес доступа к узлу SentinelВнешние IP-адреса и порты для подов sentinel в Redis Sentinel, позволяя подключение извне сети Kubernetes.

    Интерактивная отладка

    На странице сведений об экземпляре нажмите Терминальная консоль в правом верхнем углу и используйте команду redis-cli для подключения к каждому узлу Redis.

    redis-cli -h <internal-routing-ip> -p 6379

    Вот пример отладки. Пример сессии отладки демонстрирует установку/получение:

    192.168.0.10:6379> set a 1
    OK
    192.168.0.10:6379> get a
    "1"
    192.168.0.10:6379>

    Примеры интеграции клиента

    Следующие примеры демонстрируют лучшие практики для подключения к экземплярам Redis Sentinel с использованием различных библиотек клиент.

    Примечание: Имя кластера master-slave, зарегистрированное в режиме Sentinel, фиксировано на mymaster.

    go-redis
    Jedis
    Lettuce
    Redisson
    package main
    
    import (
        "context"
        "fmt"
        "time"
    
        // Рекомендуется периодически обновлять последнюю версию клиента для получения последних исправлений ошибок.
        "github.com/redis/go-redis/v9"
    )
    
    func main() {
        client := redis.NewFailoverClient(&redis.FailoverOptions{
            SentinelAddrs: []string{"<address>"},
            MasterName:    "mymaster",
            Password:      "<password>",
            OnConnect: func(ctx context.Context, conn *redis.Conn) error {
                ctx, cancel := context.WithTimeout(ctx, 500*time.Millisecond)
                defer cancel()
                return conn.Ping(ctx).Err()
            },
            // Имя клиента для идентификации и отслеживания
            ClientName: "go-demo",
            // Использование контекста для управления временем ожидания
            ContextTimeoutEnabled: true,
            // Максимальное количество попыток
            MaxRetries: 3,
            // Минимальное время ожидания при повторных попытках
            MinRetryBackoff: 20 * time.Millisecond,
            // Максимальное время ожидания при повторных попытках
            MaxRetryBackoff: 200 * time.Millisecond,
            // Время ожидания соединения
            DialTimeout: 3 * time.Second,
            // Время ожидания чтения
            ReadTimeout: 5 * time.Second,
            // Время ожидания записи
            WriteTimeout: 10 * time.Second,
            // Размер пула соединений для каждого узла
            PoolSize: 100,
            // Максимальное время ожидания для доступных соединений в пуле
            PoolTimeout: time.Second,
            // Минимальное количество неактивных соединений для каждого узла
            MinIdleConns: 5,
            // Максимальное количество неактивных соединений для каждого узла
            MaxIdleConns: 10,
            // Максимальное количество активных соединений для каждого узла
            MaxActiveConns: 100,
            // Максимальное время неактивности соединений
            ConnMaxIdleTime: time.Minute * 5,
        })
        defer client.Close()
    
        if val, err := client.Get(context.TODO(), "test").Result(); err != nil {
            panic(err)
        } else {
            fmt.Println(val)
        }
    }

    Для более подробной конфигурации, пожалуйста, обратитесь к документации сообщества.