Accesso al cluster - Amazon ElastiCache

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Accesso al cluster

Le istanze Amazon ElastiCache sono progettate in modo che vi si possa accedere tramite un'istanza Amazon EC2.

Se hai lanciato l'istanza ElastiCache in un Amazon Virtual Private Cloud (Amazon VPC), puoi accedere all'istanza ElastiCache da un'istanza Amazon EC2 nello stesso Amazon VPC. Oppure, utilizzando un peering VPC, puoi accedere all'istanza ElastiCache da un'istanza Amazon EC2 di un Amazon VPC diverso.

Se hai avviato l'istanza ElastiCache in EC2 Classic, consenti all'istanza EC2 di accedere al cluster concedendo al gruppo di sicurezza Amazon EC2 associato al cluster l'accesso al gruppo di sicurezza cache. Per impostazione predefinita, l'accesso a un cluster è riservato all'account che lo ha avviato.

Concedi l'accesso al cluster

Il cluster è stato avviato in EC2-VPC.

Se hai lanciato il cluster in un Amazon Virtual Private Cloud (Amazon VPC), puoi connetterti al cluster ElastiCache solo da un'istanza Amazon EC2 in esecuzione nello stesso Amazon VPC. In questo caso sarà necessario concedere al cluster l'ingresso di rete.

Nota

Se si utilizza Local Zones, assicurarsi di averla abilitata. Per ulteriori informazioni, consulta Abilitazione delle zone locali. In questo modo, il VPC viene esteso a tale zona locale e il VPC tratterà la sottorete come qualsiasi sottorete in qualsiasi altra Zona di Disponibilità e gateway rilevanti, tabelle di instradamento e altre considerazioni sui gruppi di sicurezza.

Per concedere l'ingresso di rete a un cluster da un gruppo di sicurezza Amazon VPC
  1. Accedi a AWS Management Console e apri la console Amazon EC2 all'indirizzo https://console.aws.amazon.com/ec2/.

  2. Nel riquadro di navigazione, in Rete e sicurezza, scegli Gruppi di sicurezza.

  3. Dall'elenco dei gruppi di sicurezza, scegli il gruppo di sicurezza per il VPC Amazon. A meno che il gruppo di sicurezza non sia stato creato per l'utilizzo di ElastiCache, questo gruppo di sicurezza verrà denominato di default.

  4. Scegli la scheda In entrata, quindi procedi come segue:

    1. Scegli Modifica.

    2. Scegli Aggiungi regola.

    3. Nella colonna Tipo, scegli Regola TCP personalizzata.

    4. Nella casella Intervallo porta, digita il numero di porta per il nodo del cluster. Questo numero deve essere lo stesso specificato durante l'avvio del cluster. La porta predefinita per Memcached è 11211 .

    5. Nella casella Fonte, scegli Ovunque che ha l'intervallo di porta (0.0.0.0/0) in modo che qualunque istanza Amazon EC2 avviata in Amazon VPC possa connettersi ai nodi ElastiCache.

      Importante

      Aprire il cluster ElastiCache nell'intervallo di porte 0.0.0.0/0 non espone il cluster a Internet perché sprovvisto di indirizzi IP pubblici e quindi non vi si può accedere dall'esterno del VPC. Tuttavia, il gruppo di sicurezza di default può essere applicato ad altre istanze Amazon EC2 nell'account del cliente, che possono avere un indirizzo IP pubblico. Se eseguono qualche attività sulla porta predefinita, il servizio può essere esposto involontariamente. Consigliamo quindi di creare un gruppo di sicurezza VPC che verrà utilizzato esclusivamente da ElastiCache. Per ulteriori informazioni, consulta Gruppi di sicurezza personalizzati.

    6. Seleziona Salva.

Quando avvii un'istanza Amazon EC2 nel VPC Amazon, questa sarà in grado di connettersi al cluster ElastiCache.

Accesso alle risorse ElastiCache dall'esterno AWS

Amazon ElastiCache è un servizio AWS che fornisce un archivio di tipo chiave-valore in memoria basato sul cloud. Il servizio è progettato per potervi accedere esclusivamente da AWS. Se il cluster ElastiCache è ospitato in un VPC, puoi tuttavia utilizzare un'istanza Network Address Translation (NAT) per fornire accesso dall'esterno.

Requisiti

Per poter accedere alle risorse ElastiCache dall'esterno di AWS è necessario soddisfare i seguenti requisiti:

  • Il cluster deve risiedere all'interno di un VPC e deve essere possibile accedervi tramite un'istanza NAT (Network Address Translation). Non ci sono eccezioni a questo requisito.

  • L'istanza NAT deve essere avviata nello stesso VPC del cluster.

  • L'istanza NAT deve essere avviata nella sottorete pubblica separata dal cluster.

  • Un indirizzo IP elastico (EIP) deve essere associato all'istanza NAT. La funzionalità di inoltro della porta iptables viene utilizzata per inoltrare una porta nell'istanza NAT verso la porta del nodo di cache all'interno del VPC.

Considerazioni

Quando si accede alle risorse ElastiCache dall'esterno di ElastiCache, è necessario tenere presenti le seguenti considerazioni.

  • I client si connettono all'EIP e alla porta della cache dell'istanza NAT. L'inoltro della porta sull'istanza NAT inoltra il traffico sul nodo cluster di cache appropriato.

  • Se un nodo cluster viene aggiunto o sostituito, le regole iptables devono essere aggiornate per riflettere questo cambiamento.

Limitazioni

Questo approccio deve essere utilizzato esclusivamente a scopo di sviluppo e test. Non è consigliato per essere utilizzato per la produzione a causa dei limiti seguenti:

  • L'istanza NAT agisce come proxy tra i client e più cluster. L'aggiunta di un proxy ha impatto sulle prestazioni del cluster di cache. L'impatto aumenta con il numero di cluster di cache a cui accedi tramite l'istanza NAT.

  • Il traffico dai client verso l'istanza NAT non è crittografato. Devi pertanto evitare l'invio di dati sensibili tramite l'istanza NAT.

  • L'istanza NAT aggiunge il sovraccarico della gestione di un'altra istanza.

  • L'istanza NAT viene utilizzata come singolo punto di errore. Per informazioni su come configurare l'elevata disponibilità per NAT su VPC, consulta Elevata disponibilità per istanze NAT Amazon VPC: un esempio.

Come accedere alle risorse ElastiCache dall'esterno di AWS

La procedura seguente mostra come eseguire la connessione alle risorse ElastiCache tramite un'istanza NAT.

Questi passaggi presuppongono quanto segue:

  • iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 6380 -j DNAT --to 10.0.1.231:6379

  • iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 6381 -j DNAT --to 10.0.1.232:6379

Quindi, è necessario NAT nella direzione opposta:

iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 10.0.0.55

È inoltre necessario abilitare l'inoltro IP, che è disabilitato per impostazione predefinita:

sudo sed -i 's/net.ipv4.ip_forward=0/net.ipv4.ip_forward=1/g' /etc/sysctl.conf sudo sysctl --system

  • Stai accedendo a un cluster Memcached con:

    • Indirizzo IP: 10.0.1.230

    • Porta Memcached predefinita: 11211

    • Gruppo di sicurezza: *10\.0\.0\.55*

  • L'indirizzo IP del client affidabile è 198.51.100.27.

  • L'indirizzo IP elastico (EIP) dell'istanza NAT è 203.0.113.73.

  • Il gruppo di sicurezza dell'istanza NAT è sg-ce56b7a9.

Per connettersi alle risorse ElastiCache tramite un'istanza NAT
  1. Creare un'istanza NAT nello stesso VPC del cluster di cache, ma in una sottorete pubblica.

    Per impostazione predefinita, la creazione guidata di VPC avvia un tipo di nodo cache.m1.small. È necessario selezionare una dimensione di nodo in base alle proprie esigenze: È necessario utilizzare l'AMI NAT EC2 per poter accedere a ElastiCache dall'esterno di AWS.

    Per informazioni sulla creazione di un'istanza NAT, consulta Istanze NAT nella Guida per l'utente di AWS VPC.

  2. Creare regole del gruppo di sicurezza per il cluster di cache e l'istanza NAT.

    Il gruppo di sicurezza per le istanze NAT e l'istanza del cluster devono essere associati alle seguenti regole:

    • Due regole in entrata

      • Una per consentire le connessioni TCP dai client affidabili a ciascuna porta della cache inoltrata dall'istanza NAT (11211 - 11213).

      • Un'altra per consentire l'accesso SSH ai client affidabili.

      Gruppo di sicurezza per le istanze NAT - Regole in entrata
      Type Protocollo Intervallo porte Origine
      Regola TCP personalizzata TCP 11211-11213 198.51.100.27/32
      SSH TCP 22 198.51.100.27/32
    • Una regola in uscita per consentire le connessioni TCP alla porta della cache (11211).

      Gruppo di sicurezza per le istanze NAT - Regola in uscita
      Type Protocollo Intervallo porte Destinazione
      Regola TCP personalizzata TCP 11211 sg-ce56b7a9 (gruppo di sicurezza per le istanze del cluster)
    • Una regola in entrata per il gruppo di sicurezza del cluster che consente le connessioni TCP dall'istanza NAT alla porta della cache (11211).

      Gruppo di sicurezza per le istanze del cluster - Regola in entrata
      Type Protocollo Intervallo porte Origine
      Regola TCP personalizzata TCP 11211 sg-bd56b7da (gruppo di sicurezza NAT)
  3. Convalidare le regole.

    • Confermare che il client affidabile possa effettuare la connessione SSH all'istanza NAT.

    • Confermare che il client affidabile possa effettuare la connessione al cluster dall'istanza NAT.

  4. Aggiungere una regola iptables all'istanza NAT.

    È necessario aggiungere una regola iptables alla tabella NAT per ogni nodo nel cluster per inoltrare la porta della cache dall'istanza NAT al nodo del cluster. Di seguito è riportato un possibile esempio:

    iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 11211 -j DNAT --to 10.0.1.230:11211

    Il numero di porta deve essere univoco per ciascun nodo nel cluster. Ad esempio, se si utilizza un cluster Memcached a tre nodi tramite le porte 11211 - 11213, le regole avrebbero un aspetto simile al seguente:

    iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 11211 -j DNAT --to 10.0.1.230:11211 iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 11212 -j DNAT --to 10.0.1.231:11211 iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 11213 -j DNAT --to 10.0.1.232:11211
  5. Confermare che il client affidabile possa effettuare la connessione al cluster.

    Il client affidabile deve connettersi all'EIP associato all'istanza NAT e alla porta del cluster corrispondente al nodo del cluster appropriato. Ad esempio, la stringa di connessione per PHP potrebbe apparire come segue:

    $memcached->connect( '203.0.113.73', 11211 ); $memcached->connect( '203.0.113.73', 11212 ); $memcached->connect( '203.0.113.73', 11213 );

    È anche possibile utilizzare un client telnet per verificare la connessione. Per esempio:

    telnet 203.0.113.73 11211 telnet 203.0.113.73 11212 telnet 203.0.113.73 11213
  6. Salvare la configurazione iptables.

    Salvare le regole dopo averle sottoposte a test e a verifica. Se si sta utilizzando una distribuzione Linux basata su Redhat (ad esempio Amazon Linux), eseguire questo comando:

    service iptables save

Argomenti correlati

Negli argomenti seguenti vengono fornite informazioni aggiuntive.