Amazon ELB en VPC


Estamos utilizando Amazon EC2 y queremos poner un ELB (balanceador de carga) en 2 instancias en una subred privada. Si simplemente agregamos la subred privada al ELB, no obtendrá ninguna conexión, si adjuntamos ambas subredes al ELB entonces puede acceder a las instancias, pero a menudo obtendrá tiempos de espera. ¿Alguien ha implementado con éxito un ELB dentro de la subred privada de su VPC? Si es así, ¿podría explicarme el procedimiento?

Gracias

Author: Steffen Opel, 2012-02-13

4 answers

Mi compañero de equipo y yo acabamos de implementar ELB en una VPC con 2 subredes privadas en diferentes zonas de disponibilidad. La razón por la que obtiene tiempos de espera es que por cada subred que agrega al equilibrador de carga, obtiene una dirección IP externa. (intente 'dig elb-dns-name-here' y verá varias direcciones IP). Si una de estas direcciones IP asigna una subred privada, se agotará el tiempo de espera. La IP que se asigna a su subred pública funcionará. Debido a que DNS puede darle cualquiera de las direcciones IP, a veces funciona, a veces se agota el tiempo.

Después de un poco de ida y vuelta con amazon, descubrimos que el ELB solo debe colocarse en subredes 'públicas', es decir, subredes que tienen una ruta hacia la Puerta de enlace de Internet. Queríamos mantener nuestros servidores web en nuestras subredes privadas pero permitir que el ELB hablara con ellos. Para resolver esto, teníamos que asegurarnos de que teníamos una subred pública correspondiente para cada zona de disponibilidad en la que teníamos subredes privadas. Luego agregamos al ELB, las subredes públicas para cada zona de disponibilidad.

Al principio, esto no parecía funcionar, pero después de intentarlo todo, recreamos el ELB y todo funcionó como debería. Creo que esto es un error, o el ELB estaba en un estado extraño por tantos cambios.

Aquí está más o menos lo que hicimos:

  1. El servidor WEB-1 se está ejecutando en PrivateSubnet-1 en la zona de disponibilidad us-east-1b con un grupo de seguridad llamado web-server.
  2. El servidor WEB-2 se está ejecutando en PrivateSubnet - 2 en la zona de disponibilidad us-east-1c con el grupo de seguridad llamado web-server.
  3. Creó una subred pública en la zona us-east-1b, la llamaremos PublicSubnet-1. Nos aseguramos de asociar la tabla de enrutamiento que incluye la ruta a la Puerta de enlace de Internet (ig-xxxxx) con esta nueva subred. (Si utilizó el asistente para crear una VPC pública/privada, esta ruta ya existe.)
  4. Creó una subred pública en la zona us-east-1c, la llamaremos PublicSubnet-2. Nos aseguramos de asociar la tabla de enrutamiento que incluye la ruta a la puerta de enlace de Internet (ig-xxxxx) con esta nueva subred. (Si utilizó el asistente para crear una VPC pública/privada, esta ruta ya existe.)
  5. Creó un nuevo ELB, añadiéndole PublicSubnet-1 y PublicSubnet-2 (no el PrivateSubnet-X). Además, eligió las instancias para ejecutarse en el ELB, en este caso WebServer-1 y WebServer-2. Asegúrese de asignar un grupo de seguridad que permita los puertos de entrada 80 y 443. Llamemos a este grupo elb-group.
  6. En el grupo de servidores web, permitir tráfico desde puerto 80 y 443 del grupo elb.

¡Espero que eso ayude!

 170
Author: Nathan Pahucki,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-08-11 10:12:53

La clave aquí es entender que no está "Agregando subredes/zonas de disponibilidad" a ELB, sino especificando en qué subredes colocar instancias ELB.

Sí, ELB es un equilibrador de carga de software y cuando crea un objeto ELB, se coloca una instancia EC2 de equilibrio de carga personalizada en todas las subredes que especificó. Por lo tanto, para que el ELB (sus instancias) sean accesibles, deben colocarse en las subredes que tienen una ruta predeterminada configurada a través de IGW (lo más probable es que clasifique estas subredes como publico).

Así que como ya se respondió anteriormente, debe especificar redes "públicas" para ELB, y esas redes deben ser de los AZs donde se ejecutan sus instancias EC2. En este caso, las instancias ELB podrán llegar a sus instancias EC2 (siempre que los grupos de seguridad estén configurados correctamente)

 11
Author: RSH,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-01-08 21:22:55

Hemos implementado ELB en una subred privada, por lo que la afirmación de que toda la necesidad de ELB de ser pública no es completamente cierta. Necesitas un NAT. Cree una subred privada para el ELB privado, active el DNS de VPC y, a continuación, asegúrese de que la tabla de enrutamiento privado esté configurada para pasar por el NAT. Los grupos de seguridad de subred también deben configurarse para permitir el tráfico entre ELB y App, y entre las subredes App y DB.

Las comprobaciones de estado de habichuelas mágicas no funcionarán, ya que no pueden alcanzar el equilibrador de carga, pero para servicios que deben estar fuera del alcance del público este es un buen compromiso.

Lectura sugerida para iniciar su arquitectura VPC: http://blog.controlgroup.com/2013/10/14/guided-creation-of-cloudformation-templates-for-vpc/.

 2
Author: Mike Lapinskas,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-11-18 19:54:57

Debe agregar los siguientes ajustes.

  1. Subred pública zona b = Servidor NAT
  2. Subred privada zona c = Servidor Web
  3. Zona pública de subred c = ELB

El truco es enrutar:

  1. El router a NAT se conecta con la puerta de enlace A.
  2. El router a la Web del servidor se adjunta a NAT.
  3. El enrutador a la subred pública se adjunta con la puerta de enlace A.

Detalles del ELB:

1.Zona: Subred pública zona c 2.Instancia: Servidor Web 3.Seguridad Grupos: habilitar puertos

Http://docs.amazonaws.cn/en_us/ElasticLoadBalancing/latest/DeveloperGuide/UserScenariosForVPC.html

 2
Author: Roberto Carlos Reyes Fernandez,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-05-30 03:00:32