Si può collegare ad Amazon Elasticache Redis al di fuori di Amazon

Io sono in grado di connettersi a un Elasticache redis esempio in un VPC da istanze EC2, ma vorrei sapere se c’è un modo per connettersi a un Elasticache Redis nodo al di fuori delle istanze di Amazon EC2, come da mio locale dev installazione o VPS istanze di altri fornitori.

Attualmente quando si cerca dal mio set up locale:

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

Ho solo un timeout dopo qualche tempo.

InformationsquelleAutor Loic Duros | 2014-02-20

 

9 Replies
  1. 61

    No, non è possibile senza ricorrere a “trucchi” come un tunnel, che forse OK per il test ma uccidere alcun beneficio reale di utilizzo di un super-cache veloce, con l’aggiunta di latenza/sovraccarico.

    …un Amazon ElastiCache Cluster, all’interno o all’esterno di un VPC, non è mai
    permesso per l’accesso da Internet
    .

    Da qui: http://aws.amazon.com/elasticache/faqs/#Can_I_access_Amazon_ElastiCache_from_outside_AWS

    MODIFICA 2018: Questa risposta di cui sopra è stata precisa, quando scritto, tuttavia, ora è possibile con qualche configurazione per l’accesso a cache redis da esterno utilizzando le indicazioni circa 1/2 strada questa pagina: https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/accessing-elasticache.html

    • È questo ancora il caso? I documenti più dire questo – affermano redis è regolato da standard di sicurezza criteri di gruppo, ma ancora non posso accedere ai miei redis nodo nonostante che. Sciopero che. Rif appena spostato: Amazon ElastiCache Nodi, distribuite all’interno di un VPC, non può mai essere accessibile da Internet o da Istanze EC2 al di fuori del VPC.
    • Sento che ‘uccidere’ è un po ‘ forte. Per esempio abbiamo alcuna apprezzabile calo di prestazioni durante l’esecuzione di una delle nostre applicazioni al di fuori di AWS (tramite un tunnel). Il tunnel spese sono minuscoli rispetto al DB operazioni, il browser, il carico, I/O del disco e così via.
    • docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/…
  2. 77

    SSH port forwarding dovrebbe fare il trucco. Provare a eseguire questo client.

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

    Poi dal tuo client

    redis-cli -h 127.0.0.1 -p 6379
    

    Funziona per me.

    Si prega di notare che la porta di default per redis è 6379 non 6739. Inoltre assicurarsi di permettere l’consentire al gruppo di protezione dell’EC2 nodo che si utilizza per connettersi al redis istanza in Cache gruppo di protezione.

    Anche, AWS ora supporta l’accesso ai cluster più info qui

    • Grazie per la segnalazione fuori porta, solo un errore di battitura. Quindi, stai dicendo che SSH tunneling attraverso EC2 è l’unico modo per ottenere l’accesso a un elasticache nodo al di fuori di Amazon? Grazie,
    • Esatto, proprio come @E. J. Brennan citati nelle altre risposte.
  3. 21

    Queste risposte non sono aggiornati.

    È possibile accedere elastico-cache al di fuori di AWS, seguendo questi passaggi:

    1. Creare un NAT istanza nella stessa VPC come cluster di cache, ma in un
      public subnet.
    2. Creare un gruppo di sicurezza regole per il cluster di cache e
      NAT istanza.
    3. Convalidare le regole.
    4. Aggiungere una regola di iptables per il NAT
      esempio.
    5. Confermare che il client di fiducia è in grado di connettersi al
      cluster.
    6. Salvare la configurazione di iptables.

    Per una descrizione più dettagliata si veda il aws guida:

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

    • Non voglio un NAT esempio, voglio controllare su di esso per un minuto. Rico la risposta è esattamente quello che volevo.
  4. 6

    Non è così vecchia questione, ho eseguito lo stesso problema me e risolto:

    A volte, per lo sviluppo di ragioni è necessario per l’accesso dall’esterno (per evitare di multi-implementazioni per un semplice bug-fix forse?)

    Amazon ha pubblicato una nuova guida che utilizza l’EC2 come proxy per il mondo esterno:

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

    Buona fortuna!

    • Per riferimento l’approccio Amazon menziona è un NAT istanza.
    • FYI, dal docs: “Questo approccio dovrebbe essere utilizzato per il testing e lo sviluppo puramente informativo. Non è raccomandato per l’uso in produzione”
    • Sì, è vero @jasonjonesutah ho anche parlato di questo nella mia risposta. Una pessima idea per la produzione, ma eccellente per lo sviluppo.
  5. 4

    Stiamo usando HAProxy come riservati server proxy.

    Sistema al di fuori AWS —> Internet> HAProxy con IP pubblico –> Amazon Redis (Elasticache)

    Nota che c’è un’altra buona ragione per farlo (a quel tempo)

    Come si usa node.js client che non supportano Amazon DNS failover, il client driver non supportano dns cercare di nuovo.
    Se il redis esito negativo, il cliente autista mantenere la connessione al vecchio maestro, che è in slave, dopo l’errore di sopra.

    Utilizzando HAProxy, è risolto il problema.

    Ora utilizzando la più recente ioredis driver, supporto amazon dns di failover.

    • aggiornamento per node.js ora ioredis supporto DNS fail over. Se si utilizza il nome host DNS, può essere auto failover senza HAProxy.
  6. 4

    BTW, se qualcuno vuole un windows EC2 soluzione, provare queste al prompt del DOS (su finestre in EC2 macchina):

    Per Aggiungere il port-forwarding

    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

    Elenco port forwarding delle porte

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

    Ascoltare su ipv4: la Connessione ipv4:

    Indirizzo Indirizzo Di Porta Porta


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

    Per rimuovere il port-forwarding

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

  7. 3

    Questo è un solido nodo script che farà tutto il lavoro sporco per voi. Testato e verificato ha funzionato.

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

    Come utilizzare
    Utilizzo: uzys-elasticache-tunnel [opzioni] [comando]

    Comandi:

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

    Opzioni:

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

    Esempio Di Utilizzo

    • start – uzys-elasticache-tunnel di avvio ./config.json
    • stop – uzys-elasticache-tunnel interrompere
    • stato – uzys-elasticache-lo stato del tunnel
  8. 1

    La sua non è possibile accedere direttamente classico-cluster da un VPC istanza. La soluzione potrebbe essere la configurazione di NAT sul classico esempio.

    NAT necessario disporre di un semplice tcp proxy

    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
    

Lascia un commento