HEADER_lecciones_de_software

Elastic Compute Cloud (EC2): ¿cómo correr un servidor web?

por Sebastián Henao, el 23 de septiembre de 2019

elastic_cloud_computing

Elastic Compute Cloud, o EC2, es uno de los servicios de AWS enfocados en proveer una capa de cómputo a nuestras aplicaciones. EC2 en particular permite la creación de máquinas virtuales, también conocidas como instancias, a las cuales se les asigna una capacidad de cómputo específica en términos de la cantidad y tipos de CPU, la cantidad de memoria RAM y el espacio en disco para almacenamiento. 

Adicionalmente, EC2 permite seleccionar el sistema operativo que se desea instalar en la instancias y con esto entrega una máquina virtual completamente funcional en cuestión de segundos, sobre las cuales los usuarios podrán desplegar aplicaciones y servicios de la misma manera que lo harían en un servidor on-premise o en una máquina virtual desplegada en cualquier otro hipervisor. 

A continuación se muestra cómo lanzar una instancia de EC2 a través de la consola web de AWS y correr un servidor web sobre esta. 

Para esto, necesitaremos una cuenta de AWS con permisos sobre EC2 y los servicios que configuraremos están incluídos dentro de la capa gratuita de AWS. Partiremos de la Virtual Private Network (VPC) por defecto que provee AWS, dentro de la cual crearemos nuestra instancia de EC2 a partir de una Amazon Machine Image (AMI). A esta le asignaremos un volumen de Elastic Block Storage (EBS) para la persistencia de la información. Sobre la instancia instalaremos un servidor web Apache, y este lo expondremos a Internet a través de un Security Group.

Esta guía la realizaremos en la región North Virginia (N. Virginia), que también es conocida como us-east-1. Así que, estando dentro de la consola web asociada a nuestra cuenta, el primer paso será verificar la región en la que estamos en la esquina superior derecha de la consola web. A continuación, ingresamos al servicio EC2:

Ingresamos al servicio EC2:

Ahora, una vez estemos dentro de EC2, en el panel izquierdo accederemos a la lista de instancias utilizando la opción que se encuentra en el panel izquierdo de la consola.

Accederemos a la lista de instancias

Y a continuación seleccionamos el botón Launch Instance:

seleccionamos el botón Launch Instance

Esto nos permitirá iniciar el proceso de creación de la instancia. Así, el primer paso será escoger el sistema operativo, el cual se especifica a través de una Amazon Machine Image (AMI). En este caso utilizaremos el sistema operativo Amazon Linux 2.

escoger el sistema operativo, el cual se especifica a través de una Amazon Machine

A continuación seleccionaremos el tipo de instancia, con lo cual estaríamos seleccionando la cantidad de CPU y de memoria de acuerdo con un conjunto de plantillas que ya han sido definidas por AWS. Los nombres de estos tipos de instancias se componen de una familia, que está relacionada con su uso principal; una generación, que provee información sobre la generación de los procesadores que se va a utilizar, y del tamaño, que habla de la cantidad de recursos asignados a ese tipo de instancia. 

De esta forma, utilizaremos la instancia t2.micro, donde t se refiere a la familia de instancias para uso general, 2 a la generación y micro al tamaño. Esta instancia está cubierta dentro de la capa gratuita de AWS. Por tanto, seleccionar una instancia diferente implicaría un costo adicional. Así, asegurándonos de que esta instancia está seleccionada, continuamos seleccionando el botón Configure Instance Details.

continuamos seleccionando el botón Configure Instance Details.

En esta pantalla se muestran múltiples configuraciones para la instancia; sin embargo, los valores asignados por defecto funcionarán bien para el propósito de esta guía. 

En particular, es esta la sección de la configuración en el que se selecciona la Virtual Private Cloud (VPC) en la que se desplegará la instancia, al igual que la subnet para la asignación de una zona de disponibilidad (AZ)

Es importante recordar que una VPC está vinculada a una región (en este caso es us-east-1). Dentro de esta región, existen múltiples AZ, las cuales se vinculan a la VPC a través de las subnets, dado que cada subnet está vinculada a una AZ. En este tutorial utilizaremos la VPC por defecto para la región us-east-1. Seleccionaremos, además, la subnet asociada a la AZ us-east-1a. Los nombres de los recursos que se muestran en la imagen pueden ser diferentes a los que se encuentren en otras cuentas de AWS.

Seleccionaremos, además, la subnet asociada a la AZ us-east-1a.

A continuación, dentro de esta misma pantalla, seleccionaremos la opción de Advanced Details. Allí especificaremos un script que se encargará de la configuración del servidor web dentro de la instancia. Con este script estamos actualizando los paquetes instalados en la máquina.

Luego instalamos e iniciamos el servidor web Apache garantizando que este se inicie automáticamente cada que iniciemos la instancia. Finalmente, creamos el archivo index.html en la ruta /var/www/html, que será el contenido que se mostrará en nuestro servidor web. Este script se ejecuta únicamente cuando creamos la instancia. Aquí podrás descargar este script, que también se puede cargar a AWS como un archivo o pegarlo en texto plano. 

A continuación, seleccionamos el botón Add Storage para pasar a la siguiente pantalla.

seleccionamos el botón Add Storage para pasar a la siguiente pantalla.

En este paso de la configuración, adicionamos los volúmenes de EBS para la persistencia de la información en la instancia, los cuales serán las unidades de almacenamiento. Podemos implementar configuraciones de volúmenes tan complejas como las deseemos; sin embargo, para el propósito de esta guía, el volumen por defecto de 8 GB será suficiente. Además, este está cubierto dentro de la capa gratuita de AWS. 

A continuación seleccionamos el botón Add Tags

A continuación seleccionamos el botón Add Tags. 

Los tags están diseñados como identificadores personalizados para los recursos desplegados en AWS. Así, incluiremos un tag asociado al nombre de la instancia. Para esto, seleccionamos el botón Add Tag y a continuación ingresamos los datos que se muestran en la imagen. 

Para continuar seleccionamos el botón Configure Security Group.

seleccionamos el botón Configure Security Group.

Ahora configuraremos el grupo de seguridad que nos permitirá publicar el servidor web en Internet. Este recurso de AWS se postula como un firewall de las instancias y otros recursos de AWS. Además, permite configurar el tráfico entrante y saliente. De esta manera, debemos habilitar el ingreso a la instancia por el puerto 22 para acceso SSH y por el puerto 80 para el tráfico HTTP del servidor web desde cualquier dispositivo en Internet. Por defecto, cuando creamos un nuevo grupo de seguridad, todo el tráfico saliente está permitido.

A continuación se muestra la secuencia de pasos que se deben seguir para configurar el nuevo grupo de seguridad.

Se muestra la secuencia de pasos que se deben seguir para configurar el nuevo grupo de seguridad.

En esta pantalla final podremos revisar la configuración especificada. Después, seleccionamos el botón launch. Ahora debemos crear o especificar un par de llave pública y privada para poder acceder a la instancia a través de SSH. Posteriormente se muestran los pasos que deben seguirse para esto. Como resultado, habremos descargado la llave privada, la cual se debe almacenar en un lugar seguro, pues con esta se podrá acceder a la instancia sin la necesidad de conocer una contraseña adicional. Finalmente seleccionamos el botón Launch Instances y con esto iniciará la creación de nuestra instancia.

seleccionamos el botón Launch Instances y con esto iniciará la creación de nuestra instancia.

seleccionamos el botón Launch Instances y con esto iniciará la creación de nuestra instancia.

Ahora, regresamos a la pantalla donde se listan todas las instancias creadas en esta región. Para esto podemos seguir nuevamente los pasos 1 al 4. Una vez allí, encontraremos que el estado de nuestra instancia es pending.

regresamos a la pantalla donde se listan todas las instancias creadas en esta región.

Será cuestión de segundos hasta que la instancia esté preparada para ser accedida, lo cual reconoceremos por que el estado cambiará a running.

Será cuestión de segundos hasta que la instancia esté preparada para ser accedida,

En este punto la instancia está exponiendo el servidor web. Para acceder a él, AWS provee un registro DNS público y una dirección IP pública asociados a la instancia. Así que, para probar que la configuración que seguimos ha sido exitosa, bastará con ingresar en un navegador web alguno de estos dos valores. Para conocerlos, debemos seleccionar la instancia, y a continuación podremos encontrarlos en la información que se actualiza en la parte inferior de la pantalla.

debemos seleccionar la instancia, y a continuación podremos encontrarlos en la información que se actualiza en la parte inferior de la pantalla.

La dirección IP pública que AWS asigna a las instancias es aleatoria y cambia cada que se inicia la instancia cuando no se tiene asociada una dirección IP elástica. De esta manera, los valores que se asignen a tu instancia pueden ser diferentes a los valores que se muestran en la imagen. 

Ahora, al ingresar la dirección IP pública de la instancia en un navegador web y estando conectados a una red que permita el tráfico saliente por el puerto HTTP 80 hacia Internet, obtendremos lo siguiente como indicador de que la configuración fue correcta.

Obtendremos lo siguiente como indicador de que la configuración fue correcta.

¡Felicitaciones! Hemos configurado correctamente nuestro servidor web en EC2. Ahora, podrás acceder a él a través de SSH utilizando la llave privada y la dirección IP pública asociadas a la instancia, así como subir el contenido de tu sitio web en el servidor. 

Ahora, si deseas personalizar aún más tu sitio web, te recomiendo realizar un registro de dominio en Route 53 para que puedas obtener un nombre de dominio personalizado. Además, toda la configuración que realizamos de forma manual se puede automatizar utilizando CloudFormation. Recuerda que todos los recursos que hemos creado están dentro de la capa gratuita de AWS, pero, si deseas eliminarlos, bastará con seleccionar la instancia y elegir la opción terminate dentro de las acciones disponibles en Instance State. Con esto se eliminarán la instancia y el volumen EBS creado. También debes eliminar el grupo de seguridad.

 

Guía para crear una aplicación serverless en 4 pasos

Temas:Tecnologia e Innovacion

Lecciones Pragma

Lecciones en Academia Pragma

Aquí encontrarás tutoriales técnicos para que apliques en temas de desarrollo de software, cloud, calidad en software y aplicaciones móviles. 

También puedes visitar nuestro Blog con contenido actual sobre Transformación Digital, Marketing, Conocimiento de Usuario y más. 

Blog

Suscríbete a la academia

Descarga la Guía para trabajar con ambientes IBM Websphere Portal