Despliegue PostgreSQL con StackGres en OCI
StackGres es una distribución PostgreSQL de pila completa para Kubernetes, empaquetada en una unidad de despliegue fácil. StackGres incluye pool de conexiones, copias de seguridad automatizadas, supervisión, registro centralizado y una consola web de gestión completa.
StackGres integra el software de alta disponibilidad más reconocido y probado por producción para Postgres: Patroni.
- Está totalmente integrado. Si algo falla, el cluster se volverá a calentar automáticamente, sin intervención humana.
- StackGres expone una conexión de lectura-escritura y una conexión de solo lectura para las aplicaciones, que se actualizará automáticamente después de que se produzca cualquier evento disruptivo.
Una pila PostgreSQL de nivel empresarial necesita otros componentes del ecosistema y ajustes significativos. Requiere agrupación de conexiones, failover automático y alta disponibilidad, supervisión, copias de seguridad y recuperación ante desastres. El paquete StackGres y los componentes de Oracle Cloud Infrastructure (OCI) que se muestran en esta arquitectura de referencia proporcionan un despliegue de bajo esfuerzo, escalable y de alta disponibilidad.
Arquitectura
Esta arquitectura muestra cómo desplegar PostgreSQL en un cluster de Oracle Container Engine for Kubernetes. Utilice esta arquitectura para entornos listos para producción que aprovechan las funciones PostgreSQL:
- Sin dependencia de proveedor: PostgreSQL funciona en cualquier entorno de Kubernetes.
- Incluye una consola web completa.
- La plataforma Postgres tiene más extensiones en el mundo.
- Se ejecuta en los nodos de trabajador de Kubernetes x86-64 y ARM64.
- Código totalmente abierto (sin división entre una "comunidad" gratuita y una costosa versión "empresa").
- Precios para soporte y actualizaciones, en función de los núcleos utilizados.
- Incluye Postgres y Babelfish "vanilla" (que ofrece compatibilidad con SQL Server).
En el siguiente diagrama se ilustra esta arquitectura de referencia.
La arquitectura tiene los siguientes componentes:
- arrendamiento
Un arrendamiento es una partición segura y aislada que Oracle configura en Oracle Cloud al registrarse en Oracle Cloud Infrastructure. Puede crear, organizar y administrar sus recursos en Oracle Cloud dentro de su arrendamiento. Un arrendamiento es sinónimo de una compañía u organización. Normalmente, una compañía tendrá un solo arrendamiento y reflejará su estructura organizativa dentro de ese arrendamiento. Un único arrendamiento suele estar asociado a una sola suscripción, y una única suscripción suele tener un solo arrendamiento.
- Región
Una región de Oracle Cloud Infrastructure es un área geográfica localizada que contiene uno o más centros de datos, denominados dominios de disponibilidad. Las regiones son independientes de otras regiones, y las grandes distancias pueden separarlas (entre países e incluso continentes).
- Compartimento
Los compartimentos son particiones lógicas entre regiones dentro de un arrendamiento de Oracle Cloud Infrastructure. Utilice compartimentos para organizar los recursos en Oracle Cloud, controlar el acceso a los recursos y definir cuotas de uso. Para controlar el acceso a los recursos de un compartimento determinado, debe definir políticas que especifiquen quién puede acceder a los recursos y qué acciones pueden realizar.
- Dominio de disponibilidad
Los dominios de disponibilidad son centros de datos independientes dentro de una región. Los recursos físicos de cada dominio de disponibilidad están aislados de los recursos de los otros dominios de disponibilidad, lo que proporciona tolerancia a fallos. Los dominios de disponibilidad no comparten infraestructura, como la alimentación o la refrigeración, ni la red interna del dominio de disponibilidad. Por lo tanto, es improbable que un fallo en un dominio de disponibilidad afecte a los otros dominios de la región.
Se muestra un dominio de disponibilidad, pero puede realizar el despliegue en varios dominios de disponibilidad en función de sus necesidades de producción.
- Dominio de errores
Un dominio de errores es una agrupación de hardware e infraestructura dentro de un dominio de disponibilidad. Cada dominio de disponibilidad tiene tres dominios de errores con energía y hardware independientes. Al distribuir recursos entre varios dominios de errores, sus aplicaciones pueden tolerar fallos en el servidor físico, el mantenimiento del sistema y los fallos de energía dentro de un dominio de errores.
Se muestra un dominio de errores, pero puede desplegarse en varios dominios de errores en función de sus necesidades de producción.
- Red virtual en la nube (VCN) y subredes
Una VCN es una red definida por software y personalizable que se configura en una región de Oracle Cloud Infrastructure. Al igual que las redes de los centros de datos tradicionales, las redes virtuales le proporcionan un control completo de su entorno de red. Una VCN puede tener varios bloques de CIDR no superpuestos que puede cambiar después de crear la VCN. Puede segmentar una VCN en subredes, las cuales se pueden acotar a una región o a un dominio de disponibilidad. Cada subred está formada por un rango contiguo de direcciones que no se solapan con las demás subredes de la VCN. Puede cambiar el tamaño de una subred después de la creación. Una subred puede ser pública o privada.
- Equilibrador de carga
El servicio Oracle Cloud Infrastructure Load Balancing proporciona una distribución automatizada del tráfico desde un único punto de entrada a varios servidores en el backend.
- Servicio de Bastion
Oracle Cloud Infrastructure Bastion proporciona acceso seguro restringido y limitado en el tiempo a recursos que no tienen puntos finales públicos y que requieren estrictos controles de acceso a recursos, como máquinas virtuales y con hardware dedicado, Oracle MySQL Database Service, Autonomous Transaction Processing (ATP), Oracle Container Engine for Kubernetes (OKE) y cualquier otro recurso que permita el acceso al protocolo de shell seguro (SSH). Con el servicio Oracle Cloud Infrastructure Bastion, puede activar el acceso a hosts privados sin desplegar y mantener un host de salto. Además, obtiene una estrategia de seguridad mejorada con permisos basados en identidad y una sesión SSH centralizada, auditada y con límite de tiempo. Oracle Cloud Infrastructure Bastion elimina la necesidad de una IP pública para el acceso bastión, lo que elimina la molestia y la posible superficie de ataque al proporcionar acceso remoto.
- Lista de Seguridad
Para cada subred, puede crear reglas de seguridad que especifiquen el origen, el destino y el tipo de tráfico que se debe permitir dentro y fuera de la subred.
- Gateway de traducción de direcciones de red (NAT)
Un gateway de NAT permite a los recursos privados de una VCN acceder a los hosts de Internet, sin exponer dichos recursos a las conexiones de Internet entrantes.
- Gateway de servicio
El gateway de servicios proporciona acceso desde una VCN a otros servicios, como Oracle Cloud Infrastructure Object Storage. El tráfico desde la VCN al servicio Oracle recorre el tejido de red de Oracle y no Internet.
- Gateway de enrutamiento dinámico (DRG)
El DRG es un enrutador virtual que proporciona una ruta para el tráfico de red privada entre las redes virtuales de la misma región, entre una VCN y una red fuera de la región, como una VCN de otra región de Oracle Cloud Infrastructure, una red local o una red de otro proveedor en la nube.
- Object Storage
El almacenamiento de objetos proporciona acceso rápido a grandes cantidades de datos estructurados y no estructurados de cualquier tipo de contenido, incluidas copias de seguridad de base de datos, datos analíticos y contenido enriquecido, como imágenes y vídeos. Puede almacenar datos de forma segura y, a continuación, recuperarlos directamente desde Internet o desde la plataforma en la nube. Puede ampliar el almacenamiento sin problemas sin experimentar ninguna degradación del rendimiento ni de la fiabilidad del servicio. Utilice el almacenamiento estándar para el almacenamiento de acceso rápido al que debe acceder de forma rápida, inmediata y frecuente. Utilice el almacenamiento de archivo para el almacenamiento en frío que conserva durante largos períodos de tiempo y a los que rara vez accede.
- Gateway de Internet
El gateway de Internet permite el tráfico entre las subredes públicas de una VCN y la red pública de Internet.
- FastConnect
Oracle Cloud Infrastructure FastConnect proporciona una forma sencilla de crear una conexión dedicada y privada entre el centro de datos y Oracle Cloud Infrastructure. FastConnect proporciona opciones de mayor ancho de banda y una experiencia de red más fiable en comparación con las conexiones basadas en Internet.
- Gateway de intercambio de tráfico local (LPG)
Un LPG permite conectar una VCN con otra VCN en la misma región. El intercambio de tráfico significa que las VCN se comunican mediante direcciones IP privadas, sin que el tráfico atraviese Internet o el enrutamiento a través de la red local.
- Container Engine para Kubernetes
Oracle Cloud Infrastructure Container Engine for Kubernetes es un servicio totalmente gestionado, ampliable y disponible que puede utilizar para desplegar las aplicaciones en contenedor en la nube. Especifique los recursos informáticos que necesitan sus aplicaciones y Container Engine for Kubernetes los proporciona en Oracle Cloud Infrastructure en un arrendamiento existente. Container Engine for Kubernetes utiliza Kubernetes para automatizar el despliegue, el ajuste y la gestión de aplicaciones en contenedores en clusters de hosts.
- PostgreSQL
PostgreSQL es un sistema de gestión de bases de datos relacionales (RDBMS) de código abierto con un alto nivel de ampliación y escalabilidad. Soporta consultas SQL (relacionales) y JSON (no relacionales).
- StackGres
StackGres es una distribución PostgreSQL de pila completa para Kubernetes, empaquetada en una unidad de despliegue fácil. Incluye un juego cuidadosamente seleccionado y ajustado de componentes PostgreSQL circundantes.
- Cloud Guard
Puede utilizar Oracle Cloud Guard para supervisar y mantener la seguridad de los recursos en Oracle Cloud Infrastructure. Cloud Guard utiliza recetas de detector que puede definir para examinar los recursos en busca de debilidades de seguridad y para supervisar a operadores y usuarios en busca de actividades de riesgo. Cuando se detecta una configuración incorrecta o una actividad no segura, Cloud Guard recomienda acciones correctivas y ayuda a realizar esas acciones, en función de las recetas de responsable de respuesta que puede definir.
- Protección de denegación de servicio distribuido (DDoS)
Los ataques distribuidos de denegación de servicio (DDoS) son delitos cibernéticos graves cometidos por atacantes que inundan los servidores de la compañía con una cantidad abrumadora de tráfico entrante. Esta cantidad abrumadora de tráfico proviene de innumerables fuentes y geolocalizaciones, lo que impide que los usuarios accedan a los servicios y sitios de la compañía. Todos los centros de datos de Oracle Cloud tienen detección y mitigación de ataques DDoS para ataques de capa 3 o 4 DDoS de alto volumen. Estos servicios de protección DDoS de Oracle Cloud ayudan a garantizar la disponibilidad de los recursos de red de Oracle incluso bajo ataques sostenidos de capa 3 o 4.
- Identity and Access Management (IAM)
Oracle Cloud Infrastructure Identity and Access Management (IAM) es el plano de control de acceso para Oracle Cloud Infrastructure (OCI) y Oracle Cloud Applications. La API de IAM y la interfaz de usuario le permiten gestionar los dominios de identidad y los recursos del dominio de identidad. Cada dominio de identidad de OCI IAM representa una solución de gestión de identidad y acceso independiente o un grupo de usuarios diferente.
- RegistroLogging es un servicio altamente escalable y totalmente gestionado que proporciona acceso a los siguientes tipos de logs de sus recursos en la nube:
- Logs de auditoría: logs relacionados con eventos emitidos por el servicio Audit.
- Logs de servicios: logs emitidos por servicios individuales como API Gateway, Events, Functions, Load Balancing, Object Storage y logs de flujo de VCN.
- Logs personalizados: logs que contienen información de diagnóstico de aplicaciones personalizadas, otros proveedores de nube o un entorno local.
- Auditoría
El servicio Oracle Cloud Infrastructure Audit registra automáticamente las llamadas a todos los puntos finales de la interfaz pública de programación de aplicaciones (API) de Oracle Cloud Infrastructure soportados como eventos de log. Actualmente, todos los servicios soportan el registro mediante Oracle Cloud Infrastructure Audit.
Recomendaciones
- VCN
Al crear una VCN, determine el número de bloques CIDR necesarios y el tamaño de cada bloque en función del número de recursos que planea asociar a las subredes de la VCN. Utilice bloques CIDR que estén dentro del espacio de dirección IP privada estándar.
Seleccione bloques CIDR que no se superpongan con ninguna otra red (en Oracle Cloud Infrastructure, su centro de datos local u otro proveedor de nube) a la que desea configurar conexiones privadas.
Después de crear una VCN, puede cambiar, agregar y eliminar sus bloques CIDR.
Al diseñar las subredes, tenga en cuenta el flujo de tráfico y los requisitos de seguridad. Asocie todos los recursos de un nivel o rol específico a la misma subred, que puede servir como límite de seguridad.
Utilizar subredes regionales.
- Cloud Guard
Clone y personalice las recetas por defecto que proporciona Oracle para crear recetas personalizadas de detector y responsable de respuesta. Estas recetas le permiten especificar qué tipo de violaciones de seguridad generan una advertencia y qué acciones se pueden realizar en ellas. Por ejemplo, puede que desee detectar bloques de almacenamiento de objetos con visibilidad definida como públicos.
Aplique Cloud Guard en el nivel de arrendamiento para abarcar el ámbito más amplio y reducir la carga administrativa que supone el mantenimiento de varias configuraciones.
También puede utilizar la función Lista gestionada para aplicar determinadas configuraciones a los detectores.
- Zonas de seguridad
Para los recursos que requieren la máxima seguridad, Oracle recomienda utilizar zonas de seguridad. Una zona de seguridad es un compartimento asociado a una receta de políticas de seguridad definida por Oracle que se basa en las mejores prácticas. Por ejemplo, los recursos de una zona de seguridad no deben ser accesibles desde la Internet pública y deben cifrarse con claves gestionadas por el cliente. Al crear y actualizar recursos en una zona de seguridad, Oracle Cloud Infrastructure valida las operaciones con respecto a las políticas de la receta de zona de seguridad y deniega las operaciones que violan cualquiera de las políticas.
- Grupos de seguridad de red (NSG)
Puede utilizar los NSG para definir un conjunto de reglas de entrada y salida que se aplican a VNIC específicas. Recomendamos utilizar NSG en lugar de listas de seguridad, porque los NSG permiten separar la arquitectura de subred de la VCN de los requisitos de seguridad de su aplicación.
- ancho de banda de equilibrio de carga
Al crear el equilibrador de carga, puede seleccionar una unidad predefinida que proporcione un ancho de banda fijo o especificar una unidad personalizada (flexible) donde definir un rango de ancho de banda y permitir que el servicio amplíe el ancho de banda automáticamente en función de los patrones de tráfico. Con cualquiera de los dos enfoques, puede cambiar la unidad en cualquier momento después de crear el equilibrador de carga.
Consideraciones
Al desplegar esta arquitectura, tenga en cuenta estas opciones:
- Homologación con procesadores ARM
StackGres se puede ejecutar con ARM (Ampere A1 Compute).
- Opciones de arquitectura
La arquitectura de este documento es una sugerencia y se puede cambiar según las necesidades del proyecto.
- Extensiones de Postgres
StackGres obtiene más de 130 extensiones Postgres que puede utilizar.
- privilegios de usuario
Utilice la mejor práctica de seguridad del privilegio mínimo: restrinja el acceso a la cuenta a los privilegios de usuario root o superusuario solo cuando sea necesario.
- Supervisión
Además de los servicios de OCI como OCI Events, OCI Logging y OCI Monitoring, puede utilizar Prometheus o Grafana para la supervisión.
- Copias de Seguridad
StackGres incluye copias de seguridad continuas basadas en archivos, lo que permite una recuperación sin pérdida de datos.
Las copias de seguridad siempre se almacenan en los medios más duraderos disponibles hoy: OCI Object Storage.
Siga estas mejores prácticas:
- No deje la base de datos expuesta a Internet.
- Si es posible, separe el cluster de aplicación del cluster utilizado por Stackgres.
- Si desea crear la aplicación en el mismo cluster, Oracle recomienda que cree un espacio de nombres diferente para la aplicación.
- Al elegir el procesador Intel, AMD o ARM, tenga en cuenta el tamaño de la carga de trabajo para no reducir el tamaño del entorno de Postgres.
Explorar más
Obtén más información sobre el despliegue de PostgreSQL en OCI.
Revise estos recursos adicionales:
- Para obtener instrucciones completas de instalación y configuración para StackGres en OCI, consulte el manual de soluciones Despliegue de una pila PostgreSQL de alta disponibilidad en un cluster de Kubernetes de OCI con StackGres
- Para un despliegue de PostgreSQL en OCI (sin StackGres) con una automatización de Terraform, consulte Despliegue de una base de datos PostgreSQL
- Marco de mejores prácticas para Oracle Cloud Infrastructure
- Más información sobre la arquitectura de una topología de nube de alta disponibilidad
- Documentación de PostgreSQL
- Documentación de StackGres