Ошибка: сброс соединения по одноранговому узлу при подключении к кэш-памяти Elastic с использованием метода stunnal

Я использую эластичный кеш одноузлового шарда Redis 4.0 более поздней версии.

Я включил In-Transit Encryption и дал маркер авторизации redis.

По этой ссылке я создал один бастионный хост со станналом

https://aws.amazon.com/premiumsupport/knowledge-center/elasticache-connect-redis-node/

Я могу подключиться к узлу Redis эластичного кэша, используя следующий способ

redis-cli -h имя хоста -p 6379 -a мой пароль

и я могу сделать Telnet также. НО, когда я пинг (ожидаемый ответ "PONG") на Redis-Cli после подключения, это дает

"Ошибка: сброс соединения по пиру"

Я проверил группу безопасности с обеих сторон. Любая идея? Машина Bastion Host Ubuntu 16.04

2 ответа

Решение

Как я уже упоминал в вопросе, я выполнял команду следующим образом:

redis-cli -h имя хоста -p 6379 -a мой пароль

Правильный способ подключения к кластеру ElastiCache через stunnel должен использовать "localhost" в качестве адреса хоста, например:

redis-cli -h localhost -p 6379 -a мой пароль

Существует объяснение использования адреса localhost:

когда вы создаете туннель между вашим бастионным сервером и хостом ElastiCache через stunnel, программа запускает службу, которая прослушивает локальный порт TCP (6379), инкапсулирует соединение с использованием протокола SSL и передает данные между локальным сервером и сервером. удаленный узел.

вам нужно запустить stunnel, проверить, прослушивает ли служба адрес localhost (127.0.0.1), и подключиться, используя "localhost" в качестве адреса назначения: "

  1. Старт воронки.

    $ sudo stunnel /etc/stunnel/redis-cli.conf

  2. Используйте команду netstat для подтверждения запуска туннелей:

    $ netstat -tulnp | grep -i stunnel

  3. Теперь вы можете использовать redis-cli для подключения к зашифрованному узлу Redis с использованием локальной конечной точки туннеля:

    $ redis-cli -h localhost -p 6379 -a MySecretPassword

    localhost:6379> установить foo "bar"

    Хорошо

    localhost:6379> получить фу

    "бар"

"Ошибка: сброс соединения по пиру" означает, что Redis убивает ваше соединение, не отправляя никакого ответа.

Одна из возможных причин - вы пытаетесь подключиться к узлу Redis без использования SSL, так как ваше соединение будет отклонено сервером Redis без ответа [1]. Убедитесь, что вы подключаетесь через правильный порт в туннельном прокси. Если вы подключаетесь напрямую с хоста бастиона, вы должны использовать локальный хост.

Другой вариант заключается в том, что вы неправильно настроили свой stunnel, чтобы он не включал версию SSL, поддерживаемую Redis. Вы должны дважды проверить, что файл конфигурации точно такой же, как тот, который приведен в документации по поддержке.

Если это не решит вашу проблему, вы можете попытаться создать клиентскую базу, включенную в открытый исходный код AWS.[2] Вам нужно проверить репозиторий, следовать инструкциям в файле readme, а затем выполнить команду BUILD_SSL=yes, выполнить redis-cli.

[1] https://github.com/madolson/redis/blob/unstable/src/ssl.c#L464[2] https://github.com/madolson/redis/blob/unstable/SSL_README.md

Скорее всего, в экземпляре ElastiCache Redis используется шифрование при передаче и шифрование в состоянии покоя, и по умолчанию интерфейс командной строки Redis несовместим с шифрованием.

Для подключения кластера Redis вам необходимо настроить stunnel

https://datanextsolutions.com/blog/how-to-fix-redis-cli-error-connection-reset-by-peer/

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