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

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

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

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

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

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

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

    Внутренний доступ в кластере

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

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

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

    Для приложений, подключающихся из внешней среды Kubernetes, доступны конечные точки внешнего доступа, если они были настроены при создании экземпляра. Эти конечные точки можно найти во вкладке Access Method в разделе Access from outside the Cluster.

    ПараметрОписание
    Sentinel Node Access AddressВнешние IP-адреса и порты для подов sentinel в Redis Sentinel, обеспечивающие возможность подключения из внешней сети Kubernetes.

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

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

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

    Ниже приведен пример отладки. Пример сессии отладки с демонстрацией команд set/get:

    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",
            // Использование Context для контроля таймаута
            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)
        }
    }

    Для более подробной настройки обратитесь к community documentation.