En este artículo se explica cómo alojar un sitio web en Google Cloud. Google Cloud ofrece una plataforma potente, flexible, fiable y escalable para servir sitios web. Google se ha creado Google Cloud con la misma infraestructura que usa Google para ofrecer contenido de sitios como Google.com, YouTube y Gmail. Puedes alojar el contenido de tu sitio web usando el tipo y el diseño de infraestructura que mejor se adapten a tus necesidades.
Este artículo puede resultarte útil si:
- Tener conocimientos sobre cómo crear un sitio web y haber implementado y ejecutado alguna infraestructura de alojamiento web anteriormente.
- Evaluar si migrar tu sitio a Google Cloudy cómo hacerlo.
Si quieres crear un sitio web sencillo, te recomendamos que uses Google Sites, una herramienta estructurada para crear wikis y páginas web. Para obtener más información, consulta la ayuda de Sites.
Elegir una opción
Si no has usado nunca Google Cloud, es recomendable que empieces con el tipo de tecnología que ya conoces. Por ejemplo, si actualmente usas servidores de hardware o máquinas virtuales (VMs) para alojar tu sitio, quizás con otro proveedor de servicios en la nube o en tu propio hardware, Compute Engine te ofrece un paradigma familiar. Si prefieres la computación sin servidor, probablemente Cloud Run sea una buena opción para ti. Si usas una plataforma como servicio (PaaS), como Heroku o Engine Yard, App Engine puede ser la mejor opción para empezar.
Cuando te hayas familiarizado con Google Cloud, podrás descubrir la gran variedad de productos y servicios que ofrece Google Cloud . Por ejemplo, si has empezado usando Compute Engine, puedes aumentar las funciones de tu sitio con 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 carga | Escalabilidad | Almacenamiento de registros y monitorización |
---|---|---|---|---|---|
Sitio web estático | Cloud Storage Firebase Hosting |
Segmento 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, llamados discos persistentes estándar, y discos persistentes de estado sólido (SSD). |
HTTP o HTTPS Proxy TCP Proxy SSL Cancelación de IPv6 Red Interregional Interno |
Automáticamente con grupos de instancias gestionados | |
Contenedores | GKE | Similar a Compute Engine, pero interactúa con los discos persistentes de forma diferente. |
Red HTTP o HTTPS |
Herramienta de adaptación dinámica de clústeres | |
Soluciones sin servidor | Cloud Run |
Google Cloud servicios como Cloud SQL, Firestore, Cloud Storage y bases de datos de terceros accesibles | HTTP o HTTPS Gestionado por Google |
Gestionado por Google | |
Plataforma gestionada | App Engine |
Google Cloud servicios como Cloud SQL, Firestore, Cloud Storage y bases de datos de terceros accesibles | HTTP o HTTPS Gestionado por Google |
Gestionado por Google |
En este artículo se explican las principales tecnologías que puede usar para el alojamiento web en Google Cloud y se muestra cómo funcionan. En el artículo se incluyen enlaces a documentación completa, tutoriales y artículos de soluciones que pueden ayudarte a profundizar en el tema cuando estés preparado.
Información sobre los costes
Como hay muchas variables y cada implementación es diferente, no podemos ofrecer asesoramiento específico sobre los costes en este artículo. Para entender los principios de Google sobre cómo funcionan los precios en Google Cloud, consulta la página de precios. Para consultar los precios de cada servicio, ve a la sección de precios de los productos. También puedes usar la calculadora de precios para estimar cómo podría ser tu uso de Google Cloud . Puedes proporcionar detalles sobre los servicios que quieres usar y, a continuación, ver una estimación de los precios.
Configurar servicios de nombres de dominio
Normalmente, querrás registrar un nombre de dominio para tu sitio. Puedes usar un registrador de nombres de dominio público para registrar un nombre único para tu sitio. Si quieres tener el control total de tu sistema de nombres de dominio (DNS), puedes usar Cloud DNS como proveedor de DNS. La documentación de Cloud DNS incluye una guía de inicio rápido para ayudarte a empezar.
Si ya tienes un proveedor de DNS que quieres usar, normalmente tendrás que crear un par de registros con ese proveedor. En el caso de un nombre de dominio como example.com
, debes crear un registro A
con tu proveedor de DNS. En el caso del subdominio www.example.com
, crea un registro CNAME
para www
de forma que apunte al dominio example.com
. El registro A
asigna un nombre de host a una dirección IP.
El registro CNAME
crea un alias para el registro A
.
Si el registrador de tu nombre de dominio también es tu proveedor de DNS, probablemente no tengas que hacer nada más. Si usas proveedores independientes para el registro y el DNS, asegúrate de que el registrador de tu nombre de dominio tenga los servidores de nombres correctos asociados a tu dominio.
Después de hacer los cambios en el DNS, las actualizaciones de los registros pueden tardar un tiempo en propagarse, en función de los valores de tiempo de vida (TTL) de tu zona. Si se trata de un nombre de host nuevo, los cambios se aplicarán rápidamente porque los solucionadores de DNS no tienen valores anteriores en caché y pueden ponerse en contacto con el proveedor de DNS para obtener la información necesaria para enrutar las solicitudes.
Alojar un sitio web estático
La forma más sencilla de publicar 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 sirven sin cambios, tal como se escribieron, normalmente mediante HTML. Usar un sitio web estático es una buena opción si las páginas de su sitio cambian con poca frecuencia después de publicarse, como las entradas de blog o las páginas que forman parte de un sitio web de una pequeña empresa. Puedes hacer muchas cosas con las páginas web estáticas, pero si necesitas que tu sitio tenga interacciones sólidas con los usuarios a través de código del lado del servidor, deberías tener en cuenta las otras opciones que se describen en este artículo.
Alojar sitios web estáticos con Cloud Storage
Para alojar un sitio estático en Cloud Storage, debes crear un segmento de Cloud Storage, subir el contenido y probar el nuevo sitio. Puedes
servir tus datos directamente desde storage.googleapis.com
o puedes
verificar que eres el propietario de tu dominio
y usar
tu nombre de dominio.
Puedes crear tus páginas web estáticas como quieras. Por ejemplo, puedes crear páginas manualmente con 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 escribiendo en markdown y proporcionando plantillas y herramientas. Los generadores de sitios suelen proporcionar un servidor web local que puedes usar para previsualizar tu contenido.
Una vez que tu sitio estático funcione, podrás actualizar las páginas estáticas con el proceso que quieras. Este proceso puede ser tan sencillo como copiar a mano una página actualizada en el contenedor. Puedes usar un enfoque más automatizado, como almacenar tu contenido en GitHub y, después, usar un webhook para ejecutar una secuencia de comandos que actualice el contenedor. Un sistema aún más avanzado podría usar una herramienta de integración y entrega continuas (CI/CD), como Jenkins, para actualizar el contenido del contenedor. Jenkins tiene un complemento de Cloud Storage
que proporciona un Google Cloud Storage Uploader
paso posterior a la compilación para publicar artefactos de compilación en Cloud Storage.
Si tienes una aplicación web que necesite servir contenido estático o archivos multimedia estáticos subidos por los usuarios, Cloud Storage puede ser una forma rentable y eficaz de alojar y servir ese tipo de contenido, al tiempo que reduce la cantidad de solicitudes dinámicas a tu aplicación web.
Además, Cloud Storage puede aceptar directamente el contenido enviado por los usuarios. Esta función permite a los usuarios subir archivos multimedia de gran tamaño directamente y de forma segura sin necesidad de usar un proxy a través de tus servidores.
Para obtener el mejor rendimiento de tu sitio web estático, consulta las prácticas recomendadas de Cloud Storage.
Para obtener más información, consulta las siguientes páginas:
- Alojar un sitio web estático
- J de Jenkins (entrada de blog)
- Band Aid 30 en Google Cloud (entrada de blog)
- Documentación de Cloud Storage
Alojar un sitio web estático con Firebase Hosting
Firebase Hosting ofrece un alojamiento estático rápido y seguro para tu aplicación web. Con Firebase Hosting, puedes desplegar aplicaciones web y contenido estático en una red de distribución de contenido (CDN) global con un solo comando.
Estas son algunas de las ventajas que obtienes al usar Firebase Hosting:
- El SSL que no requiere configuración está integrado en Firebase Hosting. Proporciona certificados SSL en dominios personalizados de forma gratuita.
- Todo tu contenido se sirve a través de HTTPS.
- El contenido se distribuye a los usuarios desde los límites de la CDN en todo el mundo.
- Si utilizas la CLI de Firebase, puedes poner tu aplicación en marcha en cuestión de segundos. Usa herramientas de línea de comandos para añadir destinos de despliegue en el proceso de compilación.
- Dispones de funciones de gestión de versiones, como el despliegue atómico de nuevos recursos, el control de versiones completo y la posibilidad de volver a una versión anterior con un solo clic.
- Hosting ofrece una configuración útil para aplicaciones de una sola página y otros sitios que se parecen más a aplicaciones.
- Hosting se ha diseñado para que se pueda usar sin problemas con otras funciones de Firebase.
Para obtener más información, consulta las siguientes páginas:
Usar máquinas virtuales con Compute Engine
Para los casos prácticos de infraestructura como servicio (IaaS), Google Cloud proporciona Compute Engine. Compute Engine proporciona una infraestructura de computación sólida, pero debes elegir y configurar los componentes de la plataforma que quieras usar. Con Compute Engine, es tu responsabilidad configurar, administrar y monitorizar los sistemas. Google se asegura de que los recursos estén disponibles, sean fiables y estén listos para que los uses, pero depende de ti aprovisionarlos y gestionarlos. La ventaja es que tienes un control total de los sistemas y una flexibilidad ilimitada.
Usa Compute Engine para diseñar y desplegar casi cualquier sistema de alojamiento de sitios web que quieras. Puedes usar máquinas virtuales, llamadas instancias, para crear tu aplicación, de forma similar a como lo harías si tuvieras tu propia infraestructura de hardware. Compute Engine ofrece una gran variedad de tipos de máquinas para personalizar tu configuración y adaptarla a tus necesidades y presupuesto. Puedes elegir los sistemas operativos, las pilas de desarrollo, los lenguajes, los frameworks, los servicios y otras tecnologías de software que prefieras.
Configuración automática con Google Cloud Marketplace
La forma más sencilla de desplegar una pila de alojamiento web completa es usar Google Cloud Marketplace. Con solo unos clics, puedes desplegar cualquiera de las más de 100 soluciones totalmente desarrolladas con la función Click to Deploy de Google o con Bitnami.
Por ejemplo, puedes configurar una pila LAMP o WordPress con Cloud Marketplace. El sistema implementa una pila de software completa y funcional en solo unos minutos en una sola instancia. Antes de la implementación, Cloud Marketplace te muestra estimaciones de costes para ejecutar el sitio, te proporciona información clara sobre las versiones de los componentes de software que instala y te permite personalizar la configuración cambiando los nombres de las instancias de los componentes, eligiendo el tipo de máquina y seleccionando el tamaño del disco. Después de la implementación, tendrás control total sobre las instancias de Compute Engine, sus configuraciones y el software.
Configuración manual
También puedes crear tu infraestructura en Compute Engine manualmente, ya sea creando tu configuración desde cero o basándote en una implementación de Google Cloud Marketplace. Por ejemplo, puede que quieras usar una versión de un componente de software que no ofrece Cloud Marketplace o que prefieras instalar y configurar todo por tu cuenta.
Proporcionar un marco de trabajo completo y prácticas recomendadas para configurar un sitio web va más allá del alcance de este artículo. Sin embargo, a grandes rasgos, la parte técnica de la configuración de una infraestructura de alojamiento web en Compute Engine requiere que hagas lo siguiente:
- Conocer los requisitos Si vas a crear un sitio web, asegúrate de que conoces los componentes que necesitas, como las instancias, las necesidades de almacenamiento y la infraestructura de red. Si vas a migrar tu aplicación desde una solución actual, probablemente ya conozcas estos requisitos, pero debes pensar cómo se asigna tu configuración actual a los Google Cloud servicios.
- Planifica el diseño. Reflexiona sobre tu arquitectura y escribe tu diseño. Sé lo más explícito posible.
- Crea los componentes. Los componentes que normalmente se consideran recursos físicos, como los ordenadores y los conmutadores de red, se proporcionan a través de servicios en Compute Engine. Por ejemplo, si quieres un ordenador, tienes que crear una instancia de Compute Engine. Si quieres un disco duro persistente, también puedes crearlo. Las herramientas de infraestructura como código, como Terraform, hacen que este proceso sea fácil y repetible.
- Configurar y personalizar Una vez que tengas los componentes que quieras, tendrás que configurarlos, instalar y configurar el software, y escribir e implementar el código de personalización que necesites. Puedes replicar la configuración ejecutando secuencias de comandos shell, lo que te ayudará a acelerar las implementaciones futuras. Terraform también puede ayudarte en este caso, ya que proporciona plantillas de configuración declarativas y flexibles para desplegar recursos automáticamente. También puedes aprovechar las herramientas de automatización de TI, como Puppet y Chef.
- Implementa los recursos. Supongamos que tiene páginas web e imágenes.
- Prueba. Verifica que todo funcione como esperas.
- Implementar en producción. Abre tu sitio para que todo el mundo pueda verlo y usarlo.
Almacenar datos con Compute Engine
La mayoría de los sitios web necesitan algún tipo de almacenamiento. Es posible que necesites almacenamiento por varios motivos, como guardar los archivos que suban tus usuarios y, por supuesto, los recursos que utilice tu sitio.
Google Cloud ofrece una variedad de servicios de almacenamiento gestionados, entre los que se incluyen los siguientes:
- Una base de datos SQL en Cloud SQL, que es un servicio de bases de datos relacionales totalmente gestionado para MySQL, PostgreSQL y SQL Server.
- Hay dos opciones para almacenar datos NoSQL: Firestore y Bigtable.
- Memorystore, que es un servicio totalmente gestionado de almacenamiento de datos en memoria para Redis y Memcached.
- Almacenamiento de objetos coherente, escalable y de gran capacidad en Cloud Storage.
Cloud Storage se ofrece en varias clases:
- El estándar ofrece la máxima disponibilidad.
- Nearline es una opción de bajo coste ideal para los datos a los que se accede menos de una vez al mes.
- Coldline es una opción de bajo coste ideal para los datos a los que se accede menos de una vez al trimestre.
- Archive ofrece la opción más económica para el archivado, las copias de seguridad y la recuperación tras desastres.
- Discos persistentes en Compute Engine para usarlos como almacenamiento principal de tus instancias. Compute Engine ofrece discos persistentes basados en discos duros, llamados discos persistentes estándar, y discos persistentes de estado sólido (SSD). También puedes configurar tu tecnología de almacenamiento preferida en Compute Engine mediante discos persistentes. Por ejemplo, puedes configurar PostgreSQL como base de datos SQL o MongoDB como almacenamiento NoSQL. Para conocer todas las opciones y ventajas de los servicios de almacenamiento en Google Cloud, consulta el artículo Elegir una opción de almacenamiento.
Balanceo de carga con Compute Engine
En cualquier sitio web que funcione a gran escala, suele ser necesario usar tecnologías de equilibrio de carga para distribuir la carga de trabajo entre los servidores. Tienes varias opciones para diseñar tus servidores web con balanceo de carga en Compute Engine, entre las que se incluyen las siguientes:
- Balanceo de carga de HTTP y HTTPS.
Explica los conceptos básicos del uso de Cloud Load Balancing.
- Balanceo de carga basado en contenido. Muestra cómo distribuir el tráfico a diferentes instancias en función de la URL entrante.
- Balanceo de carga interregional. Muestra cómo configurar instancias de VM en diferentes regiones y cómo usar el balanceo de carga HTTP o HTTPS para distribuir el tráfico entre las regiones.
- Balanceo de carga del proxy TCP. Muestra cómo configurar el balanceo de carga de proxy TCP global para un servicio que existe en varias regiones.
- Balanceo de carga del proxy SSL. Muestra cómo configurar el balanceo de carga de proxy SSL global para un servicio que existe en varias regiones.
- Finalización de IPv6 para balanceo de carga del proxy TCP, proxy SSL, HTTP y HTTPS. Explica la cancelación de IPv6 y las opciones para configurar balanceadores de carga que gestionen solicitudes IPv6.
- Balanceo de carga de red: Muestra un escenario básico que configura una configuración de balanceo de carga de capa 3 para distribuir el tráfico HTTP entre instancias en buen estado.
- Balanceo de carga interregional con los backends de Microsoft IIS. Muestra cómo usar el balanceador de carga de Compute Engine para distribuir el tráfico a servidores de Microsoft Internet Information Services (IIS).
- Configurar el balanceo de carga interno Puedes configurar un balanceador de carga que distribuya el tráfico de red en una red privada que no esté expuesta a Internet. El balanceo de carga interno no solo es útil para las aplicaciones de intranet en las que todo el tráfico permanece en una red privada, sino también para las aplicaciones web complejas en las que un frontend envía solicitudes a servidores backend mediante una red privada.
La implementación del balanceo de carga es flexible y puedes usar Compute Engine con tus soluciones actuales. Por ejemplo, el balanceo de carga HTTP(S) con Nginx es una posible solución que puedes usar en lugar del balanceador de carga de Compute Engine.
Distribución de contenido con Compute Engine
Dado que el tiempo de respuesta es una métrica fundamental para cualquier sitio web, a menudo es necesario usar una CDN para reducir la latencia y aumentar el rendimiento, sobre todo en el caso de un sitio con tráfico web global.
Cloud CDN usa los puntos de presencia perimetrales que Google distribuye en todo el mundo para distribuir contenido desde las ubicaciones de caché más cercanas a los usuarios. Cloud CDN funciona con el balanceo de carga HTTP y HTTPS. Para servir contenido desde Compute Engine, Cloud Storage o ambos con una sola dirección IP, habilita Cloud CDN en un balanceador de carga HTTP o HTTPS.
Autoescalado con Compute Engine
Puedes configurar tu arquitectura para añadir y quitar servidores según varíe la demanda. Este enfoque puede ayudarte a asegurarte de que tu sitio funcione correctamente durante los picos de carga y, al mismo tiempo, mantener los costes bajo control durante los periodos de demanda más habituales. Compute Engine proporciona un escalador automático que puedes usar para este fin.
El autoescalado es una función de los grupos de instancias gestionados. Un grupo de instancias gestionado es un conjunto de instancias de máquina virtual homogéneas creadas a partir de una plantilla de instancia común. Un autoescalador añade o elimina instancias en un grupo de instancias gestionado. Aunque Compute Engine tiene grupos de instancias gestionados y no gestionados, solo puedes usar grupos de instancias gestionados con un escalador automático. Para obtener más información, consulta el artículo sobre el escalado automático en Compute Engine.
Para obtener información detallada sobre lo que se necesita para crear una solución de aplicación web escalable y resiliente, consulta el artículo Crear aplicaciones web escalables y resilientes.
Logging y monitorización con Compute Engine
Google Cloud incluye funciones que puedes usar para estar al tanto de lo que ocurre en tu sitio web.
Cloud Logging recoge y almacena registros de aplicaciones y servicios en Google Cloud. Puedes ver o exportar registros e integrar registros de terceros mediante un agente de registro.
Cloud Monitoring proporciona paneles e alertas para tu sitio. Puedes configurar Monitoring con la Google Cloud consola. Puede consultar las métricas de rendimiento de los servicios en la nube, las máquinas virtuales y los servidores de software libre habituales, como MongoDB, Apache, Nginx y Elasticsearch. Puede usar la API de Cloud Monitoring para obtener datos de monitorización y crear métricas personalizadas.
Cloud Monitoring también ofrece comprobaciones de disponibilidad del servicio, que envían solicitudes a tus sitios web para comprobar si responden. Puedes monitorizar la disponibilidad de un sitio web implementando una política de alertas que cree un incidente si falla la comprobación de disponibilidad.
Gestionar DevOps con Compute Engine
Para obtener información sobre cómo gestionar DevOps con Compute Engine, consulta Pruebas de carga distribuidas con Kubernetes.
Usar contenedores con GKE
Es posible que ya estés usando contenedores, como los contenedores de Docker. En el caso del alojamiento web, los contenedores ofrecen varias ventajas, entre las que se incluyen las siguientes:
- Componentización. Puedes usar contenedores para separar los distintos componentes de tu aplicación web. Por ejemplo, supongamos que tu sitio ejecuta un servidor web y una base de datos. Puedes ejecutar estos componentes en contenedores independientes, modificar y actualizar un componente sin que afecte al otro. A medida que el diseño de tu aplicación se vuelve más complejo, los contenedores son una buena opción para una arquitectura orientada a servicios, incluidos los microservicios. Este tipo de diseño admite la escalabilidad, entre otros objetivos.
- Portabilidad. Un contenedor tiene todo lo que necesita para ejecutarse: tu aplicación y sus dependencias se agrupan. Puedes ejecutar tus contenedores en una gran variedad de plataformas sin preocuparte por los detalles del sistema subyacente.
- Despliegue rápido. Cuando llega el momento de implementar el sistema, este se crea a partir de un conjunto de definiciones e imágenes, por lo que las partes se pueden implementar de forma rápida, fiable y automática. Los contenedores suelen ser pequeños y se despliegan mucho más rápido que, por ejemplo, las máquinas virtuales.
La computación de contenedores en Google Cloud ofrece aún más ventajas para el alojamiento web, como las siguientes:
- Orquestación. GKE es un servicio gestionado basado en Kubernetes, el sistema de orquestación de contenedores de código abierto presentado por Google. Con GKE, tu código se ejecuta en contenedores que forman parte de un clúster compuesto por instancias de Compute Engine. En lugar de administrar contenedores individuales o crear y cerrar cada contenedor manualmente, puedes gestionar automáticamente el clúster a través de GKE, que usa la configuración que definas.
- Registro de imágenes. Artifact Registry proporciona almacenamiento privado para imágenes Docker en Google Cloud. Puedes acceder al registro a través de un endpoint HTTPS, por lo que puedes extraer imágenes desde cualquier máquina, ya sea una instancia de Compute Engine o tu propio hardware. El servicio de registro aloja tus imágenes personalizadas en Cloud Storage en tuGoogle Cloud proyecto. De esta forma, se asegura de forma predeterminada que solo los principales que tengan acceso a tu proyecto puedan acceder a tus imágenes personalizadas.
- Movilidad. Esto significa que tienes la flexibilidad de mover y combinar cargas de trabajo con otros proveedores de servicios en la nube, o bien de combinar cargas de trabajo de computación en la nube con implementaciones on-premise para crear una solución híbrida.
Almacenar datos con GKE
Como GKE se ejecuta en Google Cloud y usa instancias de Compute Engine como nodos, tus 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 APIs, o bien usar otro proveedor de almacenamiento externo. Sin embargo, GKE interactúa con los discos persistentes de Compute Engine de forma diferente a como lo haría una instancia normal de Compute Engine.
Una instancia de Compute Engine incluye un disco conectado. Cuando usas Compute Engine, el volumen del disco permanece con la instancia mientras esta exista. Incluso puedes separar el disco y usarlo con otra instancia. Sin embargo, en un contenedor, los archivos del disco son efímeros. Cuando se reinicia un contenedor, por ejemplo, después de un fallo, se pierden los archivos del disco. Kubernetes resuelve este problema mediante las abstracciones volumen y clase de almacenamiento. Un tipo de clase de almacenamiento es
GCE PD
.
Esto significa que puedes usar discos persistentes de Compute Engine con contenedores para evitar que se eliminen tus archivos de datos cuando uses GKE.
Para entender las funciones y las ventajas de un volumen, primero debes conocer un poco los pods. Puedes considerar un pod como un host lógico específico de una aplicación para uno o varios contenedores. Un pod se ejecuta en una instancia de nodo. Cuando los contenedores son miembros de un pod, pueden compartir varios recursos, incluido un conjunto de volúmenes de almacenamiento compartido. Estos volúmenes permiten que los datos sobrevivan a los reinicios de los contenedores y que se compartan entre los contenedores del pod. Por supuesto, también puedes usar un solo contenedor y volumen en un pod, pero el pod es una abstracción necesaria para conectar lógicamente estos recursos entre sí.
Por ejemplo, consulta el tutorial Utilizar discos persistentes con WordPress y MySQL.
Balanceo de carga con GKE
Muchas arquitecturas de alojamiento web de gran tamaño necesitan tener varios servidores en funcionamiento que puedan compartir las demandas de tráfico. Como puedes crear y gestionar varios contenedores, nodos y pods con GKE, es una opción ideal para un sistema de alojamiento web con balanceo de carga.
Usar el balanceo de carga de red
La forma más sencilla de crear un balanceador de carga en GKE es usar el balanceo de carga de red de Compute Engine. El balanceo de carga de red puede equilibrar la carga de tus sistemas en función de los datos del protocolo de Internet entrantes, como la dirección, el puerto y el tipo de protocolo. El balanceo de carga de red usa reglas de reenvío. Estas reglas apuntan a grupos de destino que indican qué instancias se pueden usar para el balanceo de carga.
Con el balanceo de carga de red, puedes balancear la carga de protocolos adicionales basados en TCP/UDP, como el tráfico SMTP, y tu aplicación puede inspeccionar los paquetes directamente.
Para implementar el balanceo de carga de red, solo tienes que añadir el campo type: LoadBalancer
al archivo de configuración de tu servicio.
Usar el balanceo de carga de HTTP y HTTPS
Si necesitas funciones de balanceo de carga más avanzadas, como el balanceo de carga HTTPS, el balanceo de carga basado en contenido o el balanceo de carga entre regiones, puedes integrar tu servicio de GKE con la función de balanceo de carga HTTP o HTTPS de Compute Engine. Kubernetes proporciona el recurso Ingress, que encapsula una colección de reglas para enrutar el tráfico externo a los endpoints de Kubernetes. En GKE, un recurso Ingress se encarga de aprovisionar y configurar el balanceador de carga HTTP o HTTPS de Compute Engine.
Para obtener más información sobre cómo usar el balanceo de carga HTTP o HTTPS en GKE, consulta el artículo Configurar el balanceo de carga de HTTP con Ingress.
Escalar con GKE
Para cambiar el tamaño de los clústeres automáticamente, puedes usar la herramienta de adaptación dinámica de clústeres. Esta función comprueba periódicamente si hay pods que están esperando un nodo con recursos libres, pero no se están programando. Si existen estos pods, el escalador automático cambia el tamaño del grupo de nodos si este cambio permite programar los pods en espera.
La herramienta de adaptación dinámica de clústeres también monitoriza el uso de todos los nodos. Si un nodo no es necesario durante un periodo prolongado y todos sus pods se pueden programar en otro lugar, se elimina el nodo.
Para obtener más información sobre la herramienta de adaptación dinámica de clústeres, sus limitaciones y las prácticas recomendadas, consulta la documentación de la herramienta de adaptación dinámica de clústeres.
Almacenamiento de registros y monitorización con GKE
Al igual que en Compute Engine, Logging y Monitoring proporcionan servicios de registro y monitorización. El registro recoge y almacena registros de aplicaciones y servicios. Puedes ver o exportar registros e integrar registros de terceros mediante un agente de registro.
Monitoring proporciona paneles de control y alertas para su sitio. Puedes configurar Monitoring con la Google Cloud consola. Puede consultar las métricas de rendimiento de los servicios en la nube, las máquinas virtuales y los servidores de software libre habituales, como MongoDB, Apache, Nginx y Elasticsearch. Puede usar la API Monitoring para obtener datos de monitorización y crear métricas personalizadas.
Gestionar DevOps con GKE
Cuando usas GKE, ya disfrutas de muchas de las ventajas que la mayoría de los usuarios asocian a DevOps. Esto es especialmente cierto cuando se trata de la facilidad de empaquetado, implementación y gestión. Para tus necesidades de flujo de trabajo de CI/CD, puedes aprovechar herramientas creadas para la nube, como Cloud Build y Cloud Deploy, o herramientas populares como Jenkins. Para obtener más información, consulta los siguientes artículos:
Desarrollar en una plataforma sin servidor con Cloud Run
La plataforma sin servidor deGoogle Cloudte permite escribir código a tu manera sin tener que preocuparte por la infraestructura subyacente. Puedes crear aplicaciones de pila completa sin servidor gracias al almacenamiento, las bases de datos, el aprendizaje automático y otros recursos deGoogle Cloud.
En el caso de los sitios web en contenedores, también puedes desplegarlos en Cloud Run, además de usar GKE. Cloud Run es una plataforma sin servidor totalmente gestionada que te permite ejecutar aplicaciones en contenedores de alta escalabilidad en Google Cloud. Solo pagas por el tiempo que se ejecuta tu código.
Con los contenedores de Cloud Run, puedes aprovechar tecnologías avanzadas como Nginx, Express.js y Django para crear tus sitios web, acceder a tu base de datos SQL en Cloud SQL y renderizar páginas HTML dinámicas.
La documentación de Cloud Run incluye una guía de inicio rápido para que puedas empezar a usarlo.
Almacenar datos con Cloud Run
Los contenedores de Cloud Run son efímeros y debes conocer sus cuotas y límites para tus casos prácticos. Los archivos se pueden almacenar temporalmente para procesarlos en una instancia de contenedor, pero este almacenamiento se realiza a partir de la memoria disponible para el servicio, tal como se describe en el contrato de tiempo de ejecución.
Para el almacenamiento persistente, al igual que en App Engine, puedes elegir los servicios de Google Cloud, como Cloud Storage, Firestore o Cloud SQL. También puedes usar una solución de almacenamiento de terceros.
Balanceo de carga y autoescalado con Cloud Run
De forma predeterminada, cuando compilas en Cloud Run, se enrutan automáticamente las solicitudes entrantes a los contenedores backend adecuados y se realiza el balanceo de carga. Sin embargo, si quieres aprovechar las funciones completas de balanceo de carga HTTP(S) de nivel empresarial de Google Cloud, puedes usar grupos de puntos finales de red sin servidor.
Con el balanceo de carga de HTTP y HTTPS, puedes habilitar Cloud CDN o servir tráfico procedente de varias regiones. Además, puedes usar middleware, como API Gateway, para mejorar tu servicio.
En Cloud Run, Google Cloud se gestiona el autoescalado de instancias de contenedor por ti. Cada revisión se escala automáticamente al número de instancias de contenedor necesarias para gestionar todas las solicitudes entrantes. Cuando una revisión no recibe tráfico, de forma predeterminada, se reduce a cero instancias de contenedor. Sin embargo, si quieres, puedes cambiar este valor predeterminado para especificar una instancia que se mantenga inactiva o activa mediante el ajuste Número mínimo de instancias.
Registro y monitorización con Cloud Run
Cloud Run tiene dos tipos de registros, que se envían automáticamente a Cloud Logging:
- Registros de solicitudes: registros de las solicitudes enviadas a los servicios de Cloud Run. Estos registros se crean automáticamente.
- Registros de contenedores: registros emitidos desde las instancias de contenedor, normalmente desde tu propio código, escritos en ubicaciones admitidas, tal como se describe en Escribir registros de contenedores.
Puedes ver los registros de tu servicio de dos formas:
- Usa la página Cloud Run de la Google Cloud consola.
- Usa el Explorador de registros de Cloud Logging en la Google Cloud consola.
Ambos métodos de visualización examinan los mismos registros almacenados en Cloud Logging, pero el Explorador de registros proporciona más detalles y más funciones de filtrado.
Cloud Monitoring ofrece monitorización del rendimiento de Cloud Run, métricas y comprobaciones de disponibilidad, así como alertas para enviar notificaciones cuando se superen determinados umbrales de métricas. Se aplican los precios de Google Cloud Observability, lo que significa que no se cobra por las métricas de la versión totalmente gestionada de Cloud Run. Ten en cuenta que también puedes usar métricas personalizadas de Cloud Monitoring.
Cloud Run se integra con Cloud Monitoring sin necesidad de configurar ni instalar nada. Esto significa que las métricas de tus servicios de Cloud Run se capturan automáticamente cuando se están ejecutando.
Desarrollar en una plataforma gestionada con App Engine
En Google Cloud, la plataforma como servicio (PaaS) gestionada se llama App Engine. Cuando creas tu sitio web en App Engine, puedes centrarte en codificar tus funciones y dejar que Google se encargue de gestionar la infraestructura de asistencia. App Engine ofrece una amplia gama de funciones que facilitan la escalabilidad, el balanceo de carga, el registro, la monitorización y la seguridad en comparación con si tuvieras que crearlas y gestionarlas por tu cuenta. App Engine te permite escribir código en varios lenguajes de programación y puede usar otros Google Cloud servicios.
App Engine ofrece el entorno estándar, que te permite ejecutar aplicaciones en un entorno aislado y seguro. El entorno estándar de App Engine distribuye las solicitudes entre varios servidores y adapta el tamaño de los servidores para satisfacer las demandas de tráfico. Tu aplicación se ejecuta en su propio entorno seguro y fiable, que es independiente del hardware, el sistema operativo o la ubicación física del servidor.
Para ofrecerte más opciones, App Engine incluye el entorno flexible. Cuando usas el entorno flexible, tu aplicación se ejecuta en instancias de Compute Engine configurables, pero App Engine gestiona el entorno de alojamiento por ti. Esto significa que puedes usar tiempos de ejecución adicionales, incluidos los personalizados, para tener más opciones de lenguajes de programación. También puedes aprovechar algunas de las ventajas que ofrece Compute Engine, como elegir entre una gran 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 código fuente en cualquier versión de los lenguajes de programación admitidos. Puedes personalizar estos tiempos de ejecución o proporcionar el tuyo propio con una imagen o un archivo Docker personalizados.
Si el lenguaje de programación que utilizas es una de tus principales preocupaciones, debes decidir si los tiempos de ejecución que proporciona el entorno estándar de App Engine cumplen tus requisitos. Si no es así, te recomendamos que uses el entorno flexible.
Para determinar qué entorno se adapta mejor a las necesidades de tu aplicación, consulta Elegir un entorno de App Engine.
Tutoriales para empezar por idioma
Los siguientes tutoriales pueden ayudarte a empezar a usar el entorno estándar de App Engine:
- Hola, mundo en Python
- Hola, mundo en Java
- Hola, mundo en PHP
- Hola, mundo en Ruby
- Hola, mundo en Go
- Hola, mundo en Node.js
Los siguientes tutoriales pueden ayudarte a empezar a usar el entorno flexible:
- Primeros pasos con Python
- Primeros pasos con Java
- Primeros pasos con PHP
- Primeros pasos con Go
- Primeros pasos con Node.js
- Primeros pasos con Ruby
- Primeros pasos con .NET
Almacenar datos con App Engine
App Engine te ofrece varias opciones para almacenar tus datos:
Nombre | Estructura | Coherencia |
---|---|---|
Firestore | Sin esquema | Consistencia fuerte. |
Cloud SQL | Relacional | Consistencia fuerte. |
Cloud Storage | Archivos y sus metadatos asociados | Sólidamente coherente, excepto cuando se realizan operaciones de lista que obtienen una lista de segmentos u objetos. |
También puede usar varias bases de datos de terceros con el entorno estándar.
Para obtener más información sobre el almacenamiento en App Engine, consulta el artículo Elegir una opción de almacenamiento y, a continuación, selecciona el lenguaje de programación que prefieras.
Cuando usas el entorno flexible, puedes usar todas las opciones de almacenamiento que ofrece el entorno estándar, así como una gama más amplia de bases de datos de terceros. Para obtener más información sobre las bases de datos de terceros en el entorno flexible, consulta Usar bases de datos de terceros.
Balanceo de carga y autoescalado con App Engine
De forma predeterminada, App Engine enruta automáticamente las solicitudes entrantes a las instancias de backend adecuadas y realiza el balanceo de carga. Sin embargo, si quieres aprovechar las funciones completas de balanceo de carga HTTP(S) de nivel empresarial de Google Cloud, puedes usar grupos de puntos finales de red sin servidor.
Para el escalado, App Engine puede crear y cerrar instancias automáticamente a medida que fluctúa el tráfico, o bien puedes especificar un número de instancias que se ejecuten independientemente de la cantidad de tráfico.
Registro y monitorización con App Engine
En App Engine, las solicitudes se registran automáticamente y puedes ver estos registros en la consola Google Cloud . App Engine también funciona con bibliotecas estándar específicas de cada lenguaje que proporcionan funciones de registro y reenvían las entradas de registro a los registros de la consola Google Cloud . Por ejemplo, en Python puedes usar el módulo de registro estándar de Python y, en Java, puedes integrar el appender logback o java.util.logging
con Cloud Logging. Este enfoque permite usar todas las funciones de Cloud Logging y solo requiere unas pocas líneas de código específico de Google Cloud.
Cloud Monitoring ofrece funciones para monitorizar tus aplicaciones de App Engine. A través de la Google Cloud consola, puedes monitorizar incidentes, comprobaciones de disponibilidad y otros detalles.
Creación de sistemas de gestión de contenido
Alojar un sitio web significa gestionar sus recursos. Cloud Storage proporciona un repositorio global para estos recursos. Una arquitectura habitual consiste en desplegar contenido estático en Cloud Storage y, a continuación, sincronizarlo con Compute Engine para renderizar páginas dinámicas. Cloud Storage funciona con muchos sistemas de gestión de contenido de terceros, como WordPress, Drupal y Joomla. Cloud Storage también ofrece una API compatible con Amazon S3, por lo que cualquier sistema que funcione con Amazon S3 puede funcionar con Cloud Storage.
El siguiente diagrama muestra una arquitectura de ejemplo de un sistema de gestión de contenido.
Siguientes pasos
- Consulta arquitecturas de referencia, diagramas y prácticas recomendadas sobre Google Cloud. Consulta nuestro Centro de arquitectura de Cloud.