Nodejs Azure Redis Cache зависает навсегда и читает ошибку ECONNRESET

Я создаю новый кэш Azure Redis, на создание которого уходит почти 5 минут. Я использую пакет node-redis, вот мой код

var client = redis.createClient(
  process.env.REDIS_PORT || 6379,
  process.env.REDIS_HOST || '127.0.0.1'
);
if(process.env.REDIS_HOST) {
  client.auth(process.env.REDIS_KEY);
}

Да, эти переменные среды установлены правильно, они просто на некоторое время зависают и выдают ошибку: сбой подключения Redis к mycache.redis.cache.windows.net:6380 - прочитайте ECONNRESET.

Теперь, когда я использую Redis-Cli, чтобы попытаться соединиться с redis-cli -h myhost -p 6380 -a the-auth-key он просто зависает в командной строке, и, кажется, соединение не установлено, но и ошибки нет. Это просто ничего не делает. Если я изменю порт и т.д., я получаю ошибку соединения. Так что мне сейчас интересно, что я делаю не так?

Я создал еще один кэш redis для другого региона (я взял самый большой, с 99,9 SLA и т. Д.). Тем не менее, никакое соединение невозможно.

Любая помощь будет оценена.

1 ответ

Решение

Для новых кэшей по умолчанию включена только конечная точка SSL (порт 6380). Некоторые клиенты (например, redis-cli) не поддерживают SSL. Вам необходимо проверить, поддерживает ли узел redis SSL. Вы получите ошибки, если попытаетесь подключиться к порту SSL с клиентом, который не поддерживает SSL.

Если вам нужно использовать клиент, не поддерживающий SSL, есть два варианта. Одним из них является создание туннеля SSL между локальной машиной и кэшем Redis с использованием приложения, такого как 'stunnel'. Я знаю, что stunnel хорошо работает для специальных сценариев, таких как redis-cli, но я не уверен, как он будет работать при рабочей нагрузке.

Второй вариант - включить конечную точку без SSL (порт 6379) на портале Azure. Однако мы не рекомендуем это для рабочих кэшей, поскольку ваш ключ доступа и данные будут отправлены в виде открытого текста.

Другие вопросы по тегам