redis-cli соединение с кластером Amazon ElastiCache Redis зависает - PullRequest
0 голосов
/ 27 августа 2018

Я установил и скомпилировал Redis из исходного кода и пытаюсь подключиться к кластеру Amazon ElastiCache (Redis).

Я могу без проблем подключиться к локальному хосту по умолчанию, но попытка подключиться к конечной точке AWS приводит к бесконечному зависанию.

По умолчанию:

$ redis-server /etc/redis.conf  # daemonized, uses localhost
$ redis-cli ping
PONG
$ sudo service redis_6379 status
Redis is running (12919)
$ redis-cli shutdown  # or sudo service redis_6379 stop

Теперь попытка подключения к конечной точке, копии из Документация AWS по теме :

redis-cli -c -h my_example_endpoint_name.eaogs8.ng.0001.use1.cache.amazonaws.com -p 6379 ping

Это зависает бесконечно, и ничего не выдается stderr / stdout.

(Обратите внимание, что это пример имени конечной точки; я подтвердил, что использую основную конечную точку, указанную на консоли AWS.)

Я подозреваю, что это может быть связано с настройками группы безопасности для кластера на стороне AWS, но я не уверен, что конкретно можно / нужно изменить. Я ценю предложения о том, что может блокировать соединение, и могу предоставить информацию о самом кластере по мере необходимости.

Ответы [ 2 ]

0 голосов
/ 08 мая 2019

Я также видел, как звонок на redis-cli бесконечно зависал, но в моем случае он не был вызван неправильно настроенными группами безопасности.

Вместо этого это произошло из-за того, что я создал свой кластер Redis с параметром «Шифрование в пути», установленным на «Да». Это означало, что моя конечная точка базы данных должна была быть доступна через туннель SSL, что redis-cli не делает.

Для моего приложения шифрование в пути фактически не требовалось, поэтому я создал новый кластер Redis с не выбранной опцией. Более подробную информацию о том, что вам нужно делать по-другому при использовании транзитного шифрования, можно найти здесь: https://aws.amazon.com/premiumsupport/knowledge-center/elasticache-connect-redis-node/

0 голосов
/ 27 августа 2018

Соединение было запрещено группами безопасности экземпляра EC2 и кластера ElastiCache, к которому он пытался подключиться, не выровнен должным образом.

Из документов AWS :

Все кластеры ElastiCache предназначены для доступа из экземпляра Amazon EC2. Наиболее распространенный сценарий - доступ к кластеру ElastiCache из экземпляра Amazon EC2 в том же виртуальном частном облаке Amazon (Amazon VPC).

Шаги, которые я предпринял, чтобы исправить это, были:

  1. Перейдите к ElastiCache Dashboard > Redis и нажмите на название кластера, о котором идет речь. Это покажет поле группы безопасности, где значением является идентификатор группы , такой как sg-x8xxxxxx.
  2. Перейдите к таблице групп безопасности в разделе https://console.aws.amazon.com/ec2> Сеть и безопасность> Группы безопасности. Найдите идентификатор группы на шаге 1 и запишите соответствующее имя группы .
  3. Перейдите к консоли управления EC2 по адресу https://console.aws.amazon.com/ec2> Экземпляры> Экземпляры. Если вы используете сервер для подключения к кластеру Redis, обратите внимание на поле «Группы безопасности». Это должно включать то, что Имя группы было от шага 2. Если это не так, вам нужно добавить эту группу безопасности. Установите флажок рядом с именем сервера, Действия> Сеть> Изменить группы безопасности. Добавьте имя группы безопасности, чтобы два компонента совместно использовали один и тот же VPC.

Теперь вы должны иметь возможность соединиться с чем-то вроде (пример):

redis-cli -c -h mycachecluster.eaogs8.0001.usw2.cache.amazonaws.com -p 6379 ping
...