Подтвердить что ты не робот

Можете ли вы подключиться к Amazon Elasticache Redis за пределами Amazon

Я могу подключиться к экземпляру Redis Elasticache в VPC из экземпляров EC2, но я хотел бы знать, есть ли способ подключения к узлу Elasticache Redis вне экземпляров Amazon EC2, например, из моей локальной настройки dev или Экземпляры VPS, предоставленные другими поставщиками.

В настоящее время при попытке из моей локальной установки:

redis-cli -h my-node-endpoint -p 6379

Я получаю тайм-аут только через некоторое время.

4b9b3361

Ответ 1

Нет, вы не можете не прибегнуть к "хитростям", таким как туннель, который, возможно, подходит для тестирования, но убьет любую реальную выгоду от использования сверхбыстрого кэша с добавленной задержкой/накладными расходами.

... доступ к кластеру Amazon ElastiCache внутри или вне VPC запрещен для доступа из Интернета.

Отсюда: http://aws.amazon.com/elasticache/faqs/#Can_I_access_Amazon_ElastiCache_from_outside_AWS

РЕДАКТИРОВАТЬ 2018: Приведенный выше ответ был точным при написании, однако теперь с некоторыми настройками теперь можно получить доступ к кэшу redis извне, используя указания примерно на 1/2 пути вниз по этой странице: https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/accessing-elasticache.html

Ответ 2

Переадресация порта SSH должна сделать свое дело. Попробуйте запустить это от вашего клиента.

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

Тогда от вашего клиента

redis-cli -h 127.0.0.1 -p 6379

Меня устраивает.

Обратите внимание, что порт по умолчанию для redis - 6379 не 6739. Также убедитесь, что вы разрешите разрешить группу безопасности узла EC2, который вы используете для подключения к вашему экземпляру redis в вашей группе безопасности Cache.

Кроме того, AWS теперь поддерживает доступ к вашему кластеру. Больше информации здесь

Ответ 3

Эти ответы устарели.

Вы можете получить доступ к эластичному кешу вне AWS, выполнив следующие действия:

  1. Создайте экземпляр NAT в том же VPC, что и ваш кластер кэша, но в общедоступной подсети.
  2. Создайте правила группы безопасности для кластера кэша и экземпляра NAT.
  3. Утвердите правила.
  4. Добавьте правило iptables к экземпляру NAT.
  5. Убедитесь, что доверенный клиент может подключиться к кластеру.
  6. Сохраните конфигурацию iptables.

Более подробное описание см. В руководстве по aws:

https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/accessing-elasticache.html#access-from-outside-aws

Ответ 4

Не такой уж старый вопрос, я сам столкнулся с той же проблемой и решил ее:

Иногда, по соображениям разработки, вам нужно получить доступ извне (возможно, чтобы избежать многократного развертывания только для простого исправления ошибки?)

Amazon опубликовала новое руководство, которое использует EC2 в качестве прокси для внешнего мира:

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

Удачи!

Ответ 5

Мы используем HAProxy в качестве зарезервированного прокси-сервера.

Ваша система вне AWS --- > Интернет → HAProxy с открытым IP → Amazon Redis (Elasticache)

Обратите внимание, что есть еще одна веская причина сделать это (в это время)

Как мы используем клиент node.js, который не поддерживает прошивку Amazon DNS, клиентский драйвер не поддерживает dns снова искать. Если redis терпит неудачу, клиентский драйвер будет поддерживать соединение со старым мастером, который является подчиненным после отказа.

Используя HAProxy, он решил эту проблему.

Теперь, используя новейший драйвер ioredis, он поддерживает восстановление амазонки dns.

Ответ 6

Кстати, если кто-то хочет решение Windows EC2, попробуйте их в командной строке DOS (на упомянутых машинах Windows EC2):

Добавить перенос портов

C:\Users\Administrator > netsh interface portproxy add v4tov4 listenport=6379 listenaddress=10.xxx.64.xxx connectport=6379 connectaddress=xxx.xxxxxx.ng.0001.use1.cache.amazonaws.com

Список портов, перенаправленных портами

C:\Users\Administrator > netsh interface portproxy show all

Слушайте ipv4: Подключитесь к ipv4:

Порт адреса Порт порта


10.xxx.128.xxx 6379 xxx.xxxxx.ng.0001.use1.cache.amazonaws.com 6379

Чтобы удалить переадресацию портов

C:\Users\Administrator > netsh interface portproxy delete v4tov4 listenport=6379 listenaddress=10.xxx.128.xxx

Ответ 7

Это сплошной node script, который сделает для вас всю грязную работу. Протестировано и проверено, что это сработало.

https://www.npmjs.com/package/uzys-elasticache-tunnel

Как использовать Использование: uzys-elasticache-tunnel [опции] [команда]

Команды

start [filename]  start tunneling with configuration file (default: config.json)
stop              stop tunneling
status            show tunneling status

Параметры:

-h, --help     output usage information
-V, --version  output the version number

Пример использования

  • start - uzys-elasticache-tunnel start./config.json
  • остановка - остановка uzys-эластика-туннель Статус
  • - статус uzys-elasticache-tunnel

Ответ 8

Невозможно напрямую получить доступ к классическому кластеру из экземпляра VPC. Обходным решением будет настройка NAT в классическом экземпляре.

У NAT должен быть простой прокси tcp

YourIP=1.2.3.4
YourPort=80
TargetIP=2.3.4.5
TargetPort=22

iptables -t nat -A PREROUTING --dst $YourIP -p tcp --dport $YourPort -j DNAT \
--to-destination $TargetIP:$TargetPort
iptables -t nat -A POSTROUTING -p tcp --dst $TargetIP --dport $TargetPort -j SNAT \
--to-source $YourIP
iptables -t nat -A OUTPUT --dst $YourIP -p tcp --dport $YourPort -j DNAT \
--to-destination $TargetIP:$TargetPort