Creando tu servidor virtual (VPS) en Amazon, Digital Ocean o Google Cloud Platform

Rafael Lopez
Architect IO
Published in
10 min readDec 9, 2014

En objetivo de la entrada es que sepas un poco de historia sobre servidores físicos y virtuales, escalabilidad y conozcas el proceso de instalación en tres diferentes proveedores de servidores virtuales.

Uno de los problemas para levantar tu servidor dedicado requieres de inversión, tiempo y posterior mantenimiento. Los servidores dedicados tienen la ventaja de que los recursos son definidos previamente y no pueden variar. El mayor inconveniente es que si falla el hardware fisico (un disco, una memoria) tienes que reemplazarlo pero mientras tanto tu servidor no funcionará correctamente.

La virtualización tiene la ventaja que te aisla de los problemas de hardware y si el servidor host que almacena tu VPS tiene un problema de hardware tiene recursos redundantes. La idea de la entrada es que conozcas de las alternativas que te traerán muchos beneficios.

Un poco de historia

La alternativa tradicional era contratar un proveedor de hosting pero no te dejan tener tu propio ambiente personalizado. Mientras en esta solución necesitas subir tu proyecto mediante FTP. En estos días se considera un poco antiguo ya que puedes hacer uso de tecnologías como cloud computing, que en cuestión de minutos puedes tener tu servidor listo para el mundo.

Metodo tradicional vs metodo actual

Si queremos que nuestro proyecto este en producción tendríamos las siguientes alternativas.

El metodo tradicional:

  1. Se selecciona un datacenter.
  2. Alquilar un gabinete.
  3. Seleccionar el proveedor de internet (usualmente 2).
  4. Configurar hardware (firewall, router etc).

En caso de extender tu servicio de manera mundial tendrías que tener servidores en diferente datacenter distribuidos.

Método actual.

  1. Seleccionar un provedor de VPS.
  2. Seleccionar la region o zona donde alojaras el servidor de manera virtual.
  3. Configurar CPU, RAM y capacidad de almacenamiento.
  4. Seleccionar sistema operativo.
  5. Expander a otras zonas.

El método actual es mas rápido ya que lo puedes hacer desde tu casa y tiene la ventaja de levantar servidores en cuestión de segundos y permite escalar de forma automática o manual.

¿ Que pasa cuando quiero agregar mas capacidad ?

La solución es que tienes que agregar mas servidores o recursos y es cuando tienes que pensar en cualquiera de los dos tipos de escalabilidad.

El escalar verticalmente o escalar hacia arriba, significa el añadir más recursos a un solo nodo en particular dentro de un sistema, tal como el añadir memoria o un disco duro más rápido a una computadora.

La escalabilidad horizontal, significa agregar más nodos a un sistema, tal como añadir una computadora nueva o una instancia y balancear los recursos que se tienen disponibles.

http://www.internetria.com/blog/wp-content/uploads/2013/05/horizontal-vertical-scalability.jpeg

Para empezar crearemos un servidor web en tres diferentes proveedores

Amazon EC2

Amazon Web Services (AWS abreviado) es una colección de servicios de computación en la nube (también llamados servicios web) que en conjunto forman una plataforma de computación en la nube, ofrecidas a través de Internet por Amazon.com. Es usado en aplicaciones populares como Dropbox, Foursquare, HootSuite. Fuente: http://es.wikipedia.org/wiki/Amazon_Web_Services

Comenzando:

Para realizar pruebas crearas una instancia Ec2 que es una maquina linux con la distribución ubuntu. Al abrir tu cuenta por primera vez amazon te regala 1 año gratis de capa gratuita. Después del año cobran horas de uso, almacenamiento, puedes parar o destruir la instancia dependiendo del uso.

Primeros pasos:

1- Creas una cuenta en amazon web service, después ingresaras una tarjeta de debito o de crédito por si necesitas servicios extras y cobro del servicio después del año.

Para verificar tu identidad amazon te pide que ingreses tu teléfono. Te llamara una grabadora que debes de teclear un código mediante el teclado del telefono. Después de unos segundos llegara un email que la activación esta completa.

2- Ingresas al dashboard o consola de amazon es donde se muestran los servicios que ofrecen amazon, pero haras uso de EC2.

3- Da un click a EC2, en la esquina superior derecha aparece las zonas yo recomiendo N. Virginia ya que es una de las primeras en recibir actualizaciónes.

4- Selecciona Launch Instance y aparece un quick wizard, selecciona ubuntu server.

5. Aparecen el tipo de instancia que queremos con los requerimientos de hardware (RAM, CPU, etc. ). Se clasifican como micro, small, medium y crecen en hardware como en costo, para hacer uso de la capa gratis seleccionamos el tipo micro.

6. Selecciona el siguiente paso configure instance details y aparece los requerimientos adicionales no se modifica, se deja como te lo muestra. Tienes 2 opciones continuar configurando o lanzarlo directamente, los siguientes pasos son opciones mas avanzadas, pero ya configuraste lo básico. selecciona review and launch.

7- Te llevara al paso 7 y ves un review de los servicios. En amarillo dice que la instancia se encuentra abierta para el mundo, significa que cualquiera puede accesar mediante la ip publica, si necesitas mas seguridad puedes crear reglas de seguridad o una red privada.

8- Selecciona launch y aparece que si quieres crear un certificado, sirve para accesar a la instancia mediante SSH, selecciona crear una nueva key pair y la descargas

9- Una vez que descargas la llave selecciona launch instances, y se empieza a crear una vez que se creo aparece que la instancia se creo con éxito y esta ejecutándose.

10- Selecciona view instances y veras en la consola las instancias activas y el detalle de cada una, lo mas importante que necesitas conocer es la IP publica o el DNS publico para poder accesar desde cualquier lado.

Los siguientes pasos es accesar mediante via SSH, necesitas el certificado *.pem que descargaste anteriormente.

Abres la terminal y tecleas lo siguiente:

cd Downloads sudo chmod 400 certificado.pemssh -i Ubuntu2.pem ubuntu@ip-publica

El primer comando es para ir a la carpeta donde descargaste el certificado, el segundo es para dar los permisos correspondientes del certificado .pem y el tercero es para accesar mediante SSH especificando el certificado.

11- Ya estasdentro de la instancia ahora vamos a actualizar linux.

sudo apt-get updatesudo apt-get upgrade

12- Instalas nginx como servidor web, puede ser apache según el caso. y después inicias el servicio.

sudo apt-get install nginx
sudo service nginx start

Intenta acceder pero no te va dejar, porque falta abrir los puertos usando el firewall de amazon.

Abriendo los puertos

Necesitas ir a la consola de amazon, y en la instancia que quieres modificar la seleccionas y en los detalles donde aparece, security group selecciona launch wizard.

Modificas los puertos de entrada y seleccionas editar.

Editas y agregamos una regla personalizada de custom tcp, puerto 80 y cualquiera ip puede accesar.

Listo, ahora si ya tienes tu instancia con servidor web.

Digital Ocean:

DigitalOcean es un proveedor Estadounidense de servidores virtuales privados, basado en la ciudad de Nueva York. La compañía alquila facilidades de centros de computo existentes, incluyendo sitios como Nueva York, Amsterdam, San Francisco, Londres y Singapur. fuente: http://es.wikipedia.org/wiki/DigitalOcean

Primeros pasos:

1- Crea una cuenta en digital ocean y después te pide que ingreses tarjeta de crédito, debito o paypal.

Una vez verificado los datos de usuario, ingresas al panel de control, donde te muestra los droplets que tienes, ip, y otros detalles.

Crearás un droplet que es una instancia. Selecciona create droplet.

Aparece para ponerle un nombre (hostname) a la instancia, selecciona el tamaño o características de hardware, dependiendo de las características o del presupuesto puedes escoger la que mas te convenga.

Selecciona zona o region donde quieres que se encuentre alojado, la idea es seleccionar la que mas cercas se encuentre o la que mejor velocidad tenga. Si quieres un hacer test de velocidad puedes ingresar al siguiente enlace http://speedtest-nyc1.digitalocean.com/ .

Las configuraciones que ofrece es crear una red privada, que internamente se crea otra interfaz privada con otra ip para poder conectar los droplets, activar IPv6, activar respaldo de datos , enable user data es para pasar datos del usuario, normalmente se usa para configurar en coreOs.

Puedes crear la imagen del droplet mediante diferentes maneras, seleccionando la distribución del sistema operativo (ubuntu, debían, coreOs, centOs), otra alternativa puedes crear imágenes con aplicaciones pre-instaladas como LEMP, LAMP entre otras.

Puedes seleccionar la llave de tu computadora establecida en digital ocean, después selecciona create.

En el panel de control del droplet creado es el siguiente que permite apagar, reiniciar, accesos, snapshots, configuraciones de red, gráficas de uso y destruir el droplet.

Si seleccionas mediante SSH, puedes ingresar directamente, si no seleccionaste SSH te llega un correo electrónico con usuario y password para que puedas accesar mediante SSH en la terminal.

ssh root@ip-publica

Una vez entrando puedes instalar lo que necesites como tu servidor web.

Google Compute Engine (GCE).

Ejecuta cargas de trabajo a gran escala en máquinas virtuales alojadas en la infraestructura de Google. Elige una máquina virtual que se ajuste a tus necesidades y disfruta del rendimiento que ofrece la red de fibra mundial de Google. fuente: https://cloud.google.com/compute/

Ofrece varios servicios como:

Lo primero que tienes que hacer es iniciar con la cuenta de google y después inscribirnos en la plataforma de google https://cloud.google.com, también se requiere de algún medio de cobro como los demás proveedores.

Comenzando

Una vez confirmado todo el registro, ve a la consola de google https://cloud.google.com/console , aparece para crear un proyecto o si tenemos un proyecto, supongamos que ya vamos a crear un nuevo proyecto.

Ingresas al proyecto creado y selecciona crear una instancia.

Después de unos segundos aparecen algunas opciones de compute engine y seleccionamos en crear una instancia.

Aparecen algunas opciones de configuración como, name que es el nombre de la instancia, meta-tags, permitir trafico por http o https, zona donde estará ubicada la instancia, requerimientos de hardware, disco de arranque, imagen del sistema operativo, tipo de almacenamiento (estándar o SSH) y configuraciones de red.

Selecciona crear e iniciara el proceso de creación.

Una vez que es creada la instancia aparece el dashboard.

Conectarse mediante SSH a la instancia

Lo primero que necesitas hacer es crear una llave SSH usando el SDK de google que te tiene otras utilidades.

https://cloud.google.com/compute/docs/gcloud-compute/#install

Ejecuta el comando en la terminal que instala el SDK:

curl https://sdk.cloud.google.com | bash

Cierra y vuelve abrir la terminal, ingresa el siguiente comando y aparece un enlace que debes de copiar y pegar en el navegador, darás permisos usando tu cuenta de google.

$ gcloud auth login --no-launch-browser
Go to the following link in your browser:

https://accounts.google.com/o/oauth2/auth?scope=https%3A%2F%2Fwww.googleapis.co%2
Fauth%2Fappengine.admin+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fbigquery+https
%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcompute+https%3A%2F%2Fwww.googleapis.com%
Fauth%2Fdevstorage.full_control+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuser...

Enter verification code:

Debe de aparecer un código que ingresas en la terminal.

Una vez validado aparece que iniciaste con tu cuenta de google. Ve al dashboard principal de compute engine para copiar un comando que permite ingresar a la instancia. Selecciona donde dice SSH y se despliega un menu, después en ver comando gcloud. Nota: el comando cambia dependiendo del proyecto.

Copia lo que apareció.

En la terminal ingresa el comando que muestra la ventana, y después nos preguntara si quieres crear un nuevo certificado después de unos segundos te dejara ingresar a la instancia mediante SSH.

Listo ahora si puedes instalarle lo que necesites.

--

--

Rafael Lopez
Architect IO

Head of engineering miOXXO & Architect Software