En este artículo, se explica cómo alojar un sitio web en Google Cloud. Google Cloud proporciona una plataforma sólida, flexible, confiable y escalable para entregar sitios web. Google creó Google Cloud a partir de la misma infraestructura que usa para entregar contenido en sitios como Google.com, YouTube y Gmail. Puedes alojar el contenido de tu sitio web con el tipo y el diseño de infraestructura que mejor se adapte a tus necesidades.
Este artículo te será útil si cumples con estas condiciones:
- Si tienes conocimientos sobre cómo crear un sitio web y experiencia previa en la implementación y ejecución de infraestructura de hosting web.
- Si estás considerando migrar el sitio a Google Cloud y cómo hacerlo.
Si deseas compilar un sitio web simple, se recomienda que uses Google Sites, una herramienta estructurada de creación de páginas web y wikis. Para obtener más información, consulta la ayuda de Sites.
Elige una opción
Si es la primera vez que usas Google Cloud, un enfoque razonable es comenzar con el tipo de tecnología con el que ya estás familiarizado. Por ejemplo, si ya usas servidores físicos o máquinas virtuales (VM) para alojar tu sitio con otro proveedor de servicios en la nube o en tu propio hardware, Compute Engine te ofrecerá un paradigma familiar. En cambio, si ya usas una oferta de plataforma como servicio (PaaS), por ejemplo, Heroku o Engine Yard, App Engine puede ser el mejor punto de partida. Si prefieres la computación sin servidores, es probable que Cloud Run sea una buena opción para ti.
Una vez que te familiarices con Google Cloud, podrás explorar la variedad de productos y servicios que ofrece Google Cloud. Por ejemplo, si comenzaste con Compute Engine, puedes aumentar las capacidades de tu sitio mediante Google Kubernetes Engine (GKE) o migrar algunas o todas las funciones a App Engine y Cloud Run.
En la siguiente tabla, se resumen las opciones de alojamiento en Google Cloud:
Opción | Producto | Almacenamiento de datos | Balanceo de cargas | Escalabilidad | Registros y supervisión |
---|---|---|---|---|---|
Sitio web estático | Cloud Storage Firebase Hosting |
Bucket de Cloud Storage | HTTP(S) opcional |
Automáticamente | |
Máquinas virtuales | Compute Engine | Cloud SQL, Cloud Storage, Firestore y Bigtable, o puedes usar otro proveedor de almacenamiento externo. Discos persistentes basados en discos duros, conocidos como discos persistentes estándar y discos persistentes de estado sólido (SSD). |
HTTP(S) Proxy TCP Proxy SSL Terminación de IPv6 Red Interregión Interna |
Automática con grupos de instancias administrados | |
Contenedores | GKE | Similar a Compute Engine, pero interactúa con discos persistentes de otra manera. |
Red HTTP(S) |
Escalador automático del clúster | |
Plataforma administrada | App Engine |
Servicios de Google Cloud, como Cloud SQL, Firestore, Cloud Storage y bases de datos de terceros accesibles | HTTP(S) Administradas por Google |
Administradas por Google | |
Sin servidores | Cloud Run |
Servicios de Google Cloud, como Cloud SQL, Firestore, Cloud Storage y bases de datos de terceros accesibles | HTTP(S) Administradas por Google |
Administradas por Google |
Este artículo puede resultarte útil para comprender las tecnologías principales que puedes usar para el hosting web en Google Cloud y darte una idea de cómo funcionan. Se proporcionan vínculos a documentación completa, instructivos y artículos de soluciones que pueden ayudarte a desarrollar una comprensión más profunda cuando estés listo.
Comprende los costos
Debido a que hay tantas variables y cada implementación es diferente, en este artículo, no se proporcionan consejos específicos sobre los costos. Para conocer los principios de Google sobre el funcionamiento de los precios de Google Cloud, consulta la página de precios. Para conocer los precios de servicios individuales, consulta la sección de precios de los productos. También puedes usar la calculadora de precios para estimar los costos de uso de Google Cloud. Puedes incluir detalles sobre los servicios que deseas usar y, luego, ver una estimación del precio.
Configura los servicios de nombre de dominio
En general, querrás registrar un nombre de dominio para tu sitio. Puedes usar un registrador público de nombres de dominio, como Google Domains, y registrar un nombre único para tu sitio. Si deseas tener un control completo de tu propio sistema de nombres de dominio (DNS), puedes usar Cloud DNS como el proveedor de DNS. En la documentación de Cloud DNS, se incluye una guía de inicio rápido para que puedas comenzar.
Si ya tienes un proveedor de DNS que deseas usar, en general, debes crear algunos registros con ese proveedor. Para un nombre de dominio como example.com
, debes crear un registro A
con el proveedor de DNS. Para el subdominio www.example.com
, debes crear un registro CNAME
a fin de que www
lo oriente al dominio example.com
. El registro A
mapea un nombre de host a una dirección IP.
El registro CNAME
crea un alias para el registro A
.
Si el registrador de nombres de dominio también es el proveedor de DNS, es probable que no debas hacer nada más. Si usas proveedores independientes para el registro y DNS, asegúrate de que el registrador de nombres de dominio tenga los servidores de nombres correctos asociados con el dominio.
Después de que se hacen los cambios en el DNS, puede que las actualizaciones de registro lleven un tiempo en propagarse, según los valores de tiempo de actividad (TTL) de tu zona. Si este es un nuevo nombre de host, los cambios entrarán en vigor con rapidez porque los agentes de resolución de DNS no tienen valores previos en caché y pueden comunicarse con el proveedor de DNS para obtener la información necesaria a fin de enrutar las solicitudes.
Aloja un sitio web estático
La manera más sencilla de entregar el contenido de un sitio web a través de HTTP(S) es alojar páginas web estáticas. Las páginas web estáticas se entregan sin cambios, como se escribieron y, por lo general, mediante HTML. Usar un sitio web estático es una buena opción si las páginas del sitio no cambian con frecuencia luego de su publicación, como sucede con las entradas de blog o las páginas que son parte del sitio web de una empresa pequeña. Puedes hacer mucho con las páginas web estáticas. Sin embargo, si necesitas que el sitio tenga interacciones sólidas con los usuarios a través de un código del servidor, tendrás que considerar las otras opciones que se describen en este artículo.
Aloja un sitio web estático con Cloud Storage
Para alojar un sitio estático en Cloud Storage, necesitas crear un bucket de Cloud Storage, subir el contenido y probar el sitio nuevo. Puedes entregar los datos directamente desde storage.googleapis.com
o verificar que eres el propietario del dominio y usar su nombre.
Puedes crear tus páginas web estáticas como desees. Por ejemplo, puedes crear páginas de forma manual mediante HTML y CSS. Puedes usar un generador de sitios estáticos, como Jekyll, Ghost o Hugo, para crear el contenido. Con los generadores de sitios estáticos, puedes crear un sitio web estático en Markdown y proporcionar plantillas y herramientas. Por lo general, los generadores de sitios proporcionan un servidor web local que puedes usar para obtener una vista previa del contenido.
Una vez que tu sitio estático esté en funcionamiento, puedes actualizar las páginas estáticas con cualquier proceso que elijas. El proceso puede ser tan directo como copiar a mano una página actualizada en el bucket. También puedes elegir un enfoque más automatizado, como almacenar tu contenido en GitHub y, luego, usar un webhook para ejecutar una secuencia de comandos que actualizará el bucket. Un sistema mucho más avanzado usará una herramienta de integración y entrega continuas (CI/CD), como Jenkins, para actualizar el contenido del bucket. Jenkins tiene un complemento de Cloud Storage que proporciona un paso posterior a la compilación de Google Cloud Storage Uploader
para publicar artefactos de compilación en Cloud Storage.
Si tienes una app web que debe entregar contenido estático o contenido multimedia estático subido por el usuario, el uso de Cloud Storage puede ser una alternativa rentable y eficiente para alojar y entregar este contenido y, también, reducir la cantidad de solicitudes dinámicas que recibirá la app web.
Además, Cloud Storage puede aceptar contenido enviado por el usuario directamente. Esta función permite que los usuarios suban archivos multimedia grandes de forma directa y segura sin conectarse mediante un proxy a través de los servidores.
Si deseas obtener el mejor rendimiento de tu sitio web estático, consulta las Recomendaciones para Cloud Storage.
Si deseas obtener más información, consulta las siguientes páginas:
- Aloja un sitio web estático
- J representa Jenkins (entrada de blog)
- Band Aid 30 en Google Cloud (entrada de blog)
- Documentación de Cloud Storage
Aloja un sitio web estático con Firebase Hosting
Firebase Hosting proporciona un hosting estático, rápido y seguro para la app web. Con Firebase Hosting, puedes implementar apps web y contenido estático en una red de distribución de contenidos (CDN) global mediante el uso de un solo comando.
Estos son algunos de los beneficios que obtienes cuando usas Firebase Hosting:
- La SSL sin configuración se encuentra integrada en Firebase Hosting. Aprovisiona certificados SSL en dominios personalizados de manera gratuita.
- Todo tu contenido se entrega a través de HTTPS.
- Tu contenido se entrega a los usuarios desde el perímetro de CDN en todo el mundo.
- Con Firebase CLI, puedes poner tu aplicación en funcionamiento en cuestión de segundos. Usa herramientas de línea de comandos para agregar objetivos de implementación a tu proceso de compilación.
- Obtienes funciones de administración de actualizaciones, como la implementación atómica de elementos nuevos, control de versiones completo y reversiones con un clic.
- El hosting ofrece una configuración útil para apps de una sola página y otros sitios más parecidos a las apps.
- El hosting está diseñado para usarse con otras características de Firebase sin inconvenientes.
Si deseas obtener más información, consulta las páginas siguientes:
Usa máquinas virtuales con Compute Engine
Para los casos de uso de infraestructura como servicio (IaaS), Google Cloud proporciona Compute Engine. Compute Engine proporciona una infraestructura de procesamiento sólida, pero debes elegir y configurar los componentes de la plataforma que quieras usar. Con Compute Engine, tú eres responsable de configurar, administrar y supervisar los sistemas. Google se asegura de que los recursos estén disponibles, que sean confiables y que estén listos para usar, pero aprovisionarlos y administrarlos depende de ti. La ventaja es que tienes un control total sobre los sistemas, además de flexibilidad sin límites.
Usa Compute Engine para diseñar y, además, implementar prácticamente todos los sistemas de hosting de sitios web que desees. Puedes usar VM, llamadas instancias, para compilar tu aplicación, como lo harías si tuvieras tu propia infraestructura de hardware. Compute Engine ofrece una gran variedad de tipos de máquinas para personalizar la configuración de modo que se adapte a tus necesidades y a tu presupuesto. Puedes elegir los sistemas operativos, las pilas de desarrollo, los lenguajes, los frameworks, los servicios y otras tecnologías de software que prefieras.
Configura de forma automática mediante Google Cloud Marketplace
La forma más sencilla de implementar una pila completa de hosting web es usar Google Cloud Marketplace. Con solo algunos clics, puedes implementar cualquiera de las más de 100 soluciones completas con la implementación en un clic de Google o Bitnami.
Por ejemplo, puedes configurar una pila de LAMP o WordPress con Cloud Marketplace. El sistema implementa una pila de software completa y operativa en solo cuestión de minutos en una sola instancia. Antes de proceder con la implementación, Cloud Marketplace te mostrará estimaciones de costos para la ejecución del sitio, te dará información clara sobre las versiones de los componentes de software que instalará por ti y te permitirá personalizar la configuración mediante el cambio de los nombres de la instancia de componente, la elección del tipo de máquina y del tamaño del disco. Después de la implementación, tendrás control completo sobre las instancias de Compute Engine, su configuración y el software.
Realiza una configuración manual
También puedes crear la infraestructura en Compute Engine de forma manual, ya sea si compilas la configuración desde cero o si compilas en una implementación de Google Cloud Marketplace. Por ejemplo, es posible que desees usar una versión de un componente de software que no ofrece Cloud Marketplace, o tal vez prefieras instalar y configurar todo por tu cuenta.
Este artículo no incluye un framework completo ni recomendaciones para configurar un sitio web. No obstante, desde una perspectiva de nivel alto, el aspecto técnico de la configuración de una infraestructura de hosting web en Compute Engine requiere las siguientes acciones:
- Comprende los requisitos. Si creas un nuevo sitio web, asegúrate de comprender los componentes que necesitas, como las instancias, la infraestructura de herramientas de redes y las necesidades de almacenamiento. Si migras la app desde una solución existente, es probable que ya conozcas estos requisitos, pero debes pensar en cómo se asigna la configuración existente a los servicios de Google Cloud.
- Planifica el diseño. Piensa en tu arquitectura y escribe el diseño. Debes ser tan explícito como puedas.
- Crea los componentes. Los componentes que sueles considerar como elementos físicos, por ejemplo, computadoras o conmutadores de red, se proporcionan a través de los servicios de Compute Engine. Por ejemplo, si quieres una computadora, tendrás que crear una instancia de Compute Engine. Si quieres una unidad de disco duro persistente, también tendrás que crearla. La infraestructura como las herramientas de código, por ejemplo, Terraform, hace que sea un proceso sencillo y repetible.
- Configura y personaliza. Una vez que tenga los componentes que deseas, debes configurarlos, instalar y configurar el software y escribir y, además, implementar cualquier código de personalización que necesites. Puedes replicar la configuración mediante la ejecución de secuencias de comandos de shell, que será útil para acelerar futuras implementaciones. Terraform también ayuda en este caso, ya que proporciona plantillas de configuración declarativas y flexibles que te permitirán realizar una implementación automática de los recursos. También puedes aprovechar las herramientas de automatización de TI, como Puppet y Chef.
- Implementa los elementos. Es probable que tengas imágenes y páginas web.
- Prueba. Verifica que todo funcione según lo esperado.
- Implementa para producción. Abre el sitio para que el mundo lo vea y lo use.
Para ayudarte a comenzar y comprender de qué se trata la configuración de instancias de Compute Engine de manera manual, te sugerimos consultar uno o más de los siguientes instructivos:
Cómo almacenar datos con Compute Engine
La mayoría de los sitios web requieren algún tipo de almacenamiento. Puedes necesitar almacenamiento por diversos motivos, como guardar archivos que subieron los usuarios y los elementos que usa tu sitio.
Google Cloud ofrece una variedad de servicios de almacenamiento administrados, incluidos los siguientes:
- Una base de datos SQL en Cloud SQL, que es un servicio de base de datos relacional completamente administrado para MySQL, PostgreSQL y SQL Server.
- Dos opciones para el almacenamiento de datos NoSQL: Firestore y Bigtable
- Memorystore, que es un servicio de almacenamiento de datos en la memoria completamente administrado Redis y Memcached.
- Almacenamiento de objetos coherente, escalable y de gran capacidad en Cloud Storage
Cloud Storage tiene varias clases:
- La clase Standard proporciona la máxima disponibilidad.
- Nearline ofrece una opción de bajo costo ideal para los datos a los que se accede menos de una vez al mes.
- Coldline brinda una opción de bajo costo ideal para los datos a los que se accede menos de una vez por trimestre.
- Archive proporciona la opción de menor costo para el archivado, la creación de copias de seguridad y la recuperación ante desastres.
- Discos persistentes en Compute Engine, para usar como almacenamiento principal en las instancias. Compute Engine ofrece discos persistentes basados en discos duros, conocidos como discos persistentes estándar, y discos persistentes de estado sólido (SSD). Con los discos persistentes, también puedes configurar la tecnología de almacenamiento que prefieras en Compute Engine. Por ejemplo, puedes configurar PostgreSQL como la base de datos SQL o MongoDB como el almacenamiento NoSQL. Si deseas conocer la gama completa de servicios de almacenamiento de Google Cloud y sus beneficios, consulta Elige una opción de almacenamiento.
Balanceo de cargas con Compute Engine
El uso de tecnologías de balanceo de cargas que permitan distribuir las cargas de trabajo entre los servidores suele ser un requisito para cualquier sitio web que funcione a gran escala. Tienes una gran variedad de opciones para diseñar tus servidores web con balanceo de cargas en Compute Engine:
- Balanceo de cargas de HTTP(S).
Se explican los aspectos básicos de usar Cloud Load Balancing.
- Balanceo de cargas basado en el contenido. Se muestra cómo distribuir el tráfico entre distintas instancias según la URL nueva.
- Balanceo de cargas entre regiones. Se muestra la configuración de instancias de VM en distintas regiones y el uso del balanceo de cargas de HTTP o HTTPS para distribuir tráfico entre las regiones.
- Balanceo de cargas del proxy de TCP. Se muestra la configuración del balanceo de cargas del proxy de TCP global para un servicio que está presente en varias regiones.
- Balanceo de cargas del proxy de SSL. Se muestra la configuración del balanceo de cargas del proxy de SSL global para un servicio que está presente en varias regiones.
- Terminación de IPv6 para el balanceo de cargas de HTTP(S), proxy de SSL y proxy de TCP. Se explica la terminación de IPv6 y las opciones para configurar los balanceadores de cargas destinados a administrar las solicitudes de IPv6.
- Balanceo de cargas de red. Se muestra una situación básica de configuración de balanceo de cargas de capa 3 para distribuir el tráfico de HTTP en todas las instancias en buen estado.
- Balanceo de cargas entre regiones con los backends de Microsoft IIS. Se muestra cómo usar el balanceador de cargas de Compute Engine para distribuir el tráfico entre los servidores de Microsoft Internet Information Services (IIS).
- Configuración del balanceo de cargas interno. Puedes configurar un balanceador de cargas que distribuya el tráfico de red en una red privada que no esté expuesta a Internet. El balanceo de cargas interno es útil no solo en las aplicaciones de intranet en las que todo el tráfico permanece en una red privada, sino también en las aplicaciones web complejas en las que el frontend envía solicitudes a los servidores de backend con una red privada.
La implementación del balanceo de cargas es flexible, y puedes usar Compute Engine con tus soluciones existentes. Por ejemplo, el balanceo de cargas HTTP(S) con Nginx es una solución posible que puedes usar en lugar del balanceador de cargas de Compute Engine.
Distribución de contenido con Compute Engine
Dado que el tiempo de respuesta es una métrica esencial para cualquier sitio web, el uso de una CDN que permita reducir la latencia y aumentar el rendimiento suele ser un requisito, en especial para los sitios con tráfico web global.
Cloud CDN usa los puntos de presencia perimetrales distribuidos de forma global para entregar contenido desde las ubicaciones de caché más cercanas a los usuarios. Cloud CDN funciona con el balanceo de cargas de HTTP(S). Para entregar contenido fuera de Compute Engine, Cloud Storage o ambos desde una sola dirección IP, habilita Cloud CDN para obtener un balanceador de cargas HTTP(S).
Ajuste de escala automático con Compute Engine
Puedes configurar tu arquitectura para agregar y quitar servidores según la variación de la demanda. Este enfoque garantiza el buen rendimiento del sitio en cargas máximas y, a la vez, mantiene los costos bajo control durante los períodos de demanda mayor que la típica. Compute Engine te ofrece un escalador automático que puedes usar para este propósito.
El ajuste de escala automático es una función de los grupos de instancias administrados. Un grupo de instancias administrado es un conjunto de instancias de máquinas virtuales homogéneas que se creó a partir de una plantilla de instancias común. Un escalador automático incorpora o quita instancias en un grupo de instancias administrado. Aunque Compute Engine tiene grupos de instancias administradas y no administradas, solo puedes usar grupos de instancias administrados con un escalador automático. Para obtener más información, consulta el ajuste de escala automático en Compute Engine.
Si deseas obtener información detallada sobre lo que se necesita para compilar una solución de aplicación web escalable y resiliente, consulta Compila aplicaciones web escalables y resilientes.
Crea registros y supervisa con Compute Engine
Google Cloud incluye funciones que puedes usar para controlar lo que sucede en tu sitio web.
Cloud Logging recopila y almacena registros de apps y servicios en Google Cloud. Puedes ver o exportar los registros y, también, integrar registros de terceros a un agente de Logging.
Cloud Monitoring proporciona paneles y alertas para el sitio. Debes configurar Monitoring mediante la consola de Google Cloud. Puedes revisar las métricas de rendimiento de los servicios en la nube, las máquinas virtuales y los servidores de código abierto comunes, como MongoDB, Apache, Nginx y Elasticsearch. Puedes usar la API de Cloud Monitoring para recuperar datos de supervisión y crear métricas personalizadas.
Cloud Monitoring también proporciona verificaciones de tiempo de actividad, que envían solicitudes a tus sitios web para ver si responden. Puedes supervisar la disponibilidad de un sitio web mediante la implementación de una política de alertas que cree un incidente si falla la verificación de tiempo de actividad.
Administra DevOps con Compute Engine
Si deseas obtener más información sobre cómo administrar DevOps con Compute Engine, consulta los siguientes artículos:
- Prueba de carga distribuida con Kubernetes
- Usa Jenkins para compilaciones distribuidas en Compute Engine
Usa contenedores con GKE
Es posible que ya uses contenedores, como Docker. Para el hosting web, los contenedores ofrecen varias de las siguientes ventajas:
- Uso de componentes. Puedes usar contenedores para separar los distintos componentes de la app web. Por ejemplo, supongamos que el sitio ejecuta un servidor web y una base de datos, puedes ejecutar estos componentes en contenedores individuales y, así, podrás modificar y actualizar un componente sin afectar al otro. A medida que el diseño de la app se vuelve más complejo, los contenedores son una buena opción para una arquitectura orientada a los servicios, que incluye microservicios. Este tipo de diseño admite escalabilidad, entre otros objetivos.
- Portabilidad. Un contenedor incluye todos los elementos que necesita para ejecutarse: tu aplicación y sus dependencias están agrupadas. Puedes ejecutar tus contenedores en una gran variedad de plataformas, sin preocuparte por los detalles del sistema subyacente.
- Implementación rápida. Cuando haya que implementar, tu sistema se compilará a partir de un conjunto de imágenes y definiciones, para que las partes puedan implementarse de manera confiable, rápida y automática. Los contenedores suelen ser pequeños y se implementan con más rápido, en comparación con las máquinas virtuales.
El procesamiento en contenedores de Google Cloud ofrece aún más ventajas para el hosting web, como las siguientes:
- Organización. GKE es un servicio administrado que se compiló en Kubernetes, el sistema de organización de contenedores de código abierto que presenta Google. Con GKE, el código se ejecuta en contenedores que forman parte de un clúster compuesto por instancias de Compute Engine. En vez de administrar contenedores individuales o de crear y cerrar cada contenedor de manera manual, puedes administrar el clúster de forma automática con GKE, que usará la configuración que definas.
- Registro de imagen. Container Registry o Artifact Registry proporcionan almacenamiento privado para imágenes de Docker en Google Cloud. Puedes acceder al registro a través de un extremo HTTPS, por lo que puedes extraer imágenes de cualquier máquina, ya sea de una instancia de Compute Engine o de tu hardware. El servicio de registro aloja las imágenes personalizadas en Cloud Storage en el proyecto de Google Cloud. Este enfoque garantiza de forma predeterminada que solo las principales que tengan acceso a tu proyecto puedan acceder a las imágenes personalizadas.
- Movilidad. Significa que tienes la flexibilidad de mover y combinar cargas de trabajo con otros proveedores de servicios en la nube, o combinar cargas de trabajo de computación en la nube con implementaciones locales para crear una solución híbrida.
Almacena datos con GKE
Debido a que GKE se ejecuta en Google Cloud y usa instancias de Compute Engine como nodos, las opciones de almacenamiento tienen mucho en común con el almacenamiento en Compute Engine. Puedes acceder a Cloud SQL, Cloud Storage, Firestore y Bigtable a través de sus API o puedes usar otro proveedor de almacenamiento externo si lo deseas. Sin embargo, la interacción de GKE con los discos persistentes de Compute Engine es diferente de la de una instancia normal de Compute Engine.
Una instancia de Compute Engine incluye un disco adjunto. Cuando usas Compute Engine, el volumen de disco permanece en la instancia, siempre que esta exista. Además, puedes separar el disco y usarlo con una instancia diferente. En un contenedor, los archivos en disco son efímeros. Cuando se reinicia un contenedor, por ejemplo, después de una falla, se pierden los archivos en disco. Kubernetes resuelve este problema mediante las abstracciones de volumen y clase de almacenamiento. Un tipo de clase de almacenamiento es GCE PD
.
Esto significa que puedes usar los discos persistentes de Compute Engine con contenedores para evitar que los archivos de datos se borren cuando usas GKE.
Para conocer las características y los beneficios de un volumen, primero debes aprender sobre los pods. Un pod es un host lógico específico de la aplicación para uno o más contenedores. Se ejecuta en una instancia de nodo. Cuando los contenedores forman parte de un pod, pueden compartir varios recursos, entre ellos, un conjunto de volúmenes de almacenamiento compartido. Estos volúmenes permiten que los datos se conserven a pesar de los reinicios del contenedor y que se puedan compartir entre los contenedores del pod. Puedes usar un solo contenedor y volumen en un pod, pero el pod es una abstracción necesaria para conectar de forma lógica estos recursos entre sí.
Consulta el instructivo Usa discos persistentes con WordPress y MySQL para ver ejemplos.
Balanceo de cargas con GKE
Muchas arquitecturas grandes de hosting web requieren varios servidores en funcionamiento para poder compartir las demandas de tráfico. Debido a que puedes crear y administrar múltiples contenedores, nodos y pods con GKE, es una opción natural para un sistema de hosting web con balanceo de cargas.
Usa el balanceo de cargas de red
La forma más fácil de crear un balanceador de cargas en GKE es mediante el uso del balanceo de cargas de red de Compute Engine. El balanceo de cargas de red puede balancear las cargas de los sistemas que se basan en datos entrantes del protocolo de Internet, como la dirección, el puerto y el tipo de protocolo. El balanceo de cargas de red usa reglas de reenvío. Estas reglas apuntan a grupos de destino que enumeran las instancias disponibles para usar en el balanceo de cargas.
Con el balanceo de cargas de red, se pueden balancear las cargas de protocolos adicionales basados en TCP/UDP, como el tráfico SMTP, y la app puede inspeccionar los paquetes directamente.
Para implementar el balanceo de cargas de red, solo debes agregar el campo type: LoadBalancer
al archivo de configuración del servicio.
Usa el balanceo de cargas de HTTP(S)
Si necesitas funciones de balanceo de cargas más avanzadas, como el balanceo de cargas de HTTPS, basado en el contenido o entre regiones, puedes integrar tu servicio de GKE a la función de balanceo de cargas de HTTP/HTTPS de Compute Engine. Kubernetes proporciona el recurso Ingress, que encapsula una colección de reglas para enrutar tráfico externo a los extremos de Kubernetes. En GKE, un recurso Ingress se encarga de aprovisionar y configurar el balanceador de cargas HTTP / HTTPS de Compute Engine.
Para obtener más información sobre el uso del balanceador de cargas HTTP/HTTPS en GKE, consulta Configura el balanceo de cargas HTTP con Ingress.
Escala con GKE
Para cambiar el tamaño de los clústeres de manera automática, puedes usar el escalador automático de clúster. Esta función comprueba periódicamente si hay pods que esperan un nodo con recursos libres, pero que no están programados. Si existe un pod con esas características, el escalador automático cambiará el tamaño del grupo de nodos, siempre que esta acción permita la programación de los pods en espera.
El escalador automático de clúster también supervisa el uso de todos los nodos. Si un nodo no será necesario por un período prolongado y todos sus pods pueden programarse en otro lugar, entonces el nodo se borra.
Si deseas obtener más información sobre el escalador automático de clúster, sus limitaciones y recomendaciones, consulta la documentación sobre el escalador automático de clúster.
Registra y supervisa con GKE
Al igual que Compute Engine, Logging y Monitoring te proporcionan servicios de registro y supervisión. Logging recopila y almacena registros de apps y servicios. Puedes ver o exportar los registros y, también, integrar registros de terceros a un agente de Logging.
Monitoring proporciona paneles y alertas para el sitio. Debes configurar Monitoring mediante la consola de Google Cloud. Puedes revisar las métricas de rendimiento de los servicios en la nube, las máquinas virtuales y los servidores de código abierto comunes, como MongoDB, Apache, Nginx y Elasticsearch. Puedes usar la API de Monitoring para recuperar datos de supervisión y crear métricas personalizadas.
Administra DevOps con GKE
Cuando usas GKE, obtienes muchos de los beneficios en los que la mayoría de las personas piensan cuando piensan en DevOps. Esto es especialmente cierto cuando se trata de facilidad de empaquetado, implementación y administración. Para tus necesidades de flujo de trabajo de CI/CD, puedes aprovechar las herramientas compiladas para la nube, como Cloud Build y Cloud Deploy, o herramientas populares, como Jenkins. Si deseas obtener más información, consulta los siguientes artículos:
Compila una plataforma administrada con App Engine
En Google Cloud, la plataforma como servicio (PaaS) administrada se denomina App Engine. Cuando compilas un sitio web con App Engine, puedes enfocarte en codificar las funciones y dejar que Google se encargue de administrar la infraestructura de respaldo. App Engine ofrece una amplia variedad de funciones que hacen que la escalabilidad, el balanceo de cargas, el registro, la supervisión y la seguridad sean mucho más fáciles que si tuvieras que compilarlos y administrarlos tú mismo. App Engine te permite codificar en diversos lenguajes de programación y puede usar una gran variedad de otros servicios de Google Cloud.
App Engine proporciona el entorno estándar, que te permite ejecutar apps en un entorno de zona de pruebas seguro. El entorno estándar de App Engine distribuye las solicitudes entre varios servidores y escala los servidores para cumplir con las demandas de tráfico. La app se ejecuta en su propio entorno seguro y confiable que es independiente del hardware, el sistema operativo o la ubicación física del servidor.
App Engine también ofrece el entorno flexible para brindarte más opciones. Cuando usas el entorno flexible, la aplicación se ejecuta en instancias configurables de Compute Engine, pero App Engine administra el entorno de hosting por ti. Esto significa que puedes usar entornos de ejecución adicionales, incluso personalizados, para obtener más opciones de lenguajes de programación. Además, puedes aprovechar la flexibilidad que ofrece Compute Engine, como elegir entre una variedad de opciones de CPU y memoria.
Lenguajes de programación
El entorno estándar de App Engine proporciona entornos de ejecución predeterminados y puedes escribir código fuente en versiones específicas de los lenguajes de programación admitidos.
Con el entorno flexible, puedes escribir el código fuente en una versión de cualquiera de los lenguajes de programación admitidos. Puedes personalizar estos entornos de ejecución o proporcionar tu propio entorno con una imagen de Docker personalizada o un Dockerfile.
Si el lenguaje de programación que usas es tu preocupación principal, debes decidir si los entornos de ejecución proporcionados por el entorno estándar de App Engine se ajustan a tus necesidades. Si no lo hacen, debes considerar el uso del entorno flexible.
Para determinar el tipo de entorno que mejor se adapte a las necesidades de tu aplicación, consulta Elige un entorno de App Engine.
Instructivos de introducción por lenguaje
En los siguientes instructivos, encontrarás más información para que puedas comenzar a usar el entorno estándar de App Engine:
- Hello World en Python
- Hello World en Java
- Hello World en PHP
- Hello World en Ruby
- Hello World en Go
- Hello World en Node.js
En los siguientes instructivos, encontrarás más información para que puedas comenzar a usar el entorno flexible:
- Comienza a usar Python
- Comienza a usar Java
- Primeros pasos con PHP
- Comienza a usar Go
- Comienza a usar Node.js
- Primeros pasos con Ruby
- Comienza a usar .NET
Almacena datos con App Engine
App Engine te ofrece las siguientes opciones para almacenar datos:
Nombre | Estructura | Coherencia |
---|---|---|
Firestore | Sin esquemas | Coherencia sólida |
Cloud SQL | Relacional | Coherencia sólida |
Cloud Storage | Archivos y sus metadatos asociados | Coherencia sólida, salvo cuando se realizan listas de operaciones que obtienen una lista de objetos o depósitos |
También puedes usar varias bases de datos de terceros con el entorno estándar.
Para obtener más detalles sobre el almacenamiento en App Engine, consulta Elige una opción de almacenamiento y, luego, selecciona el lenguaje de programación que prefieras.
Cuando usas el entorno flexible, puedes usar todas las mismas opciones de almacenamiento que utilizas en el entorno estándar, además de una variedad más amplia de bases de datos de terceros. Para obtener más información sobre bases de datos de terceros en el entorno flexible, consulta Usa bases de datos de terceros.
Balanceo de cargas y ajuste de escala automático con App Engine
De forma predeterminada, App Engine enruta automáticamente las solicitudes entrantes a las instancias de backend apropiadas y realiza el balanceo de cargas por ti. Sin embargo, si deseas aprovechar las capacidades de balanceo de cargas HTTP(S) de nivel empresarial, destacadas en Google Cloud, puedes usar grupos de extremo de red sin servidores.
Respecto al escalamiento, App Engine puede crear y apagar instancias de forma automática a medida que el tráfico fluctúa, o puedes especificar una cantidad de instancias que se deben ejecutar, sin importar la cantidad de tráfico.
Registra y supervisa con App Engine
En App Engine, las solicitudes se registran de forma automática, y puedes ver estos registros en la consola de Google Cloud. App Engine también funciona con bibliotecas estándar y específicas de lenguajes que proporcionan una función de registro y reenvían las entradas de registro a los registros de la consola de Google Cloud. Por ejemplo, en Python, puedes usar el módulo de registro estándar de Python y, en Java, puedes integrar el adjuntador de Logback o java.util.logging
con Cloud Logging. En este enfoque, se habilitan las funciones completas de Cloud Logging y solo requiere unas pocas líneas de código específico de Google Cloud.
Cloud Monitoring proporciona funciones para supervisar las apps de App Engine. A través de la consola de Google Cloud, puedes supervisar los incidentes, las verificaciones de tiempo de actividad y otros detalles.
Compila en una plataforma sin servidores con Cloud Run
Con la plataforma sin servidores de Google Cloud, puedes codificar a tu manera sin preocuparte de la infraestructura subyacente. Puedes compilar aplicaciones sin servidores de pilas completas con las soluciones de Google Cloud para el almacenamiento, las bases de datos, el aprendizaje automático y mucho más.
En el caso de tus sitios web alojados en contenedores, también puedes implementarlos en Cloud Run, además de usar GKE. Cloud Run es una plataforma sin servidores y completamente administrada que te permite ejecutar aplicaciones alojadas en contenedores altamente escalables en Google Cloud. Solo pagas por el tiempo en que se ejecuta tu código.
El uso de contenedores con Cloud Run te permite aprovechar las tecnologías maduras como Nginx, Express.js y Django para compilar tus sitios web, acceder a tu base de datos de SQL en Cloud SQL y procesar páginas HTML dinámicas.
En la documentación de Cloud DNS, se incluye una guía de inicio rápido para que puedas comenzar.
Almacena datos con Cloud Run
Los contenedores de Cloud Run son efímeros y necesitas comprender sus cuotas y límites para tus casos de uso. Los archivos se pueden almacenar temporalmente para su procesamiento en una instancia de contenedor, pero este almacenamiento proviene de la memoria disponible para el servicio, como se describe en el contrato de entorno de ejecución.
Para el almacenamiento continuo, similar a App Engine, puedes elegir los servicios de Google Cloud, como Cloud Storage, Firestore o Cloud SQL. De forma alternativa, también puedes usar una solución de almacenamiento de terceros.
Balanceo de cargas y ajuste de escala automático con Cloud Run
De forma predeterminada, cuando compilas en Cloud Run, este enruta automáticamente las solicitudes entrantes a los contenedores de backend apropiados y realiza el balanceo de cargas por ti. Sin embargo, si deseas aprovechar las capacidades de balanceo de cargas HTTP(S) de nivel empresarial, destacadas en Google Cloud, puedes usar grupos de extremo de red sin servidores.
Con el balanceo de cargas de HTTP(S), puedes habilitar Cloud CDN o entregar tráfico desde varias regiones. Además, puedes usar middleware como API Gateway para mejorar tu servicio.
En el caso de Cloud Run, Google Cloud administra por ti el ajuste de escala automático de instancias de contenedor. Cada revisión se escala de forma automática para la cantidad de instancias de contenedor necesarias a fin de manejar todas las solicitudes entrantes. Cuando una revisión no recibe tráfico, se escala de forma predeterminada a cero instancias de contenedor. Sin embargo, si lo deseas, puedes cambiar este valor predeterminado para especificar que una instancia se mantenga inactiva o en espera con la configuración de instancias mínimas.
Registra y supervisa con Cloud Run
Cloud Run tiene dos tipos de registros que se envían automáticamente a Cloud Logging:
- Registros de solicitudes: Registros de solicitudes enviadas a los servicios de Cloud Run. Estos registros se crean de forma automática.
- Registros de contenedores: Registros emitidos desde las instancias de contenedor, por lo general, desde tu propio código, escritos en ubicaciones compatibles como se describe en Escribe registros de contenedores.
Puedes visualizar los registros de tu servicio de estas dos maneras:
- Usa la página de Cloud Run en la consola de Google Cloud.
- Usa el explorador de registros de Cloud Logging en la consola de Google Cloud.
Ambos métodos de visualización analizan los mismos registros almacenados en Cloud Logging, pero el Explorador de registros proporciona más detalles y más capacidades de filtrado.
Cloud Monitoring proporciona supervisión del rendimiento de Cloud Run, métricas y verificaciones de tiempo de actividad, junto con alertas para enviar notificaciones cuando se superaron los límites de las métricas. Se aplican los precios de Google Cloud Observability, lo que significa que no se aplican cargos por las métricas de la versión completamente administrada de Cloud Run. Ten en cuenta que también puedes usar las métricas personalizadas de Cloud Monitoring.
Cloud Run se integra en Cloud Monitoring sin necesidad de configurarlo. Esto significa que las métricas de los servicios de Cloud Run se capturan de forma automática cuando se ejecutan.
Compila sistemas de administración de contenido
EL hosting de un sitio web se refiere a administrar los elementos del sitio. Cloud Storage proporciona un repositorio global para estos elementos. Una arquitectura común implementa contenido estático en Cloud Storage y, luego, se sincroniza con Compute Engine para procesar páginas dinámicas. Cloud Storage trabaja con muchos sistemas de administración de contenido de terceros, como WordPress, Drupal y Joomla. Además, ofrece una API compatible con Amazon S3, por lo que cualquier sistema que funciona con Amazon S3 también lo hace con Cloud Storage.
El siguiente diagrama es una arquitectura de muestra para un sistema de administración de contenido.
¿Qué sigue?
- Explora arquitecturas de referencia, diagramas y prácticas recomendadas sobre Google Cloud. Consulta nuestro Cloud Architecture Center.