Je peux me connecter à un instance Elasticache Redis dans un VPC à partir de instances EC2, mais j'aimerais savoir s'il existe un moyen de se connecter à un nœud Elasticache Redis en dehors d'instances Amazon EC2, telles que celles de ma configuration de développement locale ou d'instances VPS fournies par d'autres fournisseurs.
Actuellement en essayant de mon installation locale:
redis-cli -h my-node-endpoint -p 6379
Je ne reçois un délai d'attente qu'après un certain temps.
Non, vous ne pouvez pas recourir à des "astuces" telles qu'un tunnel, ce qui peut convenir à des tests, mais supprime tout avantage réel de l'utilisation d'un cache ultra-rapide avec une latence/un temps système supplémentaire.
... il n'est jamais permis d'accéder à un cluster Amazon ElastiCache, à l'intérieur ou à l'extérieur d'un VPC, à partir d'Internet .
Depuis ici: http://aws.Amazon.com/elasticache/faqs/#Can_I_access_Amazon_ElastiCache_from_outside_AWS
EDIT 2018: Cette réponse ci-dessus était exacte au moment de la rédaction. Cependant, il est maintenant possible, avec certaines configurations, d'accéder à la mémoire cache redis de l'extérieur en utilisant les instructions approximatives 1/2. en bas de cette page: https://docs.aws.Amazon.com/AmazonElastiCache/latest/red-ug/accessing-elasticache.html
Le transfert de port SSH devrait faire l'affaire. Essayez d'exécuter ceci à partir de votre client.
ssh -f -N -L6379:<your redis node endpoint>:6379 <your EC2 node that you use to connect to redis>
Puis de votre client
redis-cli -h 127.0.0.1 -p 6379
Ça marche pour moi.
Veuillez noter que le port par défaut pour redis est 6379
ne pas 6739
. Assurez-vous également que vous autorisez le groupe de sécurité du nœud EC2 que vous utilisez à se connecter à votre instance Redis dans votre groupe de sécurité Cache.
En outre, AWS prend désormais en charge l'accès à votre cluster pour plus d'informations ici
Ces réponses sont obsolètes.
Vous pouvez accéder àastic-cache en dehors d'AWS en procédant comme suit:
Pour une description plus détaillée, voir le guide aws:
Pas si vieille question, j'ai couru moi-même vers le même problème et je l'ai résolu:
Parfois, pour des raisons de développement, vous devez accéder de l'extérieur (pour éviter des déploiements multiples simplement pour une correction de bogue peut-être?)
Amazon a publié un nouveau guide qui utilise l’EC2 comme proxy pour le monde extérieur:
http://docs.aws.Amazon.com/AmazonElastiCache/latest/UserGuide/Access.Outside.html
Bonne chance!
Nous utilisons HAProxy en tant que serveur proxy réservé.
Votre système en dehors d'AWS ---> Internet -> HAProxy avec IP publique -> Amazon Redis (Elasticache)
Notez qu’il existe une autre bonne raison de le faire (à ce moment-là)
Étant donné que nous utilisons le client node.js, qui ne prend pas en charge le basculement Amazon DNS, le pilote du client ne prend pas en charge la recherche DNS. Si la redis échoue, le pilote client restera connecté à l'ancien maître, qui est esclave après un basculement.
En utilisant HAProxy, le problème a été résolu.
Utilisant maintenant le dernier pilote ioredis, il prend en charge le basculement Amazon DNS.
BTW si quelqu'un veut une solution Windows EC2, essayez ceci à l'invite du DOS (sur ladite machine Windows EC2):
C:\Utilisateurs\Administrateur> netsh interface portproxy add v4tov4 listenport=6379 listenaddress=10.xxx.64.xxx connectport=6379 connectaddress=xxx.xxxxxx.ng.0001.use1.cache.amazonaws.com
C:\Utilisateurs\Administrateur> netsh interface portproxy show all
Écoutez sur ipv4: Connectez-vous à ipv4:
Adresse Port Adresse Port
10.xxx.128.xxx 6379 xxx.xxxxx.ng.0001.use1.cache.amazonaws.com 6379
C:\Utilisateurs\Administrateur> netsh interface portproxy delete v4tov4 listenport=6379 listenaddress=10.xxx.128.xxx
Ceci est un script de nœud solide qui fera tout le travail sale pour vous. Testé et vérifié cela a fonctionné.
https://www.npmjs.com/package/uzys-elasticache-tunnel
Comment utiliser Usage: uzys-elasticache-tunnel [options] [commande]
Commandes:
start [filename] start tunneling with configuration file (default: config.json)
stop stop tunneling
status show tunneling status
Options:
-h, --help output usage information
-V, --version output the version number
Exemple d'utilisation
Il n'est pas possible d'accéder directement au cluster classique à partir d'une instance de VPC. La solution de contournement serait de configurer NAT sur l'instance classique.
NAT doit avoir un simple proxy 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
J'ai résolu en utilisant cette documentation Amazon il est dit que vous devrez installer stunnel sur votre autre machine ec2.
https://aws.Amazon.com/premiumsupport/knowledge-center/elasticache-connect-redis-node/