• Русский
  • Как получить доступ к экземпляру 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-адреса и порты для pod-ов 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"
    
        // It is recommended to periodically upgrade to the latest version of the client for the latest bug fixes.
        "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()
            },
            // Client name for identification and tracking
            ClientName: "go-demo",
            // Using Context for timeout control
            ContextTimeoutEnabled: true,
            // Maximum number of retries
            MaxRetries: 3,
            // Minimum backoff time for retries
            MinRetryBackoff: 20 * time.Millisecond,
            // Maximum backoff time for retries
            MaxRetryBackoff: 200 * time.Millisecond,
            // Connection timeout
            DialTimeout: 3 * time.Second,
            // Read timeout
            ReadTimeout: 5 * time.Second,
            // Write timeout
            WriteTimeout: 10 * time.Second,
            // Connection pool size for each node
            PoolSize: 100,
            // Maximum wait time for available connections in the pool
            PoolTimeout: time.Second,
            // Minimum idle connections for each node
            MinIdleConns: 5,
            // Maximum idle connections for each node
            MaxIdleConns: 10,
            // Maximum active connections for each node
            MaxActiveConns: 100,
            // Maximum idle time for connections
            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.