Мы используем 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