Acceso al clúster - Amazon ElastiCache

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Acceso al clúster

Las instancias de Amazon ElastiCache se han diseñado para acceder a ellas a través de una instancia de Amazon EC2.

Si ha lanzado la instancia de ElastiCache en una Amazon Virtual Private Cloud (Amazon VPC), puede acceder a la instancia de ElastiCache desde una instancia de Amazon EC2 en la misma Amazon VPC. O, mediante la utilización de la conexión de emparejamiento de VPC, puede acceder a la instancia de ElastiCache desde una instancia de Amazon EC2 en otra Amazon VPC.

Si ha lanzado la instancia de ElastiCache en EC2 Classic, debe permitir que la instancia EC2 obtenga acceso a su clúster; para ello, conceda al grupo de seguridad de Amazon EC2 asociado a la instancia acceso a su grupo de seguridad de caché. De forma predeterminada, el acceso a un clúster está restringido a la cuenta que lanzó el clúster.

Conceder acceso al clúster

Ha lanzado su clúster en EC2-VPC

Si ha lanzado el clúster en una Amazon Virtual Private Cloud (Amazon VPC), puede conectarse al clúster de ElastiCache solo desde una instancia de Amazon EC2 que se ejecuta en la misma Amazon VPC. En este caso, necesitará conceder acceso de red al clúster.

nota

Si utiliza Local Zones, asegúrese de haberlo habilitado. Para obtener más información, consulte Habilitar Local Zones. Al hacerlo, la VPC se extiende a esa zona local y tratará la subred como cualquier subred en cualquier otra zona de disponibilidad. Las gateways relevantes, las tablas de enrutamiento y otras consideraciones del grupo de seguridad se ajustarán de forma automática.

Para conceder acceso de red desde un grupo de seguridad de Amazon VPC a un clúster
  1. Inicie sesión en la AWS Management Console y abra la consola de Amazon EC2 en https://console.aws.amazon.com/ec2/.

  2. En el panel de navegación, en Network & Security (Redes y seguridad), seleccione Security Groups(Grupos de seguridad).

  3. En la lista de grupos de seguridad, elija el grupo de seguridad para su Amazon VPC. A menos que haya creado un grupo de seguridad para el uso de ElastiCache, este grupo de seguridad se denominará default (predeterminado).

  4. Elija la pestaña Inbound y haga lo siguiente:

    1. Elija Editar.

    2. Seleccione Agregar regla.

    3. En la columna Type, elija Custom TCP rule.

    4. En el cuadro Port range, escriba el número de puerto para su nodo de clúster. Este número debe ser el mismo que especificó cuando lanzó el clúster. El puerto predeterminado para Memcached es el 11211. .

    5. En el cuadro de Source (Fuente), elija Anywhere (En cualquier lugar) que tenga el rango de puertos (0.0.0.0/0) para que cualquier instancia de Amazon EC2 que lance en su Amazon VPC pueda conectarse a sus nodos de ElastiCache.

      importante

      Al abrir el clúster de ElastiCache a 0.0.0.0/0 no se expone el clúster a Internet, ya que no tiene una dirección IP pública y, por lo tanto, no se puede acceder a este desde fuera de la VPC. Sin embargo, el grupo de seguridad predeterminado se puede aplicar a otras instancias de Amazon EC2 en la cuenta del cliente y dichas instancias pueden tener una dirección IP pública. Si se está ejecutando algo en el puerto predeterminado, ese servicio podría exponerse de forma involuntaria. Por lo tanto, recomendamos crear un grupo de seguridad de VPC que ElastiCache utilice de forma exclusiva. Para obtener más información, consulte Grupos de seguridad personalizados.

    6. Seleccione Save (Guardar).

Al lanzar una instancia de Amazon EC2 en la Amazon VPC, esa instancia podrá conectarse al clúster de ElastiCache.

Acceso a recursos de ElastiCache desde fuera de AWS

Amazon ElastiCache es un servicio de AWS con un almacén de valores de claves en memoria basado en la nube. El servicio está diseñado para acceder solo desde AWS. Sin embargo, si el clúster de ElastiCache está alojado en una VPC, se puede usar una instancia de Traducción de direcciones de red (NAT) para proporcionar acceso externo.

Requisitos

Para poder obtener acceso a los recursos de ElastiCache desde fuera de AWS, deben cumplirse los siguientes requisitos:

  • El clúster debe estar en una VPC y el acceso debe hacerse a través de una instancia de Traducción de direcciones de red (NAT). Este requisito no tiene excepciones.

  • La instancia NAT debe lanzarse en la misma VPC que el clúster.

  • La instancia NAT debe lanzarse en una subred pública distinta de la del clúster.

  • Es necesario asociar una dirección IP elástica (EIP) a la instancia NAT. La característica de reenvío de puertos de las tablas IP se usa para reenviar un puerto de la instancia NAT al puerto del nodo de caché de la VPC.

Consideraciones

Tenga en cuenta los siguientes factores a la hora de acceder a sus recursos de ElastiCache desde fuera de ElastiCache.

  • Los clientes se conectan a la EIP y al puerto de caché de la instancia NAT. El reenvío de puertos de la instancia NAT reenvía el tráfico al nodo de clúster de caché adecuado.

  • Si un nodo del clúster se añade o se reemplaza, las reglas de tablas IP deben actualizarse para reflejar este cambio.

Limitaciones 

Este enfoque solo debe usarse con fines de prueba y desarrollo. No se recomienda su uso para la producción debido a las limitaciones siguientes:

  • La instancia NAT actúa como proxy entre los clientes y múltiples clústeres. La adición de un proxy afecta al desempeño del clúster de caché. El impacto aumenta con el número de clústeres de caché a los que se accede mediante la instancia NAT.

  • El tráfico de los clientes a la instancia NAT está sin cifrar. Por lo tanto, debe evitar el envío de información confidencial a través de la instancia NAT.

  • La instancia NAT requiere, además, el mantenimiento de otra instancia.

  • La instancia NAT sirve como único punto de error. Para obtener información acerca de cómo configurar NAT de alta disponibilidad en una VPC, consulte Alta disponibilidad para instancias NAT de Amazon VPC: un ejemplo.

Cómo acceder a recursos de ElastiCache desde fuera de AWS

El siguiente procedimiento muestra cómo conectarse a sus recursos de ElastiCache mediante una instancia NAT.

En los pasos que se describen a continuación se da por sentado lo siguiente:

  • 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

A continuación, necesita NAT en la dirección opuesta:

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

También debe activar el reenvío de IP, que está desactivado de forma predeterminada:

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

  • Está accediendo a un clúster de Memcached con:

    • Dirección IP: 10.0.1.230

    • Puerto de Memcached predeterminado: 11 211

    • Grupo de seguridad: *10\.0\.0\.55*

  • El cliente tiene de confianza tiene la dirección IP 198.51.100.27.

  • La instancia NAT tiene la dirección IP elástica 203.0.113.73.

  • La instancia NAT tiene el grupo de seguridad sg-ce56b7a9.

Para conectarse a sus recursos de ElastiCache mediante una instancia NAT
  1. Cree una instancia NAT en la misma VPC que su clúster de caché, pero en una subred pública.

    De forma predeterminada, el asistente de VPC lanzara el tipo de nodo cache.m1.small. Seleccione un tamaño de nodo en función de sus necesidades. A fin de obtener acceso a ElastiCache desde fuera de AWS, debe utilizar una EC2 con una AMI con NAT.

    Para obtener información acerca de la creación de instancias NAT, consulte Instancias NAT en la Guía del usuario de AWS VPC.

  2. Cree reglas de grupo de seguridad para el clúster de caché y la instancia NAT.

    El grupo de seguridad de la instancia NAT y la instancia del clúster deben tener las siguientes reglas:

    • Dos reglas de entrada

      • Una para permitir las conexiones TCP de los clientes de confianza a cada puerto de caché que se reenvía desde la instancia NAT (11211 - 11213).

      • Otra para permitir el acceso SSH a los clientes de confianza.

      Grupo de seguridad de la instancia NAT: reglas entrantes
      Tipo Protocolo Rango de puerto Origen
      Regla TCP personalizada TCP 11211-11213 198.51.100.27/32
      SSH TCP 22 198.51.100.27/32
    • Regla de salida que permite las conexiones TCP con el puerto de caché (11211).

      Grupo de seguridad de la instancia NAT: regla saliente
      Tipo Protocolo Rango de puerto Destino
      Regla TCP personalizada TCP 11211 sg-ce56b7a9 (grupo de seguridad de la instancia de clúster)
    • Regla de entrada del grupo de seguridad del clúster que permite conexiones TCP entre la instancia NAT y el puerto de caché (11211).

      Grupo de seguridad de la instancia del clúster: regla entrante
      Tipo Protocolo Rango de puerto Origen
      Regla TCP personalizada TCP 11211 sg-bd56b7da (grupo de seguridad NAT)
  3. Valide las reglas.

    • Confirme que el cliente de confianza es capaz de conectarse mediante SSH a la instancia NAT.

    • Confirme que el cliente de confianza es capaz de conectarse al clúster desde la instancia NAT.

  4. Añada una regla de tablas IP a la instancia NAT.

    La regla de tablas de IP deben añadirse a la tabla NAT para que todos los nodos del clúster reenvíen el puerto de caché de la instancia NAT al nodo del clúster. Un ejemplo de esto sería el siguiente:

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

    El número de puerto debe ser único para cada nodo del clúster. Por ejemplo, si trabaja con un clúster de Memcached de tres nodos que usan los puertos 11211 - 11213, las reglas deben ser similares a las que se muestran a continuación:

    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. Confirme que el cliente de confianza es capaz de conectarse al clúster.

    El cliente de confianza deben conectarse a la EIP asociada con la instancia NAT y el puerto del clúster correspondiente al nodo de clúster adecuado. Por ejemplo, la cadena de conexión para PHP puede ser parecida a la siguiente:

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

    También puede usar un cliente de Telnet para comprobar la conexión. Por ejemplo:

    telnet 203.0.113.73 11211 telnet 203.0.113.73 11212 telnet 203.0.113.73 11213
  6. Guarde la configuración de tablas IP.

    Guarde las reglas tras realizar las pruebas y verificarlas. Si usa una distribución de Linux basada en Redhat (como Amazon Linux) ejecute el comando siguiente:

    service iptables save

Temas relacionados de

Los temas siguientes pueden ser de su interés.