Назад | Перейти на главную страницу

Удаленное подключение к ElastiCache - Redis

Мы используем ElastiCache - Redis для нашего сайта, нам нужно очистить кеш Redis, и когда я пытаюсь подключиться к моему ElastiCache - Redis удаленно с помощью этой команды с любого ПК

redis-cli -h example-redis-1.example.0001.euw1.cache.amazonaws.com -p 6379

Всегда говорится:

Не удалось подключиться к Redis по адресу example-redis-1.example.0001.euw1.cache.amazonaws.com:6379: Соединение отказано, не подключено>

Я убедился, что входящее правило разрешает 6379 с любого IP-адреса, а также попытался отредактировать /etc/redis.conf, чтобы добавить привязку example-redis-1.example.0001.euw1.cache.amazonaws.com, но даже после того, как ошибка остается тем же.

Доступ к кластерам ElastiCache возможен только непосредственно из VPC, в котором они находятся. Это связано с тем, что ElastiCache не является защищенной службой.

Чтобы подключиться к вашему ElastiCache удаленно, вам необходимо пройти через сервер-бастион или NAT. AWS создал инструкции здесь:

http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/Access.Outside.html

Чтобы использовать бастион, вы должны подключиться по SSH к своему экземпляру бастиона EC2, который находится в вашем VPC. После подключения вы можете туннелировать подключение ElastiCache со своего ПК или подключиться к кешу из командной строки бастиона.

Шаг 1:

ssh -f -N -L6379:<your redis node endpoint>:6379 <your EC2 node that you use to connect to redis>

Пример : ssh -f -N -L6379:redis.aps1.cache.amazonaws.com:6379 ubuntu@58.12.73.10

Шаг 2:

redis-cli -h 127.0.0.1 -p 6379

Причина, по которой вы не можете подключиться к узлам Elasticache, заключается в том, что DNS-имя или конечная точка разрешаются только в IP-адреса, принадлежащие VPC CIDR (не общедоступные или эластичные IP-адреса). Поскольку эти IP-адреса не являются общедоступными, соединение не может быть установлено через Интернет.

Вам нужен способ установить маршрут в Интернет, чтобы иметь доступ к узлу. Это можно сделать с помощью VPN или с помощью настроек NAT, как сообщил @ "Matt Houser"

Я не пробовал туннелирование ssh, но оно тоже должно работать. Однако я не уверен в поведении Encryption-In-Transit в этом случае, поэтому нужно попробовать.

Вы также можете развернуть сервер OpenVPN Access в этом VPC. Более подробную информацию можно найти в Использование VPN-сервера для подключения к AWS статья

Самый простой способ отследить проблему и исправить ее.
1. Можете ли вы подключиться к redis instance на порт 6379.
2. Если нет, проверьте входящие группы безопасности.
3. Если да, проверьте, есть ли у вас encryption at rest и encryption in transit проверено во время установки Redis
4. Если да, redis-cli не будет работать на SSL, вам нужно иметь stunnel настроить.

Следуйте приведенному ниже руководству от AWS, чтобы настроить stunnel и подключиться к вашему экземпляру Redis.

https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/in-transit-encryption.html#connect-tls