Déployer une pile PostgreSQL hautement disponible sur un cluster OCI Kubernetes avec StackGres
Si vous souhaitez déployer PostgreSQL dans le cloud, Oracle Cloud Infrastructure (OCI) fournit un environnement idéal, avec Oracle Container Engine for Kubernetes pour les microservices sans serveur, évolutifs et hautement disponibles. StackGres offre une distribution PostgreSQL de pile complète pour Kubernetes, remplie dans une unité de déploiement facile.
StackGres inclut le regroupement des connexions en pool, les sauvegardes automatisées, la surveillance, la journalisation centralisée et une console Web de gestion complète. StackGres intègre le logiciel de haute disponibilité le plus renommé et le plus testé en production pour Postgres : Patroni.
- Il est entièrement intégré. En cas d'échec, le cluster se répète automatiquement, sans intervention humaine.
- StackGres présente une connexion en lecture-écriture et une connexion en lecture seule pour les applications, qui seront automatiquement mises à jour après tout événement perturbateur.
Une pile PostgreSQL de niveau entreprise nécessite plusieurs autres composants de l'écosystème et un réglage significatif. Il nécessite le regroupement des connexions en pool, le basculement automatique et la haute disponibilité, la surveillance, les sauvegardes et la récupération après sinistre. Le package StackGres et les composants OCI présentés dans ce manuel de solutions fournissent un déploiement à faible effort, évolutif et hautement disponible.
Architecture
Cette architecture explique comment déployer PostgreSQL dans un cluster Oracle Container Engine for Kubernetes. Utilisez cette architecture pour les environnements prêts à l'emploi qui tirent parti des fonctionnalités PostgreSQL :
- Aucune dépendance de fournisseur : PostgreSQL fonctionne sur n'importe quel environnement Kubernetes.
- Inclut une console Web complète.
- La plateforme Postgres a le plus d'extensions au monde.
- S'exécute sur les noeuds de processus actif Kubernetes x86-64 et ARM64.
- Entièrement open source (pas de division entre une version gratuite "communautaire"et une version coûteuse"entreprise").
- Tarification du support et des mises à jour, en fonction des coeurs utilisés.
- Inclut "vanilla" Postgres et Babelfish (qui offre la compatibilité avec SQL Server).
Le diagramme suivant illustre cette architecture de référence.
L'architecture se compose des éléments suivants :
- Location
Une location est une partition sécurisée et isolée qu'Oracle configure dans Oracle Cloud lorsque vous êtes inscrit à Oracle Cloud Infrastructure. Vous pouvez créer, organiser et administrer vos ressources dans Oracle Cloud au sein de votre location. Une location est synonyme d'entreprise ou d'organisation. Généralement, une entreprise dispose d'une location unique et reflète sa structure organisationnelle dans cette location. Une location unique est généralement associée à un seul abonnement et un seul abonnement ne comporte généralement qu'une seule location.
- Région
Une région Oracle Cloud Infrastructure est une zone géographique localisée qui contient des centres de données, appelés domaines de disponibilité. Les régions sont indépendantes les unes des autres et de grandes distances peuvent les séparer (dans des pays voire des continents).
- Compartiment
Les compartiments sont des partitions logiques inter-région au sein d'une location Oracle Cloud Infrastructure. Utilisez des compartiments pour organiser les ressources dans Oracle Cloud, contrôler l'accès aux ressources et définir des quotas d'utilisation. Pour contrôler l'accès aux ressources d'un compartiment donné, vous définissez des stratégies qui indiquent qui peut accéder aux ressources et les actions réalisables.
- Domaine de disponibilité
Les domaines de disponibilité sont des centres de données autonomes indépendants au sein d'une région. Les ressources physiques de chaque domaine de disponibilité sont isolées de celles des autres, ce qui garantit la tolérance aux pannes. Les domaines de disponibilité ne partagent ni infrastructure (par exemple, alimentation, système de refroidissement), ni réseau de domaine de disponibilité interne. Ainsi, il est peu probable qu'un problème survenant dans un domaine de disponibilité affecte les autres domaines de disponibilité de la région.
Un domaine de disponibilité est affiché, mais vous pouvez le déployer sur plusieurs domaines de disponibilité en fonction de vos exigences de production.
- Domaine de pannes
Un domaine de pannes est un regroupement de matériel et d'infrastructures au sein d'un domaine de disponibilité. Chaque domaine de disponibilité comporte trois domaines de pannes avec une alimentation et un matériel indépendants. Lorsque vous distribuez des ressources sur plusieurs domaines de pannes, vos applications peuvent tolérer les pannes de serveur physique, de maintenance du système et d'alimentation au sein d'un domaine de pannes.
Un domaine de pannes est affiché, mais vous pouvez le déployer sur plusieurs domaines de pannes en fonction de vos besoins de production.
- Réseau cloud virtuel (VCN) et sous-réseaux
Un VCN est un réseau personnalisable défini par logiciel que vous configurez dans une région Oracle Cloud Infrastructure. Comme les réseaux de centre de données traditionnels, les réseaux cloud virtuels vous donnent un contrôle total sur l'environnement réseau. Un réseau cloud virtuel peut comporter plusieurs blocs CIDR qui ne se chevauchent pas et que vous pouvez modifier après l'avoir créé. Vous pouvez segmenter un réseau cloud virtuel en plusieurs sous-réseaux ciblant une région ou un domaine de disponibilité. Chaque sous-réseau est composé d'une plage contiguë d'adresses qui ne chevauchent pas celles des autres sous-réseaux du réseau cloud virtuel. Vous pouvez modifier la taille d'un sous-réseau après sa création. Un sous-réseau peut être public ou privé.
- Programme d'équilibrage de charge
Le service Oracle Cloud Infrastructure Load Balancing fournit une répartition de trafic automatisée à partir d'un seul point d'entrée vers plusieurs serveurs du back-end.
- Service Bastion
Oracle Cloud Infrastructure Bastion fournit un accès sécurisé limité et limité dans le temps aux ressources qui ne disposent pas d'adresses publiques et qui nécessitent des contrôles d'accès stricts aux ressources, tels que les machines virtuelles et Bare Metal, Oracle MySQL Database Service, Autonomous Transaction Processing (ATP), Oracle Container Engine for Kubernetes (OKE) et toute autre ressource qui autorise l'accès SSH (Secure Shell Protocol). Avec le service Oracle Cloud Infrastructure Bastion, vous pouvez activer l'accès aux hôtes privés sans déployer ni gérer d'hôte de saut. En outre, vous bénéficiez d'une meilleure posture de sécurité grâce aux droits d'accès basés sur l'identité et à une session SSH centralisée, auditée et liée au temps. Oracle Cloud Infrastructure Bastion élimine le besoin d'une adresse IP publique pour l'accès au bastion, ce qui élimine les problèmes et la surface d'attaque potentielle lors de l'accès à distance.
- Liste de sécurité
Pour chaque sous-réseau, vous pouvez créer des règles de sécurité qui indiquent la source, la destination et le type de trafic qui doivent être autorisés vers et depuis le sous-réseau.
- Passerelle NAT (Network Address Translation)
Une passerelle NAT permet aux ressources privées d'un VCN d'accéder aux hôtes sur Internet, sans exposer ces ressources aux connexions Internet entrantes.
- Passerelle de service
La passerelle de service fournit l'accès d'un VCN à d'autres services, tels qu'Oracle Cloud Infrastructure Object Storage. Le trafic du VCN vers le service Oracle se déplace sur la structure réseau Oracle et ne traverse jamais Internet.
- Dynamic routing gateway (DRG)
L'DRG est un routeur virtuel qui fournit un chemin pour le trafic réseau privé entre les réseaux cloud virtuels de la même région, entre un VCN et un réseau en dehors de la région, tel qu'un VCN dans une autre région Oracle Cloud Infrastructure, un réseau sur site ou un réseau dans un autre fournisseur cloud.
- Stockage d'objets
Object Storage fournit un accès rapide à de grandes quantités de données, structurées ou non, de n'importe quel type de contenu, y compris des sauvegardes de base de données, des données analytiques et du contenu enrichi tel que des images et des vidéos. Vous pouvez stocker les données, puis les extraire directement à partir d'Internet ou de la plate-forme cloud, et ce, en toute sécurité. Vous pouvez redimensionner le stockage de manière transparente sans dégradation des performances ni de la fiabilité des services. Utilisez le stockage standard pour le stockage "à chaud" auquel vous devez accéder rapidement, immédiatement et fréquemment. Utilisez le stockage d'archive pour le stockage "à froid" que vous conservez pendant longtemps et auquel vous accédez rarement.
- passerelle Internet
La passerelle Internet autorise le trafic entre les sous-réseaux publics d'un VCN et le réseau Internet public.
- FastConnect
Oracle Cloud Infrastructure FastConnect permet de créer facilement une connexion privée dédiée entre le centre de données et Oracle Cloud Infrastructure. FastConnect offre des options de bande passante plus élevée et une expérience réseau plus fiable par rapport aux connexions Internet.
- Passerelle d'appairage local
Une passerelle d'appairage local vous permet d'appairer un VCN avec un autre VCN dans la même région. L'appairage signifie que les réseaux cloud virtuels communiquent à l'aide d'adresses IP privées, sans que le trafic ne passe par Internet ou ne soit acheminé via votre réseau sur site.
- Container Engine for Kubernetes
Oracle Cloud Infrastructure Container Engine for Kubernetes est un service entièrement géré, évolutif et hautement disponible que vous pouvez utiliser pour déployer vos applications en conteneur vers le cloud. Indiquez les ressources de calcul dont vos applications ont besoin et Container Engine for Kubernetes les provisionne sur Oracle Cloud Infrastructure dans une location existante. Container Engine for Kubernetes utilise Kubernetes pour automatiser le déploiement, le redimensionnement et la gestion des applications en conteneur sur des clusters d'hôtes.
- PostgreSQL
PostgreSQL est un système de gestion de base de données relationnelle (SGBDR) open source hautement extensible et évolutif. Il prend en charge les requêtes SQL (relationnelles) et JSON (non relationnelles).
- StackGres
StackGres est une distribution PostgreSQL de pile complète pour Kubernetes, compressée dans une unité de déploiement facile. Il inclut un ensemble soigneusement sélectionné et réglé de composants PostgreSQL environnants.
- Cloud Guard
Vous pouvez utiliser Oracle Cloud Guard pour surveiller et maintenir la sécurité de vos ressources dans Oracle Cloud Infrastructure. Cloud Guard utilise des recettes de détecteur que vous pouvez définir pour examiner vos ressources à la recherche de faiblesses en matière de sécurité et pour surveiller les opérateurs et les utilisateurs à la recherche d'activités à risque. Lorsqu'une erreur de configuration ou une activité non sécurisée est détectée, Cloud Guard recommande des actions correctives et aide à prendre ces actions, en fonction des recettes de répondeur que vous pouvez définir.
- Protection contre le refus de service distribué (DDoS)
Les attaques par déni de service distribué (DDoS) sont des cybercriminels graves commis par des attaquants qui inondent des serveurs d'entreprise avec une quantité écrasante de trafic entrant. Cette écrasante quantité de trafic provient de nombreuses sources et géolocalisations, empêchant les utilisateurs d'accéder aux services et aux sites de l'entreprise. Tous les centres de données Oracle Cloud présentent une détection et une atténuation des attaques DDoS pour les attaques DDoS de couche 3 ou 4 de volume élevé. Ces services de protection DDoS d'Oracle Cloud permettent de garantir la disponibilité des ressources réseau Oracle même lors d'attaques de couche 3 ou 4 soutenues.
- Identity and Access Management (IAM)
Oracle Cloud Infrastructure Identity and Access Management (IAM) est le plan de contrôle d'accès pour Oracle Cloud Infrastructure (OCI) et Oracle Cloud Applications. L'API IAM et l'interface utilisateur vous permettent de gérer les domaines d'identité et les ressources au sein du domaine d'identité. Chaque domaine d'identité OCI IAM représente une solution de gestion des identités et des accès autonome ou une population d'utilisateurs différente.
- ConnexionLogging est un service hautement évolutif et entièrement géré qui permet d'accéder aux types de journal suivants à partir des ressources du cloud :
- Journaux d'audit : journaux liés aux événements émis par le service Audit.
- Journaux de service : journaux émis par des services individuels tels qu'API Gateway, Events, Functions, Load Balancing, Object Storage et les journaux de flux VCN.
- Journaux personnalisés : journaux contenant des informations de diagnostic issues d'applications personnalisées, d'autres fournisseurs de cloud ou d'un environnement sur site.
- Audit
Le service Oracle Cloud Infrastructure Audit enregistre automatiquement les appels vers toutes les adresses d'interface de programmation d'application publique Oracle Cloud Infrastructure prises en charge en tant qu'événements de journal. Actuellement, tous les services prennent en charge la journalisation par Oracle Cloud Infrastructure Audit.
Recommandations
- VCN
Lorsque vous créez un VCN, déterminez le nombre de blocs CIDR requis et la taille de chaque bloc en fonction du nombre de ressources que vous prévoyez d'attacher aux sous-réseaux du VCN. Utilisez des blocs CIDR situés dans l'espace d'adresses IP privées standard.
Sélectionnez des blocs CIDR qui ne chevauchent aucun autre réseau (dans Oracle Cloud Infrastructure, votre centre de données sur site ou un autre fournisseur cloud) sur lequel vous souhaitez configurer des connexions privées.
Après avoir créé un VCN, vous pouvez modifier, ajouter et supprimer ses blocs CIDR.
Lorsque vous concevez les sous-réseaux, tenez compte de vos exigences en matière de sécurité et de flux de trafic. Associez toutes les ressources d'un niveau ou d'un rôle spécifique au même sous-réseau, ce qui peut servir de limite de sécurité.
Utilisez des sous-réseaux régionaux.
- Cloud Guard
Cloner et personnaliser les recettes par défaut fournies par Oracle pour créer des recettes de détecteur et de répondeur personnalisées. Ces recettes vous permettent d'indiquer quel type de violation de sécurité génère un avertissement et quelles actions sont autorisées pour ces violations. Par exemple, vous pouvez détecter les buckets Object Storage dont la visibilité est définie sur Public.
Appliquez Cloud Guard au niveau de la location pour couvrir la portée la plus large et réduire la charge administrative liée à la maintenance de plusieurs configurations.
Vous pouvez également utiliser la fonctionnalité Liste gérée pour appliquer certaines configurations aux détecteurs.
- Security Zones
Pour les ressources nécessitant une sécurité maximale, Oracle recommande d'utiliser des zones de sécurité. Une zone de sécurité est un compartiment associé à une recette définie par Oracle de stratégies de sécurité reposant sur les meilleures pratiques. Par exemple, les ressources d'une zone de sécurité ne doivent pas être accessibles à partir du réseau Internet public et doivent être cryptées à l'aide de clés gérées par le client. Lorsque vous créez et mettez à jour des ressources dans une zone de sécurité, Oracle Cloud Infrastructure valide les opérations par rapport aux stratégies de la recette de zone de sécurité et refuse les opérations qui violent l'une des stratégies.
- Groupes de sécurité réseau
Vous pouvez utiliser des groupes de sécurité réseau pour définir un ensemble de règles entrantes et sortantes qui s'appliquent à des cartes d'interface réseau virtuelles spécifiques. Nous vous recommandons d'utiliser des groupes de sécurité réseau plutôt que des listes de sécurité, car les groupes de sécurité réseau vous permettent de séparer l'architecture de sous-réseau du VCN des exigences de sécurité de votre application.
- bande passante d'équilibreur de charge
Lors de la création de l'équilibreur de charge, vous pouvez sélectionner une forme prédéfinie qui fournit une bande passante fixe ou indiquer une forme personnalisée (flexible) dans laquelle vous définissez une plage de bande passante et laisser le service redimensionner automatiquement la bande passante en fonction des modèles de trafic. Avec l'une ou l'autre approche, vous pouvez modifier la forme à tout moment après avoir créé l'équilibreur de charge.
Remarques
Lors du déploiement de cette architecture, tenez compte des options suivantes :
- Homologation avec les processeurs ARM
StackGres peut être exécuté avec ARM (Ampere A1 Compute).
- Options d'architecture
L'architecture de ce document est une suggestion et peut être modifiée en fonction des besoins du projet.
- Extensions Postgres
StackGres fournit plus de 130 extensions Postgres que vous pouvez utiliser.
- privilèges utilisateur
Utilisez les meilleures pratiques de sécurité du moindre privilège : limitez l'accès du compte aux privilèges root ou superutilisateur uniquement en cas de besoin réel.
- Surveillance
Outre les services OCI tels que les événements OCI, OCI Logging et OCI Monitoring, vous pouvez utiliser Prometheus ou Grafana pour la surveillance.
- Sauvegardes
StackGres inclut des sauvegardes continues basées sur une archive, ce qui permet une récupération sans perte de données.
Les sauvegardes sont toujours stockées sur le support le plus durable disponible aujourd'hui : OCI Object Storage.
Suivez les meilleures pratiques suivantes :
- Ne laissez pas votre base de données exposée à Internet.
- Si possible, séparez votre cluster d'applications du cluster utilisé par Stackgres.
- Si vous souhaitez créer votre application dans le même cluster, Oracle vous recommande vivement de créer un autre espace de noms pour l'application.
- Lorsque vous choisissez votre processeur Intel, AMD ou ARM, prenez en compte la taille de votre charge de travail afin de ne pas sous-dimensionner votre environnement Postgres.
A propos des produits et rôles requis
Cette solution requiert les produits et rôles suivants :
-
Oracle Cloud Infrastructure
-
Oracle Cloud Infrastructure Cloud Shell
-
PostgreSQL
-
Pilegres
Il s'agit des rôles nécessaires pour chaque service.
Nom de service : rôle | Requis pour... |
---|---|
OCI : Administrator |
Accès complet à des ressources telles que les services de calcul, de réseau, d'observabilité et de gestion, et OCI Cloud Shell. |
Oracle Cloud Infrastructure Cloud Shell Pour utiliser OCI Cloud Shell, vous devez disposer du type d'accès requis dans une stratégie écrite par un administrateur dans le compartiment racine de la location. |
Utilisez l'utilitaire de ligne de commande kubectl pour configurer votre cluster Kubernetes pour StackGres. |
Pour obtenir tout ce dont vous avez besoin, reportez-vous à Produits, solutions et services Oracle.